Ultralytics YOLO27:
Get Started

Tổng quan về bộ dữ liệu phân loại ảnh#

Cấu trúc bộ dữ liệu cho các tác vụ phân loại YOLO#

Đối với các tác vụ phân loại YOLO của Ultralytics, bộ dữ liệu phải được sắp xếp theo cấu trúc thư mục phân tách cụ thể bên trong thư mục root. Cấu trúc này bao gồm thư mục train và thư mục val (cũng chấp nhận valid và validation), cùng với thư mục test tùy chọn. Nếu không có thư mục xác thực, thư mục test sẽ được dùng thay thế. Nếu thư mục gốc hoàn toàn không có thư mục train nhưng chứa một thư mục cho mỗi class, Ultralytics sẽ tự động chia hình ảnh theo tỷ lệ 80/20 vào thư mục <root>_split mới, gồm các thư mục con train và val.

Mỗi thư mục này cần chứa một thư mục con cho từng class trong bộ dữ liệu. Các thư mục con được đặt tên theo class tương ứng và chứa toàn bộ hình ảnh của class đó. Đảm bảo mỗi file ảnh có tên riêng biệt và được lưu ở định dạng phổ biến như JPEG hoặc PNG.

Ví dụ về cấu trúc thư mục#

Lấy bộ dữ liệu CIFAR-10 làm ví dụ. Cấu trúc thư mục sẽ như sau:

cifar10/
|
|-- train/
|   |-- airplane/
|   |   |-- 10008_airplane.png
|   |   |-- 10009_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 1000_automobile.png
|   |   |-- 1001_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 10014_bird.png
|   |   |-- 10015_bird.png
|   |   |-- ...
|   |
|   |-- ...
|
|-- test/ (optional)
|   |-- airplane/
|   |   |-- 10_airplane.png
|   |   |-- 11_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 100_automobile.png
|   |   |-- 101_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 1000_bird.png
|   |   |-- 1001_bird.png
|   |   |-- ...
|   |
|   |-- ...
|
|-- val/
|   |-- airplane/
|   |   |-- 105_airplane.png
|   |   |-- 106_airplane.png
|   |   |-- ...
|   |
|   |-- automobile/
|   |   |-- 102_automobile.png
|   |   |-- 103_automobile.png
|   |   |-- ...
|   |
|   |-- bird/
|   |   |-- 1045_bird.png
|   |   |-- 1046_bird.png
|   |   |-- ...
|   |
|   |-- ...

Cách tổ chức này đảm bảo model có thể học hiệu quả từ các class được sắp xếp hợp lý trong giai đoạn huấn luyện và đánh giá chính xác hiệu năng trong các giai đoạn kiểm thử và xác thực.

Cách sử dụng#

Ví dụ
from ultralytics import YOLO

# Tải model
model = YOLO("yolo26n-cls.pt")  # tải model đã huấn luyện trước (được khuyến nghị khi huấn luyện)

# Huấn luyện model
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)
Mẹo

Hầu hết tên bộ dữ liệu tích hợp sẵn (ví dụ cifar10, imagenette hoặc mnist160) sẽ tự động tải xuống và lưu vào cache dữ liệu khi được tham chiếu lần đầu. Chỉ trỏ data đến đường dẫn thư mục khi bạn đã tuyển chọn một bộ dữ liệu tùy chỉnh.

Dataset được hỗ trợ#

Ultralytics hỗ trợ tự động tải xuống các bộ dữ liệu sau. Phần lớn các bộ dữ liệu này cũng được lưu trữ trên Ultralytics Platform, nơi bạn có thể duyệt hình ảnh và chú thích, xem thống kê bộ dữ liệu và sao chép bộ dữ liệu để huấn luyện trên cloud.

  • Caltech 101: Bộ dữ liệu gồm hình ảnh thuộc 101 danh mục đối tượng, dùng cho các tác vụ phân loại ảnh.
  • Caltech 256: Phiên bản mở rộng của Caltech 101 với 256 danh mục vật thể và hình ảnh thách thức hơn.
  • CIFAR-10: Dataset gồm 60 nghìn ảnh màu kích thước 32x32 thuộc 10 lớp, mỗi lớp có 6 nghìn ảnh.
  • CIFAR-100: Phiên bản mở rộng của CIFAR-10 với 100 danh mục vật thể và 600 ảnh mỗi lớp.
  • Fashion-MNIST: Dataset gồm 70.000 ảnh thang độ xám thuộc 10 danh mục thời trang, phục vụ các tác vụ phân loại ảnh.
  • ImageNet: Bộ benchmark phân loại ảnh ImageNet-1k (ILSVRC-2012) gồm 1.000 class, 1,28 triệu hình ảnh huấn luyện và 50.000 hình ảnh xác thực.
  • ImageNet-10: Tập con nhỏ của ImageNet gồm 10 danh mục, giúp thử nghiệm và kiểm thử nhanh hơn.
  • Imagenette: Tập con nhỏ của ImageNet gồm 10 lớp dễ phân biệt, giúp huấn luyện và kiểm thử nhanh hơn.
  • Imagewoof: Tập con ImageNet khó hơn, gồm 10 danh mục giống chó, phục vụ các tác vụ phân loại ảnh.
  • MNIST: Dataset gồm 70.000 ảnh thang độ xám về chữ số viết tay, phục vụ các tác vụ phân loại ảnh.
  • MNIST160: 8 ảnh đầu tiên của mỗi chữ số (0-9) từ cả tập huấn luyện và tập kiểm thử MNIST. Dataset có tổng cộng 160 ảnh.

