Bỏ để qua phần nội dung

Lời khuyên cho kết quả đào tạo tốt nhất

📚 Hướng dẫn này giải thích cách tạo ra mAP và kết quả đào tạo tốt nhất với YOLOv5 🚀.

Hầu hết thời gian có thể thu được kết quả tốt mà không có thay đổi đối với mô hình hoặc cài đặt đào tạo, miễn là tập dữ liệu của bạn đủ lớn và được dán nhãn tốt. Nếu lúc đầu bạn không nhận được kết quả tốt, có những bước bạn có thể thực hiện để cải thiện, nhưng chúng tôi luôn khuyên người dùng trước tiên nên đào tạo với tất cả các cài đặt mặc định trước khi xem xét bất kỳ thay đổi nào. Điều này giúp thiết lập đường cơ sở hiệu suất và phát hiện các khu vực để cải thiện.

Nếu bạn có thắc mắc về kết quả đào tạo của mình Chúng tôi khuyên bạn nên cung cấp lượng thông tin tối đa có thể nếu bạn mong đợi một phản hồi hữu ích, bao gồm các biểu đồ kết quả (tổn thất tàu, tổn thất val, P, R, mAP), đường cong PR, ma trận nhầm lẫn, khảm đào tạo, kết quả kiểm tra và hình ảnh thống kê tập dữ liệu như labels.png. Tất cả những điều này đều nằm trong project/name thư mục, điển hình yolov5/runs/train/exp.

Chúng tôi đã tổng hợp một hướng dẫn đầy đủ cho những người dùng muốn có được kết quả tốt nhất trên YOLOv5 đào tạo dưới đây.

Tập dữ liệu

  • Hình ảnh mỗi lớp. ≥ Khuyến nghị 1500 hình ảnh mỗi lớp
  • Phiên bản trên mỗi lớp. ≥ khuyến nghị 10000 phiên bản (đối tượng được gắn nhãn) cho mỗi lớp
  • Hình ảnh đa dạng. Phải đại diện cho môi trường triển khai. Đối với các trường hợp sử dụng trong thế giới thực, chúng tôi đề xuất hình ảnh từ các thời điểm khác nhau trong ngày, các mùa khác nhau, thời tiết khác nhau, ánh sáng khác nhau, góc độ khác nhau, các nguồn khác nhau (được thu thập trực tuyến, thu thập cục bộ, máy ảnh khác nhau), v.v.
  • Tính nhất quán của nhãn. Tất cả các trường hợp của tất cả các lớp trong tất cả các hình ảnh phải được dán nhãn. Ghi nhãn một phần sẽ không hoạt động.
  • Độ chính xác của nhãn. Nhãn phải bao quanh chặt chẽ từng đối tượng. Không có khoảng trống nào nên tồn tại giữa một đối tượng và hộp giới hạn của nó. Không có đối tượng nào bị thiếu nhãn.
  • Xác minh nhãn. Cảnh train_batch*.jpg Khi bắt đầu chuyến tàu để xác minh nhãn của bạn xuất hiện chính xác, tức là xem ví dụ mosaic.
  • Hình nền. Hình nền là hình ảnh không có đối tượng nào được thêm vào tập dữ liệu để giảm Dương tính giả (FP). Chúng tôi khuyên bạn nên sử dụng khoảng 0-10% hình nền để giúp giảm FP (COCO có 1000 hình nền để tham khảo, 1% tổng số). Không cần nhãn cho hình nền.

Phân tích COCO

Lựa chọn mô hình

Các mô hình lớn hơn như YOLOv5x và YOLOv5x6 sẽ tạo ra kết quả tốt hơn trong hầu hết các trường hợp, nhưng có nhiều thông số hơn, yêu cầu nhiều bộ nhớ CUDA hơn để đào tạo và chạy chậm hơn. Đối với triển khai di động , chúng tôi khuyên bạn nên YOLOv5s / m, để triển khai đám mây , chúng tôi khuyên bạn nên YOLOv5l / x. 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

  • Bắt đầu từ tạ được đào tạo trước. Được khuyến nghị cho các bộ dữ liệu vừa và nhỏ (tức là VOC, VisDrone, Lúa mì toàn cầu). Chuyển tên của mô hình cho --weights lý lẽ. Mô hình tải xuống tự động từ Đặt YOLOv5 phát hành.
python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • Bắt đầu từ đầu. Được khuyến nghị cho các bộ dữ liệu lớn (tức là COCO, Đối tượng365, OIv6). Vượt qua kiến trúc mô hình YAML mà bạn quan tâm, cùng với một kiến trúc trống --weights '' lý lẽ:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

Cài đặt đào tạo

Trước khi sửa đổi bất cứ điều gì, trước tiên hãy đào tạo với cài đặt mặc định để thiết lập đường cơ sở hiệu suất. Một danh sách đầy đủ các cài đặt train.py có thể được tìm thấy trong train.py argparser.

  • Kỷ nguyên. Bắt đầu với 300 kỷ nguyên. Nếu điều này phù hợp sớm thì bạn có thể giảm kỷ nguyên. Nếu quá tải không xảy ra sau 300 kỷ nguyên, hãy đào tạo lâu hơn, tức là 600, 1200, v.v. kỷ nguyên.
  • Kích thước hình ảnh. COCO đào tạo ở độ phân giải gốc của --img 640, mặc dù do số lượng lớn các đối tượng nhỏ trong tập dữ liệu, nó có thể được hưởng lợi từ việc đào tạo ở độ phân giải cao hơn như --img 1280. Nếu có nhiều đối tượng nhỏ thì các bộ dữ liệu tùy chỉnh sẽ được hưởng lợi từ việc đào tạo ở độ phân giải gốc hoặc cao hơn. Kết quả suy luận tốt nhất thu được cùng một lúc --img như đào tạo đã được chạy tại, tức là nếu bạn đào tạo tại --img 1280 Bạn cũng nên kiểm tra và phát hiện tại --img 1280.
  • Kích thước lô. Sử dụng lớn nhất --batch-size mà phần cứng của bạn cho phép. Kích thước lô nhỏ tạo ra số liệu thống kê hàng loạt kém và nên tránh.
  • Siêu tham số. Siêu tham số mặc định nằm trong hyp.scratch-low.yaml. Chúng tôi khuyên bạn nên đào tạo với các siêu tham số mặc định trước khi nghĩ đến việc sửa đổi bất kỳ. Nói chung, việc tăng các siêu tham số tăng cường sẽ làm giảm và trì hoãn việc quá tải, cho phép đào tạo lâu hơn và mAP cuối cùng cao hơn. Giảm các siêu tham số tăng thành phần tổn thất như hyp['obj'] sẽ giúp giảm tình trạng quá tải trong các thành phần tổn thất cụ thể đó. Để biết phương pháp tự động tối ưu hóa các siêu tham số này, hãy xem Hướng dẫn tiến hóa siêu tham số.

Đọc thêm

Nếu bạn muốn biết thêm, một nơi tốt để bắt đầu là 'Công thức đào tạo mạng nơ-ron' của Karpathy, có những ý tưởng tuyệt vời để đào tạo áp dụng rộng rãi trên tất cả các miền ML: https://karpathy.github.io/2019/04/25/recipe/

Chúc may mắn 🍀 và cho chúng tôi biết nếu bạn có bất kỳ câu hỏi nào khác!



Đã tạo 2023-11-12, Cập nhật 2024-01-12
Tác giả: glenn-jocher (3)

Ý kiến