Bỏ qua nội dung

Đào tạo dữ liệu tùy chỉnh

📚 Hướng dẫn này giải thích cách đào tạo tập dữ liệu tùy chỉnh của riêng bạn bằng YOLOv5 🚀.

Trước khi bạn bắt đầu

Sao chép kho lưu trữ và cài đặt requirements.txt trong môi trường Python >=3.8.0 , bao gồm PyTorch >=1.8 . Các mô hìnhtập dữ liệu tự động tải xuống từ phiên bản mới nhất YOLOv5 giải phóng .

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

Đào tạo trên dữ liệu tùy chỉnh

Ultralytics học tập tích cực

Việc tạo một mô hình tùy chỉnh để phát hiện các đối tượng của bạn là một quá trình lặp đi lặp lại của việc thu thập và sắp xếp hình ảnh, dán nhãn cho các đối tượng bạn quan tâm, đào tạo mô hình, triển khai mô hình đó vào thực tế để đưa ra dự đoán, sau đó sử dụng mô hình đã triển khai đó để thu thập các ví dụ về các trường hợp ngoại lệ để lặp lại và cải thiện.

Cấp phép

Ultralytics cung cấp hai tùy chọn cấp phép:

Để biết thêm chi tiết, hãy xem Cấp phép Ultralytics .

YOLOv5 Các mô hình phải được đào tạo trên dữ liệu được gắn nhãn để học các lớp đối tượng trong dữ liệu đó. Có hai tùy chọn để tạo tập dữ liệu của bạn trước khi bạn bắt đầu đào tạo:

Tùy chọn 1: Tạo Bộ dữ liệu Roboflow

1.1 Thu thập hình ảnh

Mô hình của bạn sẽ học bằng ví dụ. Việc đào tạo trên các hình ảnh tương tự như những hình ảnh mà nó sẽ thấy trong tự nhiên là vô cùng quan trọng. Lý tưởng nhất là bạn sẽ thu thập nhiều hình ảnh khác nhau từ cùng một cấu hình (máy ảnh, góc, ánh sáng, v.v.) khi bạn cuối cùng triển khai dự án của mình.

Nếu không thể thực hiện được điều này, bạn có thể bắt đầu từ một tập dữ liệu công khai để đào tạo mô hình ban đầu, sau đó lấy mẫu hình ảnh từ thực tế trong quá trình suy luận để cải thiện tập dữ liệu và mô hình theo từng bước.

1.2 Tạo nhãn

Sau khi thu thập hình ảnh, bạn sẽ cần chú thích các đối tượng quan tâm để tạo ra dữ liệu thực tế để mô hình của bạn học hỏi.

YOLOv5 độ chính xác

Roboflow Annotate là một công cụ đơn giản trên web để quản lý và dán nhãn hình ảnh với nhóm của bạn và xuất chúng theo định dạng chú thích của YOLOv5 .

1.3 Chuẩn bị bộ dữ liệu cho YOLOv5

Cho dù bạn có gắn nhãn hình ảnh của mình bằng Roboflow hay không, bạn vẫn có thể sử dụng nó để chuyển đổi tập dữ liệu của mình thành YOLO định dạng, tạo ra một YOLOv5 Tệp cấu hình YAML và lưu trữ để nhập vào tập lệnh đào tạo của bạn.

Tạo miễn phí Roboflow tài khoản và tải tập dữ liệu của bạn lên Public không gian làm việc, dán nhãn bất kỳ hình ảnh nào chưa chú thích, sau đó tạo và xuất phiên bản tập dữ liệu của bạn trong YOLOv5 Pytorch định dạng.

Ghi chú: YOLOv5 thực hiện tăng cường trực tuyến trong quá trình đào tạo, vì vậy chúng tôi không khuyến nghị áp dụng bất kỳ bước tăng cường nào trong Roboflow để đào tạo với YOLOv5 . Nhưng chúng tôi khuyên bạn nên áp dụng các bước xử lý trước sau đây:

Các bước tiền xử lý được đề xuất

  • Tự động định hướng - để xóa hướng EXIF khỏi hình ảnh của bạn.
  • Thay đổi kích thước (Kéo dài) - theo kích thước đầu vào hình vuông của mô hình của bạn (640x640 là YOLOv5 mặc định).

Việc tạo phiên bản sẽ cung cấp cho bạn ảnh chụp nhanh về tập dữ liệu của mình, nhờ đó bạn luôn có thể quay lại và so sánh các lần chạy mô hình trong tương lai với tập dữ liệu đó, ngay cả khi bạn thêm nhiều hình ảnh hơn hoặc thay đổi cấu hình sau này.

