Tài nguyên

Tìm và tải dataset ảnh trên Hugging Face Hub

Đọc dataset card, tải bằng thư viện datasets, chế độ streaming, chuyển sang PyTorch và đưa dataset riêng tư lên Hub.

Tìm và tải dataset ảnh trên Hugging Face Hub
Nội dung bài viết
  1. Tìm dataset
  2. Cài đặt và tải
  3. Dataset lớn: tải dạng luồng
  4. Chuyển sang PyTorch
  5. Đưa dataset của bạn lên Hub (riêng tư)
  6. Lưu ý giấy phép

Hugging Face Hub là kho chứa hàng trăm nghìn dataset và mô hình mã nguồn mở, trong đó có rất nhiều bộ dữ liệu ảnh cho phân loại, phát hiện, phân đoạn. Thư viện datasets cho phép tìm, tải và xử lý chúng chỉ với vài dòng Python.

Tìm dataset

  • Trên trang huggingface.co, mục Datasets, lọc theo tác vụ (Image Classification, Object Detection, Image Segmentation...), ngôn ngữ, giấy phép, kích thước.
  • Đọc kỹ dataset card: nguồn gốc dữ liệu, cách gán nhãn, giấy phép, hạn chế đã biết.
  • Xem trước dữ liệu ngay trên trình duyệt bằng Dataset Viewer.

Cài đặt và tải

pip install datasets
from datasets import load_dataset

ds = load_dataset("cifar10")                 # tải về bộ nhớ đệm cục bộ
print(ds)                                    # các tập train/test và số mẫu
sample = ds["train"][0]
print(sample.keys())                         # tên các trường, ví dụ 'img', 'label'
sample["img"].save("mau.png")                # ảnh là đối tượng PIL
print(ds["train"].features["label"].names)   # tên các lớp

Tên trường khác nhau giữa các dataset; luôn in ra features để biết cấu trúc trước khi viết code xử lý.

Dataset lớn: tải dạng luồng

ds = load_dataset("ten-to-chuc/ten-dataset", split="train", streaming=True)
for i, item in enumerate(ds):
    if i == 5:
        break
    print(item.keys())

Chế độ streaming đọc dần từng mẫu mà không cần tải toàn bộ dataset hàng trăm GB về máy.

Chuyển sang PyTorch

import torch
from torchvision import transforms

tf = transforms.Compose([transforms.Resize((224, 224)), transforms.ToTensor()])

def apply(batch):
    batch["pixel_values"] = [tf(img.convert("RGB")) for img in batch["img"]]
    return batch

train = load_dataset("cifar10", split="train").with_transform(apply)
loader = torch.utils.data.DataLoader(train, batch_size=32, shuffle=True,
                                     collate_fn=lambda b: (torch.stack([x["pixel_values"] for x in b]),
                                                           torch.tensor([x["label"] for x in b])))

Đưa dataset của bạn lên Hub (riêng tư)

from datasets import load_dataset
ds = load_dataset("imagefolder", data_dir="data/nap-chai")   # thư mục con = tên lớp
ds.push_to_hub("ten-cua-ban/nap-chai-v1", private=True)     # cần đăng nhập: huggingface-cli login

Chế độ riêng tư phù hợp để chia sẻ trong nhóm. Với dữ liệu mật của khách hàng, cân nhắc kỹ chính sách công ty trước khi đưa lên bất kỳ dịch vụ đám mây nào.

Lưu ý giấy phép

Mỗi dataset có giấy phép riêng; nhiều bộ chỉ cho phép nghiên cứu phi thương mại. Kiểm tra trường "License" trong dataset card trước khi dùng cho dự án thương mại. Xem thêm danh sách dataset Computer Vision miễn phí.

Ban biên tập HọcFree

Chúng tôi viết những bài hướng dẫn dễ hiểu, thực tế để ai cũng có thể tự học lập trình và ngoại ngữ, hoàn toàn miễn phí.