Bỏ để qua phần 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 với YOLOv5 🚀.

Trước khi bắt đầu

Sao chép repo và cài đặt requirements.txt trong một PythonMôi trường >=3.8.0 , bao gồm PyTorch>=1,8. Mô hìnhbộ dữ liệu tải xuống tự động từ phiên bản mới nhất YOLOv5 phát hành.

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

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

Ultralytics Học tập tích cự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 để thu thập và tổ chức hình ảnh, gắn nhãn các đối tượng quan tâm của bạn, đào tạo mô hình, triển khai nó vào tự nhiên để đưa ra dự đoán và sau đó sử dụng mô hình được triển khai đó để thu thập các ví dụ về các trường hợp cạnh để lặp lại và cải thiện.

Giấy 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 Ultralytics Cấp phép.

YOLOv5 Các mô hình phải được đào tạo về dữ liệu được gắn nhãn để tìm hiểu 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 một Roboflow Tập dữ liệu

1.1 Thu thập hình ảnh

Mô hình của bạn sẽ học bằng ví dụ. Đào tạo về 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 loại hình ảnh từ cùng một cấu hình (máy ảnh, góc, ánh sáng, v.v.) vì cuối cùng bạn sẽ triển khai dự án của mình.

Nếu điều này là không thể, 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 của bạn và sau đó lấy mẫu hình ảnh từ tự nhiên trong quá trình suy luận để cải thiện tập dữ liệu và mô hình của bạn lặp đi lặp lại.

1.2 Tạo nhãn

Khi bạn đã 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 một sự thật cơ bản cho mô hình của bạn để học hỏi.

YOLOv5 Độ chính xác

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

1.3 Chuẩn bị tập dữ liệu cho YOLOv5

Cho dù bạn Gắn nhãn hình ảnh của bạn với Roboflow Hoặc không, bạ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 một YOLOv5 Tệp cấu hình YAML và lưu trữ nó để 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, gắn nhãn mọi hình ảnh không được 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: YOLOv5 có 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 bạn nên á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 tiền xử lý sau:

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

  • Auto-Orient - để loại bỏ hướng EXIF khỏi hình ảnh của bạn.
  • Thay đổi kích thước (Stretch) - thành 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).

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

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

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

Roboflow Đoạn mã tải xuống tập dữ liệu

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

2.1 Tạo dataset.yaml

COCO128 là một ví dụ tập dữ liệu hướng dẫn nhỏ bao gồm 128 hình ảnh đầu tiên trong COCO Tàu hỏa2017. 128 hình ảnh tương tự này được sử dụng cho cả đào tạo và xác nhận để xác minh quy trình đào tạo của chúng tôi có khả năng quá tải. 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 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 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 để gắn nhãn hình ảnh, hãy xuất nhãn sang YOLO định dạng, với một *.txt tệp trên 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). Các *.txt Thông số kỹ thuật của tệp là:

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

Roboflow Chú thích

Tệp nhãn tương ứng với hình trên chứa 2 người (lớp 0) và 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 xe lửa và val của bạn theo ví dụ dưới đây. YOLOv5 Thừa nhận /coco128 nằm bên trong một /datasets thư mục Cạnh Các /yolov5 thư mục. YOLOv5 Định vị nhãn tự động cho từng 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/. Chẳng hạn:

../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 (được khuyến nghị) hoặc đượ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ừ Đặt YOLOv5 phát hành.

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 độ đào tạo (yêu cầu tài nguyên RAM / đĩa đáng kể).

Mẹo

💡 Luôn đào tạo từ tập dữ liệu cục bộ. Các ổ đĩa được gắn hoặc mạng như Google Drive sẽ rất chậm.

Tất cả kết quả đào tạo được lưu vào runs/train/ với các thư mục chạy tăng dần, 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ổ ghi chép 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 các chỉ số mô hình trong 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, đồng thời trực quan hóa các dự đoán mô hình của bạn với Comet Bảng điều khiển tùy chỉnh! Comet Đảm bảo bạn không bao giờ mất dấu công việc của mình và giúp bạn dễ dàng chia sẻ kết quả và cộng tác giữa các nhóm thuộc 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 xem Comet Hướng dẫn. Nếu bạn muốn tìm hiểu thêm về Comet, đi đến của chúng tôi tư liệu. Bắt đầu bằng cách dùng thử Comet Máy tính xách tay Colab: Mở trong Colab

YOLO UI

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 từ xa các lần chạy đào tạo. Để bậ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 mong đợi tuyệt vời từ trình quản lý thử nghiệm: cập nhật trực tiếp, tải lên mô hình, so sánh thử nghiệm, v.v. nhưng ClearML Cũng theo dõi các thay đổi không cam kết và các gói đã cài đặt chẳng hạn. Nhờ đó ClearML Nhiệm vụ (đó là những gì chúng ta gọi là 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 phụ, 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 Đại lý (công nhân).

Bạn có thể sử dụng ClearML Dữ liệu để lập phiên bản tập dữ liệu của bạn và sau đó chuyển nó đến 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 gặp thêm rắc rối. Khám phá ClearML Hướng dẫn để biết chi tiết!

ClearML Giao diện người dùng quản lý thử nghiệm

Ghi nhật ký địa phương

Kết quả đào tạo được tự động ghi lại với TensorboardCSV logger để 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 dưới dạng runs/train/exp2, runs/train/exp3v.v.

Thư mục này chứa thống kê tàu và val, 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 thu hồi chính xác (PR) và ma trận nhầm lẫn.

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

Tệp kết quả results.csv được cập nhật sau mỗi kỷ nguyên, và sau đó được vẽ như results.png (bên dưới) sau khi đà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'

results.png

Các bước tiếp theo

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 Python Suy luận về hình ảnh và video mới
  • Xác thực độ chính xác trên phân tách tàu, val và thử nghiệm
  • Xuất sangTensorFlow, Keras, ONNX, TFlite, TF.Js CoreML và TensorRT Định dạng
  • Phát triển các 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 trong thế giới thực 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 một loạt các môi trường sẵn sàng sử dụng, mỗi môi trường được cài đặt sẵn các phụ thuộc thiết yếu như CUDA, CUDNN,PythonPyTorch, để khởi động các dự án của bạn.

Tình trạng dự án

YOLOv5 CI

Huy hiệu này cho biết rằng tất cả YOLOv5 Các bài kiểm tra Tích hợp liên tục (CI) GitHub Actions đã vượt qua thành công. Các bài kiểm tra CI này kiểm tra nghiêm ngặt chức năng và hiệu suất của YOLOv5 trên các khía cạnh chính khác nhau: đào tạo, xác nhận, suy luận, xuất khẩuđiểm chuẩ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 thử nghiệm được tiến hành 24 giờ một lần và theo mỗi cam kết mới.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (14), Burhan-Q (1)

Ý kiến