Xuất khẩu trong YOLOv5 Định dạng

Xuất khẩu trong YOLOv5 Pytorch định dạng, sau đó sao chép đoạn mã vào tập lệnh đào tạo hoặc sổ ghi chép của bạn để tải xuống tập dữ liệu của bạn.

Roboflow đoạn trích tải xuống tập dữ liệu

Tùy chọn 2: Tạo một Bộ dữ liệu thủ công

2.1 Tạo dataset.yaml

COCO128 là một ví dụ về tập dữ liệu hướng dẫn nhỏ bao gồm 128 hình ảnh đầu tiên trong COCO train2017. 128 hình ảnh này được sử dụng cho cả mục đích đào tạo và xác thực để xác minh đường ống đào tạo của chúng tôi có khả năng quá phù hợp. dữ liệu/coco128.yaml, được hiển thị bên dưới, là tệp cấu hình tập dữ liệu xác định 1) thư mục gốc của tập dữ liệu path và đường dẫn tương đối đến train / val / test thư mục hình ảnh (hoặc *.txt các tập tin có đường dẫn hình ảnh) và 2) một lớp names từ điển:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)

# Classes (80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ...
    77: teddy bear
    78: hair drier
    79: toothbrush

2.2 Tạo nhãn

Sau khi sử dụng công cụ chú thích để dán nhãn cho hình ảnh của bạn, hãy xuất nhãn của bạn sang YOLO định dạng, với một *.txt tập tin cho mỗi hình ảnh (nếu không có đối tượng trong hình ảnh, không *.txt tập tin là bắt buộc). *.txt thông số kỹ thuật của tập tin là:

  • Một hàng cho mỗi đối tượng
  • Mỗi hàng là class x_center y_center width height định dạng.
  • Tọa độ hộp phải ở trong xywh được chuẩn hóa định dạng (từ 0 đến 1). Nếu hộp của bạn tính bằng pixel, hãy chia x_centerwidth theo chiều rộng hình ảnh và y_centerheight theo chiều cao của hình ảnh.
  • Số lớp được đánh số từ 0 (bắt đầu từ 0).

Roboflow chú thích

Tệp nhãn tương ứng với hình ảnh trên chứa 2 người (lớp 0) và một chiếc cà vạt (lớp 27):

Roboflow tiền xử lý tập dữ liệu

2.3 Tổ chức các thư mục

Sắp xếp hình ảnh và nhãn tàu hỏa và val của bạn theo ví dụ bên dưới. YOLOv5 giả định /coco128 là bên trong một /datasets thư mục ở cạnh cái /yolov5 thư mục. YOLOv5 tự động định vị nhãn cho mỗi hình ảnh bằng cách thay thế trường hợp cuối cùng của /images/ trong mỗi đường dẫn hình ảnh với /labels/. Ví dụ:

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 cấu trúc tập dữ liệu

3. Chọn một mô hình

Chọn một mô hình được đào tạo trước để bắt đầu đào tạo. Ở đây chúng tôi chọn YOLOv5s , mô hình nhỏ thứ hai và nhanh nhất hiện có. Xem bảng README của chúng tôi để so sánh đầy đủ tất cả các mô hình.

YOLOv5 mô hình

4. Tàu hỏa

Đào tạo mô hình YOLOv5s trên COCO128 bằng cách chỉ định tập dữ liệu, kích thước lô, kích thước hình ảnh và được đào tạo trước --weights yolov5s.pt (khuyến nghị), hoặc khởi tạo ngẫu nhiên --weights '' --cfg yolov5s.yaml (không khuyến khích). Trọng lượng được đào tạo trước được tự động tải xuống từ mới nhất YOLOv5 giải phóng.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

Mẹo

💡 Thêm --cache ram hoặc --cache disk để tăng tốc quá trình đào tạo (yêu cầu tài nguyên RAM/đĩa đáng kể).

Mẹo

💡 Luôn đào tạo từ một tập dữ liệu cục bộ. Ổ đĩa gắn kết hoặc mạng như Google Lái xe sẽ rất chậm.

Tất cả kết quả đào tạo được lưu vào runs/train/ với việc tăng dần các thư mục chạy, tức là runs/train/exp2, runs/train/exp3 v.v. Để biết thêm chi tiết, hãy xem phần Đào tạo trong sổ tay hướng dẫn của chúng tôi. Mở trong Colab Mở trong Kaggle

5. Hình dung

Comet Ghi nhật ký và trực quan hóa 🌟 MỚI

