YOLOv6是由美团视觉团队开发的
1.环境配置
我们先把YOLOv6的代码clone下来
git clone https://github.com/meituan/YOLOv6.git
安装一些必要的包
pip install pycocotools==2.0
作者要求pytorch的版本是1.8.0,我的环境是1.7.0,也是可以正常运行的
pip install -r requirements_my_version.txt
我除了上面那个包以外安装的东西和版本如下,安装这样装,我是可以正常运行模型的
matplotlib==3.2.2
numpy==1.18.5
opencv-python==4.1.2.30 # 注意这个地方官方提供的是opencv-python>=4.1.2,但是安装的时候告诉你没有这个版本要你从里面选,我选了30,后面可以运行
Pillow==7.1.2
PyYAML==5.3.1
requests==2.23.0
scipy==1.4.1
torch==1.7.0
torchvision==0.8.1
tqdm==4.41.0
# plotting ------------------------------------
pandas==1.1.4
seaborn==0.11.0
# deep_sort -----------------------------------
easydict
# torchreid
Cython
h5py
six
tb-nightly
future
yacs
gdown
flake8
yapf
isort==4.3.21
imageio
2.运行代码实现识别
如果你要从头重新自己训练一个YOLOv6的识别,自己训练一个模型,你想复现reproduce可以参考这个代码
https://github.com/meituan/YOLOv6/blob/main/docs/Train_coco_data.md
Inference
视频计数
基于你自己的数据集,而不是训练集COCO,进行识别(打方框),并将识别的结果保存成文件存在本地
# P5 models
# 官方提供的指令
python tools/infer.py --weights yolov6s.pt --source img.jpg / imgdir / video.mp4
# 每个参数的含义
python 运行的代码文件的路径 --weights 模型文件的名字或路径+名字 --source 图片、图片所在文件夹、视频文件
python ./tools/infer.py --weights ./yolov6s.pt --source ./eval_my/dandong.mp4
# 记得模型参数那个一定要写./,否则如果你直接写yolov6s.pt的话,会把模型又下载一遍
运行后,识别完成的视频都保存在这个位置/runs/inference/exp
打开一看,识别的都很好,(1)远处小的车也可以识别出来,yolo5只能识别出近处的车(2)每个车识别出来,置信度更高
上面使用的那个模型yolov6s.pt是作者所说的P5 model,其实作者还提供训练的更好、参数更多、速度更快的模型P6 model
https://github.com/meituan/YOLOv6/releases/tag/0.3.0
下面那些带6的就是P6,不带6的就是P5模型
更换P6模型也很简单,--weights这个参数后面的模型文件换成 带s的P6模型即可
# P6 models
python tools/infer.py --weights ./yolov6s6.pt --source ./eval_my/dandong.mp4
经过美团优化后的模型连椅子、和自行车都能识别出来,你说厉不厉害?
图片计数
python tools/infer.py --weights yolov6s.pt --source ./eval_my/15_persons.PNG
这张原图
识别出来,是这样.(1)每个人也是都能识别出来的,尤其是特别小的人能够识别出来,(2)除了特别小的那种人,其他的识别的置信度都很高
本机摄像头
# 官方教程
python tools/infer.py --weights yolov6s.pt --webcam --webcam-addr 0
# --webcam 跟着网络摄像头的网址
# --webcam-addr 加0是本机摄像头
# 这样是可以运行的
python tools/infer.py --weights yolov6s.pt --webcam-addr 0
可以运行是可以运行,但是我识别过程没显示,识别结果没有保存。具体怎么用,以后再研究。
Evaluation
基于COCO数据集,进行识别,并展示performance score
python -m torch.distributed.launch --nproc_per_node 8 tools/train.py --batch 256 --conf configs/yolov6s_finetune.py --data data/dataset.yaml --fuse_ab --device 0,1,2,3,4,5,6,7
这个我不知道COCO数据集怎么摆放,所以跑了会报错。后面用到再来解决吧。
Traceback (most recent call last):
File "tools/eval.py", line 164, in <module>
main(args)
File "tools/eval.py", line 159, in main
run(**vars(args))
File "/home/albert/anaconda3/envs/py380tc170/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 26, in decorate_context
return func(*args, **kwargs)
File "tools/eval.py", line 141, in run
data = Evaler.reload_dataset(data, task) if isinstance(data, str) else data
File "/media/F:/FILES_OF_ALBERT/IT_paid_class/graduation_thesis/model_innov/Yolov6_DeepSort_Pytorch/yolov6/YOLOv6/yolov6/core/evaler.py", line 437, in reload_dataset
raise Exception('Dataset not found.')
Exception: Dataset not found.
这个repo写的很详细,包括了这些东西
代码运行的教程(1)基于COCO数据集训练模型,完成复现(2)基于自定义的数据训练、精调模型(3)测试集上进行测试,测试速度(4)对模型进行量化压缩