Hướng dẫn cắt tỉa/tỉa thưa
📚 Hướng dẫn này giải thích cách áp dụng cắt tỉa cho YOLOv5 🚀 người mẫu.
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ình và tậ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
Kiểm tra bình thường
Trước khi cắt tỉa, chúng tôi muốn thiết lập hiệu suất cơ sở để so sánh. Lệnh này kiểm tra YOLOv5x trên COCO val2017 ở kích thước hình ảnh 640 pixel. yolov5x.pt
là mô hình lớn nhất và chính xác nhất hiện có. Các tùy chọn khác là yolov5s.pt
, yolov5m.pt
Và yolov5l.pt
hoặc bạn sở hữu điểm kiểm tra từ việc đào tạo một tập dữ liệu tùy chỉnh ./weights/best.pt
. Để biết chi tiết về tất cả các mẫu có sẵn, vui lòng xem README của chúng tôi bàn.
Đầu ra:
val: data=/content/yolov5/data/coco.yaml, weights=['yolov5x.pt'], batch_size=32, imgsz=640, conf_thres=0.001, iou_thres=0.65, task=val, device=, workers=8, single_cls=False, augment=False, verbose=False, save_txt=False, save_hybrid=False, save_conf=False, save_json=True, project=runs/val, name=exp, exist_ok=False, half=True, dnn=False
YOLOv5 🚀 v6.0-224-g4c40933 torch 1.10.0+cu111 CUDA:0 (Tesla V100-SXM2-16GB, 16160MiB)
Fusing layers...
Model Summary: 444 layers, 86705005 parameters, 0 gradients
val: Scanning '/content/datasets/coco/val2017.cache' images and labels... 4952 found, 48 missing, 0 empty, 0 corrupt: 100% 5000/5000 [00:00<?, ?it/s]
Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 157/157 [01:12<00:00, 2.16it/s]
all 5000 36335 0.732 0.628 0.683 0.496
Speed: 0.1ms pre-process, 5.2ms inference, 1.7ms NMS per image at shape (32, 3, 640, 640) # <--- base speed
Evaluating pycocotools mAP... saving runs/val/exp2/yolov5x_predictions.json...
...
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.507 # <--- base mAP
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.689
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.552
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.345
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.559
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.652
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.381
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.630
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.682
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.526
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.731
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.829
Results saved to runs/val/exp
Kiểm tra YOLOv5x trên COCO (độ thưa thớt 0,30)
Chúng tôi lặp lại thử nghiệm trên với một mô hình được cắt tỉa bằng cách sử dụng torch_utils.prune()
lệnh. Chúng tôi cập nhật val.py
để cắt tỉa YOLOv5x xuống mức thưa thớt 0,3:
30% sản lượng được cắt tỉa:
val: data=/content/yolov5/data/coco.yaml, weights=['yolov5x.pt'], batch_size=32, imgsz=640, conf_thres=0.001, iou_thres=0.65, task=val, device=, workers=8, single_cls=False, augment=False, verbose=False, save_txt=False, save_hybrid=False, save_conf=False, save_json=True, project=runs/val, name=exp, exist_ok=False, half=True, dnn=False
YOLOv5 🚀 v6.0-224-g4c40933 torch 1.10.0+cu111 CUDA:0 (Tesla V100-SXM2-16GB, 16160MiB)
Fusing layers...
Model Summary: 444 layers, 86705005 parameters, 0 gradients
Pruning model... 0.3 global sparsity
val: Scanning '/content/datasets/coco/val2017.cache' images and labels... 4952 found, 48 missing, 0 empty, 0 corrupt: 100% 5000/5000 [00:00<?, ?it/s]
Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 157/157 [01:11<00:00, 2.19it/s]
all 5000 36335 0.724 0.614 0.671 0.478
Speed: 0.1ms pre-process, 5.2ms inference, 1.7ms NMS per image at shape (32, 3, 640, 640) # <--- prune mAP
Evaluating pycocotools mAP... saving runs/val/exp3/yolov5x_predictions.json...
...
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.489 # <--- prune mAP
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.677
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.537
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.334
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.542
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.635
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.370
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.612
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.664
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.496
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.722
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.803
Results saved to runs/val/exp3
Trong kết quả chúng ta có thể thấy rằng chúng ta đã đạt được một độ thưa thớt 30% trong mô hình của chúng tôi sau khi cắt tỉa, điều đó có nghĩa là 30% các tham số trọng số của mô hình trong nn.Conv2d
các lớp bằng 0. Thời gian suy luận về cơ bản là không thay đổi, trong khi mô hình Điểm AP và AR giảm nhẹ.
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 , Python và PyTorch để khởi động dự án của bạn.
- Miễn phí GPU Sổ tay:
- Google Cloud : Hướng dẫn bắt đầu nhanh GCP
- Amazon : Hướng dẫn bắt đầu nhanh AWS
- Azure : Hướng dẫn bắt đầu nhanh AzureML
- Người lái tàu: Hướng dẫn khởi động nhanh Docker
Tình trạng dự án
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ất và 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 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.