当前位置: 首页 > news >正文

如何运行YOLOv6的代码实现目标识别?

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# torchreidCython
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 mainrun(**vars(args))File "/home/albert/anaconda3/envs/py380tc170/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 26, in decorate_contextreturn func(*args, **kwargs)File "tools/eval.py", line 141, in rundata = Evaler.reload_dataset(data, task) if isinstance(data, str) else dataFile "/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_datasetraise Exception('Dataset not found.')
Exception: Dataset not found.

这个repo写的很详细,包括了这些东西

代码运行的教程(1)基于COCO数据集训练模型,完成复现(2)基于自定义的数据训练、精调模型(3)测试集上进行测试,测试速度(4)对模型进行量化压缩

http://www.lryc.cn/news/13547.html

相关文章:

  • 新品BCM6755A1KFEBG/MT7921LE/MT7921AU WiFi芯片
  • 析构函数、拷贝构造
  • 光学镜头是制作过程阶段理解
  • 实验室设计|实验室设计要点SICOLAB
  • I.MX6ULL_Linux_系统篇(16) uboot分析-启动流程
  • 【C#】async关键字修饰后有无await的影响
  • Interspeech2022 | 一种基于元辅助学习的低资源口语语义理解方法
  • File类的用法和InputStream,OutputStream的用法
  • Java多线程——Thread类的基本用法
  • 【C++】类和对象练习——日期类的实现
  • [LeetCode周赛复盘] 第 333 场周赛20230219
  • 数字化时代,如何做好用户体验与应用性能管理
  • Python爬虫(7)selenium3种弹窗定位后点击操作,解决点击登录被隐藏iframe无法点击的登陆问题
  • 如何对项目健康度进行测量?评估项目健康状况
  • 美国原装二手keysight E4980A(安捷伦)2MHZ LCR表
  • 《clean coder》:关于摆烂,争论和心态
  • jenkins下载与简单使用
  • 3|物联网控制|计算机控制-刘川来胡乃平版|第3章:计算机总线技术 补充串行总线部分|课堂笔记|ppt
  • Blazor入门100天 : 身份验证和授权 (3) - DB改Sqlite
  • 阅读源码和查看官方文档,是解决问题最高效的办法。
  • 云原生流量管理系统中 Service , Ingress 和 Endpoint 的关系
  • 给你安利几款好用的谷歌浏览器插件
  • JDK定时器Timer原理
  • vue3中使用swiper完整版教程
  • 某个div的滚动条样式
  • Spring Boot框架基础介绍
  • Git - 在主分支上创建分支并提交代码
  • 第三届无线通信AI大赛分享交流会暨颁奖典礼顺利举办,大赛圆满收官
  • 程序的本质与类的说明
  • 单片机——显示方式