admin 管理员组

文章数量: 887021

【YOLO

2023.4.20更新 关于报错的解决办法

关于评论出现的问题,我当初测试的时候是没有的(可能是以前跑YOLO的时候已经改过了),于是我换了一台电脑测试,报错了,于是这里更新一下:

报错'Upsample' object has no attribute 'recompute_scale_factor'的解决办法:

找到你的pytorch源码中的upsampling.py文件(我的位置是在anaconda3\envs\torch12\lib\site-packages\torch\nn\modules\upsampling.py),将153行开始的forward函数做修改:

def forward(self, input: Tensor) -> Tensor:# return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners,#                      recompute_scale_factor=self.recompute_scale_factor)return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)

这样再根据下文的的说明来操作就有结果了。


虽然基于top-down方法的HRNet网络精度很高(在COCO数据集上最高能达到76.7mAP),但是由于其需要一个额外的detector和网络中始终保持着高分辨率的heatmap的原因,网络在推理时的速度非常的慢,这就使得类似与HRNet的网络不适合部署在低算力的边缘设备上。

而使用buttom-up的方法虽然快,但是其精度与top-down方法还存在一些差距。

YOLO-Pose与其他buttom-up的方法一样,也是一种single shot的方法。然而,它并不使用 heatmap。相反,YOLO-Pose将一个人的所有关键点与anchor联系起来。这就使得它在进行人物检测的同时,可以进行关节点的预测,形成了一个端到端的网络,在保证精度的同时拥有很快的推理速度。下面文章将进行YOLO-Pose的部署与测试,看看这个网络的表现如何。

原文地址:YOLO-Pose: Enhancing YOLO for Multi Person Pose Estimation Using Object Keypoint Similarity Loss

开源地址:edgeai-yolov5

1.部署环境

Windows 11

python 3.7

pytorch 1.13

cuda 11.6

2.选择分支下载源码

进入开源地址是看不到YOLO-Pose源码的,在master分支显示的是YOLOv5的源码,我们想要的源码在名为yolo-pose的分支。这里提供两个方法:

1)clone源码后切换分支

首先从github上clone代码

​git clone .git

下载完成后点击vscode的左下角的master

在出现的选项中选择yolo-pose分支

 

 2)切换分支后下载zip

点击GitHub页面左上的分支按钮,在下拉菜单中选择yolo-pose分支

 然后下载zip压缩包

3.安装配置yolo-pose运行环境

1)使用conda新建一个python环境,这里不再赘述。

2)使用conda install命令安装pytorch等基础包,同样不再赘述。

3)安装YOLO-Pose要求的包

命令行切换到YOLO-Pose源码路径,运行pip命令

pip install -r requirement.txt

 等待安装完成即可。如果出现网络问题安装失败可以尝试清华源下载,在命令行后加上

pip install -r requirement.txt -i 

如果pycocotools安装失败,请参考这篇文章。

4.下载官方的模型进行测试

在github的页面或者源码中的readme.md中找到下图所示的表格

注意!这里框出的两个超链接点击后都会下载一个模型文件,但是他们是不一样的!左边是官方训练好的模型,可以直接使用。右边是网络的预训练权重,需要自行训练网络后才能得到要用的模型。模型一定要下载正确,不然测试的时候会出现错误的结果。

这里我们选择左边框的模型下载,下载完成后更名为Yolov5s6_pose_640.pt放入源码的根目录。下面进行模型的测试,切换命令行路径到源码目录,输入:

python detect.py --weights Yolov5s6_pose_640.pt --source data/images --kpt-label

--weights 后跟模型路径;

--source 后跟图片或视频路径,如果要使用摄像头,--source 后写0即可;

--kpt-label 使用yolo-pose模型必须加上,不然会报错。

其他更多的参数(例如conf和iou)请详见detect.py。这里使用了源码自带的两张图片测试,效果如下:

使用摄像头测试:

python detect.py --weights Yolov5s6_pose_640.pt --source 0 --kpt-label

图片这里就不放了,这个模型在我的1050ti旧笔记本上单帧推理速度在40ms多一点,相较于HRNet可以说是非常快了。

本文标签: Yolo