Реализация статьи — YOLOv7: Обучаемый набор бесплатных методик установил новую вершину качества среди реального времени детекторов объектов
MS COCO| Модель | Размер теста | APtest | AP50test | AP75test | FPS при батче 1 | Среднее время при среднем батче 32 | | :-- | :-: | :-: | :-: | :-: | :-: | :-: | | YOLOv7 | 640 | 51.4% | 69.7% | 55.9% | 161 FPS | 2.8 мс | | YOLOv7-X | 640 | 53.1% | 71.2% | 57.8% | 114 FPS | 4.3 мс | | | | | | | | | | YOLOv7-W6 | 1280 | 54.9% | 72.6% | 60.1% | 84 FPS | 7.6 мс | | YOLOv7-E6 | 1280 | 56.0% | 73.5% | 61.2% | 56 FPS | 12.3 мс | | YOLOv7-D6 | 1280 | 56.6% | 74.0% | 61.8% | 44 FPS | 15.0 мс | | YOLOv7-E6E | 1280 | 56.8% | 74.4% | 62.1% | 36 FPS | 18.7 мс |
# Создайте контейнер Docker; вы можете изменить размер общего памяти, если у вас больше.
nvidia-docker run --name yolov7 -it -v ваш_путь_к_coco:/coco/ -v ваш_путь_к_коду:/yolov7 --shm-size=64g nvcr.io/nvidia/pytorch:21.08-py3
# Установите необходимые пакеты
apt update
apt install -y zip htop screen libgl1-mesa-glx
# Установите необходимые пакеты с помощью pip
pip install seaborn thop
# Перейдите в каталог с кодом
cd /yolov7
yolov7.pt
yolov7x.pt
yolov7-w6.pt
yolov7-e6.pt
yolov7-d6.pt
yolov7-e6e.pt
python test.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.65 --device 0 --weights yolov7.pt --name yolov7_640_val
Вы получите следующие результаты:
Средняя точность (AP)@[IoU=0.50:0.95|area=all|maxDets=100] = 0.51206
Средняя точность (AP)@[IoU=0.50|area=all|maxDets=100] = 0.69730
Средняя точность (AP)@[IoU=0.75|area=all|maxDets=100] = 0.55521
Средняя точность (AP)@[IoU=0.50:0.95|area=small|maxDets=100] = 0.35247
Средняя точность (AP)@[IoU=0.50:0.95|area=medium|maxDets=100] = 0.55937
Средняя точность (AP)@[IoU=0.50:0.95|area=large|maxDets=100] = 0.66693
Средний recall (AR)@[IoU=0.50:0.95|area=all|maxDets=1] = 0.38453
Средний recall (AR)@[IoU=0.50:0.95|area=all|maxDets=10] = 0.63765
Средний recall (AR)@[IoU=0.50:0.95|area=all|maxDets=100] = 0.68772
Средний recall (AR)@[IoU=0.50:0.95|area=small|maxDets=100] = 0.53766
Средний recall (AR)@[IoU=0.50:0.95|area=medium|maxDets=100] = 0.73549
Средний recall (AR)@[IoU=0.50:0.95|area=large|maxDets=100] = 0.83868
```Для измерения точности загрузите [COCO-annotations для Pycocotools](http://images.cocodataset.org/annotations/annotations_trainval2017.zip) в `./coco/annotations/instances_val2017.json`.
## Обучение
### Подготовка данных
```shell
bash scripts/get_coco.sh
train2017.cache
и val2017.cache
, а также заново скачать метки.# обучение моделей p5
python train.py --workers 8 --device 0 --batch-size 32 --data data/coco.yaml --img 640 640 --cfg cfg/training/yolov7.yaml --weights '' --name yolov7 --hyp data/hyp.scratch.p5.yaml
# обучение моделей p6
python train_aux.py --workers 8 --device 0 --batch-size 16 --data data/coco.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6.yaml --weights '' --name yolov7-w6 --hyp data/hyp.scratch.p6.yaml
# обучение моделей p5
python -m torch.distributed.launch --nproc_per_node 4 --master_port 9527 train.py --workers 8 --device 0,1,2,3 --sync-bn --batch-size 128 --data data/coco.yaml --img 640 640 --cfg cfg/training/yolov7.yaml --weights '' --name yolov7 --hyp data/hyp.scratch.p5.yaml
# обучение моделей p6
python -m torch.distributed.launch --nproc_per_node 8 --master_port 9527 train_aux.py --workers 8 --device 0,1,2,3,4,5,6,7 --sync-bn --batch-size 128 --data data/coco.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6.yaml --weights '' --name yolov7-w6 --hyp data/hyp.scratch.p6.yaml
yolov7_training.pt
yolov7x_training.pt
yolov7-w6_training.pt
yolov7-e6_training.pt
yolov7-d6_training.pt
yolov7-e6e_training.pt
Одиночное обучение на GPU для пользовательского набора данных
# Обучение моделей p5
python train.py --workers 8 --device 0 --batch-size 32 --data data/custom.yaml --img 640 640 --cfg cfg/training/yolov7-custom.yaml --weights 'yolov7_training.pt' --name yolov7-custom --hyp data/hyp.scratch.custom.yaml
# Обучение моделей p6
python train_aux.py --workers 8 --device 0 --batch-size 16 --data data/custom.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6-custom.yaml --weights 'yolov7-w6_training.pt' --name yolov7-w6-custom --hyp data/hyp.scratch.custom.yaml
На видео:
python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source yourvideo.mp4
На изображении:
python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg
PyTorch в CoreML (и вывод на MacOS/iOS) PyTorch в ONNX с NMS (и вывод)
python export.py --weights yolov7-tiny.pt --grid --end2end --simplify \
--topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640 --max-wh 640
В данном случае нет необходимости в переводе, поскольку текст уже на русском языке, а команды и параметры остаются без изменений согласно правилам перевода.Перенос PyTorch в TensorRT с NMS (и вывод)
wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-tiny.pt
python export.py --weights ./yolov7-tiny.pt --grid --end2end --simplify --topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640
git clone https://github.com/Linaom1214/tensorrt-python.git
python ./tensorrt-python/export.py -o yolov7-tiny.onnx -e yolov7-tiny-nms.trt -p fp16
Перенос PyTorch в TensorRT другим способом
Развернуть
wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-tiny.pt
python export.py --weights yolov7-tiny.pt --grid --include-nms
git clone https://github.com/Linaom1214/tensorrt-python.git
python ./tensorrt-python/export.py -o yolov7-tiny.onnx -e yolov7-tiny-nms.trt -p fp16
# Или используйте trtexec для конвертации ONNX в движок TensorRT
/usr/src/tensorrt/bin/trtexec --onnx=yolov7-tiny.onnx --saveEngine=yolov7-tiny-nms.trt --fp16
Тестировано с: Python 3.7.13, PyTorch 1.12.0+cu113
См. keypoint.ipynb.
См. instance.ipynb.
## Инстанс-сегментацияYOLOv7 для инстанс-сегментации (YOLOR + YOLOv5 + YOLACT)
Модель | Размер теста | APbox | AP50box | AP75box | APmask | AP50mask | AP75mask |
---|---|---|---|---|---|---|---|
YOLOv7-seg | 640 | 51.4% | 69.4% | 55.8% | 41.5% | 65.5% | 43.7% |
YOLOv7 с декомпозированной головой TAL (YOLOR + YOLOv5 + YOLOv6)
Модель | Размер теста | APval | AP50val | AP75val |
---|---|---|---|---|
YOLOv7-u6 | 640 | 52.6% | 69.7% | 57.3% |
@inproceedings{wang2023yolov7,
title={{YOLOv7}: Обучаемый набор бесплатных признаков установил новую вершину в области реального времени для детекторов объектов},
author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
booktitle={Доклады на конференции IEEE/CVF по компьютерному зрению и распознаванию образов (CVPR)},
year={2023}
}
@article{wang2023designing,
title={Проектирование стратегий проектирования сетей через анализ пути градиента},
author={Wang, Chien-Yao and Liao, Hong-Yuan Mark and Yeh, I-Hau},
journal={Журнал информационных наук и технологий},
year={2023}
}
YOLOv7-semantic & YOLOv7-panoptic & YOLOv7-caption
YOLOv7-semantic & YOLOv7-detection & YOLOv7-depth (в сотрудничестве с NTUT)YOLOv7-3d-detection & YOLOv7-lidar & YOLOv7-road (в сотрудничестве с NTUT)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )