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ể if you expect a helpful response, including results plots (train losses, val losses, P, R, mAP), PR curve, confusion matrix, training mosaics, test results and dataset statistics images such as labels.png. All of these are located in your 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.
- Label accuracy. Labels must closely enclose each object. No space should exist between an object and it's bounding box. No objects should be missing a label.
- 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.
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 gần như tất cả các trường hợp, nhưng có nhiều thông số hơn, đòi hỏi nhiều hơn CUDA bộ nhớ để đà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.
- 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.
- Epochs. Start with 300 epochs. If this overfits early then you can reduce epochs. If overfitting does not occur after 300 epochs, train longer, i.e. 600, 1200 etc. epochs.
- 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
. - Batch size. 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
If you'd like to know more, a good place to start is Karpathy's 'Recipe for Training Neural Networks', which has great ideas for training that apply broadly across all ML domains: 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!