Comet hiện đã được tích hợp đầy đủ với YOLOv5 . Theo dõi và trực quan hóa số liệu mô hình theo thời gian thực, lưu siêu tham số, tập dữ liệu và điểm kiểm tra mô hình và trực quan hóa dự đoán mô hình của bạn bằng Comet Custom Panels ! Comet đảm bảo bạn không bao giờ mất dấu công việc và giúp bạn dễ dàng chia sẻ kết quả cũng như cộng tác giữa các nhóm ở mọi quy mô!

Bắt đầu thật dễ dàng:

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

Để tìm hiểu thêm về tất cả các hỗ trợ Comet các tính năng cho tích hợp này, hãy kiểm tra Comet Hướng dẫn. Nếu bạn muốn tìm hiểu thêm về Comet , hãy đến với chúng tôi tài liệu. Bắt đầu bằng cách thử Comet Sổ tay Colab: Mở trong Colab

YOLO GIAO DIỆN NGƯỜI DÙNG

ClearML Ghi nhật ký và Tự động hóa 🌟 MỚI

ClearML được tích hợp hoàn toàn vào YOLOv5 để theo dõi thử nghiệm của bạn, quản lý các phiên bản tập dữ liệu và thậm chí thực hiện các lần chạy đào tạo từ xa. Để kích hoạt ClearML :

  • pip install clearml
  • chạy clearml-init để kết nối với một ClearML máy chủ

Bạn sẽ nhận được tất cả các tính năng tuyệt vời mong đợi từ một trình quản lý thử nghiệm: cập nhật trực tiếp, tải mô hình lên, so sánh thử nghiệm, v.v. nhưng ClearML cũng theo dõi các thay đổi chưa cam kết và các gói đã cài đặt chẳng hạn. Cảm ơn vì điều đó ClearML Các tác vụ (mà chúng tôi gọi là các thí nghiệm) cũng có thể tái tạo trên các máy khác nhau! Chỉ với 1 dòng bổ sung, chúng tôi có thể lên lịch YOLOv5 nhiệm vụ đào tạo trên một hàng đợi được thực hiện bởi bất kỳ số lượng nào ClearML Người đại diện (người lao động).

Bạn có thể sử dụng ClearML Dữ liệu để phiên bản tập dữ liệu của bạn và sau đó chuyển nó cho YOLOv5 chỉ cần sử dụng ID duy nhất của nó. Điều này sẽ giúp bạn theo dõi dữ liệu của mình mà không cần thêm rắc rối. Khám phá Hướng dẫn ClearML để biết chi tiết!

ClearML Giao diện quản lý thí nghiệm

Ghi nhật ký cục bộ

Kết quả đào tạo được tự động ghi lại với Bảng TensorboardCSV người khai thác gỗ để runs/train, với một thư mục thử nghiệm mới được tạo cho mỗi khóa đào tạo mới như runs/train/exp2, runs/train/exp3, vân vân.

Thư mục này chứa các số liệu thống kê về đào tạo và đánh giá, khảm, nhãn, dự đoán và khảm tăng cường, cũng như các số liệu và biểu đồ bao gồm các đường cong độ chính xác - thu hồi (PR) và ma trận nhầm lẫn.

Kết quả ghi nhật ký cục bộ

Tập tin kết quả results.csv được cập nhật sau mỗi thời đại, và sau đó được vẽ như results.png (bên dưới) sau khi quá trình đào tạo hoàn tất. Bạn cũng có thể vẽ bất kỳ results.csv tập tin thủ công:

from utils.plots import plot_results

plot_results("path/to/results.csv")  # plot 'results.csv' as 'results.png'

kết quả.png

Các bước tiếp theo

Sau khi mô hình của bạn được đào tạo, bạn có thể sử dụng điểm kiểm tra tốt nhất của mình best.pt ĐẾN:

  • Chạy CLI hoặc suy luận Python trên hình ảnh và video mới
  • Xác thực độ chính xác trên các phân tách train, val và test
  • Xuất sang TensorFlow , Keras, ONNX , TFlite, TF .js, CoreML Và TensorRT định dạng
  • Phát triển siêu tham số để cải thiện hiệu suất
  • Cải thiện mô hình của bạn bằng cách lấy mẫu hình ảnh thực tế và thêm chúng vào tập dữ liệu của bạn

Môi trường được hỗ trợ

Ultralytics cung cấp nhiều môi trường sẵn sàng sử dụng, mỗi môi trường đều được cài đặt sẵn các thành phần phụ thuộc cần thiết như CUDA , CUDNN , PythonPyTorch để khởi động dự án của bạn.

Tình trạng dự án

YOLOv5 CI

