Ultralytics YOLO27:

Tổng quan về các dataset phân loại ảnh#

Cấu trúc dataset 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, tập dữ liệu phải được tổ chức theo cấu trúc thư mục phân tách cụ thể nằm dưới thư mục root. Cấu trúc này bao gồm thư mục train và thư mục val (thư mục validvalidation cũng được chấp nhận), kèm theo thư mục test tùy chọn. Nếu không có thư mục kiểm định nào tồn tại, thư mục test sẽ được sử dụng thay thế cho việc kiểm định.

Mỗi thư mục này nên chứa một thư mục con cho từng class trong dataset. Các thư mục con được đặt tên theo class tương ứng và chứa toàn bộ ảnh của class đó. Đảm bảo mỗi file ảnh có tên duy nhấ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 dataset CIFAR-10 làm ví dụ. Cấu trúc thư mục sẽ như sau:

cifar-10-/
|
|-- 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 train và đánh giá chính xác hiệu năng trong các giai đoạn kiểm thử và validation.

Cách sử dụng#

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-cls.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="path/to/dataset", epochs=100, imgsz=640)
Mẹo

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

Các dataset được hỗ trợ#

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

  • Caltech 101: Dataset chứa ảnh của 101 nhóm đối tượ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 đối tượng và hình ảnh thách thức hơn.
  • CIFAR-10: Dataset gồm 60K ảnh màu kích thước 32x32 thuộc 10 lớp, với 6K ảnh cho mỗi lớp.
  • CIFAR-100: Phiên bản mở rộng của CIFAR-10 với 100 danh mục đối tượng và 600 ảnh cho mỗi lớp.
  • Fashion-MNIST: Dataset gồm 70.000 ảnh grayscale thuộc 10 danh mục thời trang cho các tác vụ image classification.
  • ImageNet: Dataset quy mô lớn cho phát hiện đối tượng và phân loại ảnh, với hơn 14 triệu ảnh và 20.000 nhóm.
  • ImageNet-10: Tập con nhỏ hơn của ImageNet với 10 danh mục, phục vụ thử nghiệm và kiểm thử nhanh hơn.
  • Imagenette: Tập con nhỏ hơn của ImageNet, chứa 10 lớp dễ phân biệt để training và kiểm thử nhanh hơn.
  • Imagewoof: Tập con thách thức hơn của ImageNet, chứa 10 danh mục giống chó cho các tác vụ image classification.
  • MNIST: Dataset gồm 70.000 ảnh grayscale chữ số viết tay cho các tác vụ image classification.
  • MNIST160: 8 ảnh đầu tiên của mỗi chữ số (0-9) từ cả hai phần train và test của MNIST. Dataset có tổng cộng 160 ảnh.

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

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

FAQ#

  • Để cấu trúc tập dữ liệu cho các tác vụ phân loại YOLO của Ultralytics, bạn nên tuân theo định dạng thư mục phân tách cụ thể. Hãy tổ chức tập dữ liệu thành các thư mục riêng biệt cho trainval, cùng với test tùy chọn. Mỗi thư mục này phải chứa các thư mục con được đặt tên theo từng lớp, với các hình ảnh tương ứng bên trong. Điều này tạo điều kiện thuận lợi cho các quá trình huấn luyện và đánh giá mượt mà. Để có ví dụ, hãy xem xét định dạng tập dữ liệu CIFAR-10:

    cifar-10-/
    |-- 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 dataset cho các tác vụ phân loại YOLO.

  • Ultralytics YOLO hỗ trợ tự động tải xuống một số dataset cho phân loại ảnh, bao gồm Caltech 101, Caltech 256, CIFAR-10, CIFAR-100, Fashion-MNIST, ImageNet, ImageNet-10, Imagenette, ImagewoofMNIST. Các dataset này được cấu trúc theo cách giúp dễ dàng sử dụng với YOLO. Trang của mỗi dataset cung cấp thêm thông tin chi tiết về cấu trúc và ứng dụng của dataset đó.

  • Để sử dụng tập dữ liệu của riêng bạn với Ultralytics YOLO, hãy đảm bảo tập dữ liệu tuân theo định dạng thư mục được chỉ định cần thiết cho tác vụ phân loại, với các thư mục trainval riêng biệt (và test tùy chọn), cùng các thư mục con cho mỗi lớp chứa các hình ảnh tương ứng. Khi tập dữ liệu của bạn đã được cấu trúc chính xác, hãy trỏ đối số data tới thư mục gốc của tập dữ liệu khi khởi tạo tập lệnh huấn luyện. Dưới đây là một ví dụ bằng Python:

    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n-cls.pt")  # load a pretrained model (recommended for training)
    
    # Train the model
    results = model.train(data="path/to/your/dataset", epochs=100, imgsz=640)

    Bạn có thể tìm thêm chi tiết trong mục Thêm dataset riêng.

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

    • Model được train trước: Tải các model được train trước như yolo26n-cls.pt để nhanh chóng bắt đầu quy trình train.
    • Dễ sử dụng: Các lệnh API và CLI đơn giản cho việc train và đánh giá.
    • Hiệu năng cao: Độ chính xác và tốc độ hiện đại, lý tưởng cho các ứng dụng thời gian thực.
    • Hỗ trợ nhiều dataset: Tích hợp liền mạch với nhiều dataset phổ biến như CIFAR-10, ImageNet và nhiều dataset khác.
    • Cộng đồng và hỗ trợ: Tiếp cận tài liệu phong phú và cộng đồng tích cực để khắc phục sự cố cũng như cải thiện sản phẩm.

    Để có thêm thông tin chuyên sâu và các ứng dụng thực tế, bạn có thể khám phá Ultralytics YOLO.

  • Bạn có thể dễ dàng train model bằng Ultralytics YOLO trong cả Python và CLI. Sau đây là một ví dụ:

    Ví dụ
    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n-cls.pt")  # load a pretrained model
    
    # Train the 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 để train model YOLO bằng một trong hai phương pháp. Để biết thêm thông tin, hãy truy cập mục Cách sử dụng và trang Train dành cho các tác vụ phân loại.

Bình luận