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.
Nội dung bài viết
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í.