Huy hiệu này cho biết tất cả các thử nghiệm Tích hợp liên tục (CI) YOLOv5 GitHub Actions đều vượt qua thành công. Các thử nghiệm CI này kiểm tra nghiêm ngặt chức năng và hiệu suất của YOLOv5 trên nhiều khía cạnh chính: đào tạo , xác thực , suy luận , xuấtchuẩn . Chúng đảm bảo hoạt động nhất quán và đáng tin cậy trên macOS, Windows và Ubuntu, với các bài kiểm tra được tiến hành sau mỗi 24 giờ và sau mỗi lần cam kết mới.

CÂU HỎI THƯỜNG GẶP

Tôi phải tập luyện như thế nào? YOLOv5 trên tập dữ liệu tùy chỉnh của tôi?

Đào tạo YOLOv5 trên một tập dữ liệu tùy chỉnh bao gồm một số bước:

  1. Chuẩn bị Bộ dữ liệu của bạn : Thu thập và dán nhãn hình ảnh. Sử dụng các công cụ như Roboflow để sắp xếp dữ liệu và xuất ở định dạng YOLOv5 .
  2. Thiết lập môi trường: Sao chép YOLOv5 kho lưu trữ và cài đặt các phụ thuộc:
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    
  3. Tạo cấu hình tập dữ liệu: Viết một dataset.yaml tệp xác định đường dẫn train/val và tên lớp.
  4. Đào tạo mô hình:
    python train.py --img 640 --epochs 3 --data dataset.yaml --weights yolov5s.pt
    

Tôi có thể sử dụng những công cụ nào để chú thích? YOLOv5 tập dữ liệu?

Bạn có thể sử dụng Roboflow Annotate , một công cụ trực quan dựa trên web để dán nhãn hình ảnh. Nó hỗ trợ cộng tác nhóm và xuất trong YOLOv5 định dạng. Sau khi thu thập hình ảnh, sử dụng Roboflow để tạo và quản lý chú thích hiệu quả. Các tùy chọn khác bao gồm các công cụ như LabelImg và CVAT cho chú thích cục bộ.

Tại sao tôi nên sử dụng Ultralytics HUB để đào tạo tôi YOLO mô hình?

Ultralytics HUB cung cấp một nền tảng toàn diện cho việc đào tạo, triển khai và quản lý YOLO mô hình mà không cần kỹ năng mã hóa mở rộng. Lợi ích của việc sử dụng Ultralytics HUB bao gồm:

  • Đào tạo mô hình dễ dàng : Đơn giản hóa quá trình đào tạo với các môi trường được cấu hình sẵn.
  • Quản lý dữ liệu : Quản lý tập dữ liệu và kiểm soát phiên bản dễ dàng.
  • Giám sát thời gian thực : Tích hợp các công cụ như Comet để theo dõi và trực quan hóa số liệu theo thời gian thực.
  • Hợp tác : Thích hợp cho các dự án nhóm với nguồn lực chung và quản lý dễ dàng.

Làm thế nào để tôi chuyển đổi dữ liệu chú thích của mình sang YOLOv5 định dạng?

Để chuyển đổi dữ liệu được chú thích thành YOLOv5 định dạng sử dụng Roboflow :

  1. Tải tập dữ liệu của bạn lên Roboflow không gian làm việc.
  2. Gắn nhãn cho hình ảnh nếu chưa có.
  3. Tạo và Xuất tập dữ liệu trong YOLOv5 Pytorch định dạng. Đảm bảo các bước xử lý trước như Tự động định hướng và Thay đổi kích thước (Kéo dài) theo kích thước đầu vào hình vuông (ví dụ: 640x640) được áp dụng.
  4. Tải xuống Bộ dữ liệu và tích hợp nó vào YOLOv5 kịch bản đào tạo.

Các tùy chọn cấp phép để sử dụng là gì? YOLOv5 trong các ứng dụng thương mại?

Ultralytics cung cấp hai tùy chọn cấp phép:

  • Giấy phép AGPL-3.0 : Giấy phép nguồn mở phù hợp cho mục đích sử dụng phi thương mại, lý tưởng cho sinh viên và những người đam mê.
  • Giấy phép doanh nghiệp : Dành riêng cho các doanh nghiệp muốn tích hợp YOLOv5 thành các sản phẩm và dịch vụ thương mại. Để biết thông tin chi tiết, hãy truy cập trang Cấp phép của chúng tôi.

Để biết thêm chi tiết, hãy tham khảo hướng dẫn của chúng tôi về Cấp phép Ultralytics .

📅 Được tạo ra cách đây 1 năm ✏️ Đã cập nhật cách đây 2 tháng

Bình luận