Thêm dataset của riêng bạn#

Nếu bạn có bộ dữ liệu riêng và muốn dùng bộ dữ liệu đó để huấn luyện model phân loại bằng Ultralytics YOLO, hãy đảm bảo bộ dữ liệu tuân theo định dạng được nêu ở trên trong mục "Cấu trúc bộ dữ liệu", sau đó trỏ tham số data đến thư mục bộ dữ liệu khi khởi tạo script huấn luyện.

Câu hỏi thường gặp#

  • Để cấu trúc bộ dữ liệu cho các tác vụ phân loại Ultralytics YOLO, bạn cần tuân theo định dạng thư mục phân tách cụ thể. Sắp xếp bộ dữ liệu thành các thư mục riêng cho train và val, cùng với test tùy chọn. Mỗi thư mục này cần chứa các thư mục con được đặt tên theo từng class và hình ảnh tương ứng bên trong. Cách tổ chức này giúp quá trình huấn luyện và đánh giá diễn ra thuận lợi. Ví dụ, hãy tham khảo định dạng bộ dữ liệu CIFAR-10:

    cifar10/
    |-- train/
    |   |-- airplane/
    |   |-- automobile/
    |   |-- bird/
    |   ...
    |-- val/
    |   |-- airplane/
    |   |-- automobile/
    |   |-- bird/
    |   ...
    |-- test/ (optional)
    |   |-- airplane/
    |   |-- automobile/
    |   |-- bird/
    |   ...

    Để biết thêm chi tiết, hãy truy cập mục Cấu trúc bộ dữ liệu cho các tác vụ phân loại YOLO.

  • Ultralytics YOLO hỗ trợ tự động tải xuống một số bộ dữ liệu phân loại ảnh, bao gồm Caltech 101, Caltech 256, CIFAR-10, CIFAR-100, Fashion-MNIST, ImageNet, ImageNet-10, Imagenette, Imagewoof và MNIST. Các bộ dữ liệu này được cấu trúc để dễ dàng sử dụng với YOLO. Trang của từng bộ dữ liệu cung cấp thêm thông tin về cấu trúc và ứng dụng.

  • Để sử dụng bộ dữ liệu riêng với Ultralytics YOLO, hãy đảm bảo bộ dữ liệu tuân theo định dạng thư mục quy định cho tác vụ phân loại, gồm các thư mục riêng train và val (cùng với test tùy chọn), và các thư mục con cho từng class chứa hình ảnh tương ứng. Sau khi cấu trúc bộ dữ liệu đúng cách, hãy trỏ tham số data đến thư mục gốc của bộ dữ liệu khi khởi tạo script huấn luyện. Sau đây là ví dụ bằng Python:

    from ultralytics import YOLO
    
    # Tải model
    model = YOLO("yolo26n-cls.pt")  # tải model đã huấn luyện trước (được khuyến nghị khi huấn luyện)
    
    # Huấn luyện model
    results = model.train(data="path/to/your/dataset", epochs=100, imgsz=640)

    Có thể tìm thêm chi tiết trong mục Thêm bộ dữ liệu riêng.

  • Ultralytics YOLO mang lại một số lợi ích cho tác vụ phân loại ảnh, bao gồm:

    • Model pretrained: Tải các model pretrained như yolo26n-cls.pt để bắt đầu quá trình huấn luyện nhanh hơn.
    • Dễ sử dụng: API và lệnh CLI đơn giản cho việc huấn luyện và đánh giá.
    • Hiệu năng cao: Độ chính xác và tốc độ tiên tiến hàng đầu, lý tưởng cho các ứng dụng thời gian thực.
    • Hỗ trợ nhiều bộ dữ liệu: Tích hợp liền mạch với nhiều bộ dữ liệu phổ biến như CIFAR-10, ImageNet và nhiều bộ dữ liệu khác.
    • Cộng đồng và hỗ trợ: Truy cập tài liệu toàn diện và cộng đồng năng động để khắc phục sự cố, cải tiến.

    Để tìm hiểu thêm và khám phá các ứng dụng thực tế, bạn có thể xem Ultralytics YOLO.

  • Bạn có thể dễ dàng huấn luyện model bằng Ultralytics YOLO với cả Python và CLI. Sau đây là ví dụ:

    Ví dụ
    from ultralytics import YOLO
    
    # Tải model
    model = YOLO("yolo26n-cls.pt")  # tải model pretrained
    
    # Huấn luyện model
    results = model.train(data="path/to/dataset", epochs=100, imgsz=640)

    Các ví dụ này minh họa quy trình đơn giản để huấn luyện model YOLO bằng một trong hai phương thức. Để biết thêm thông tin, hãy truy cập mục Cách sử dụng và trang Huấn luyện cho các tác vụ phân loại.

Bình luận