yolov5学习遇到的困难

本文观看目标检测 YOLOv5 开源代码项目调试与讲解实战【土堆 x 布尔艺数】_哔哩哔哩_bilibili视频来部署yolov5环境。

问题1:pycocotools工具包安装问题,参照视频2解决Windows平台下pycocotools错误(目标检测 YOLOv5 开源代码项目调试与讲解实战【土堆 x 布尔艺数】_哔哩哔哩_bilibili

问题2:下载失败yolov5s.pt文件,因为github为外网可能无法访问可能导致下载失败,可自行去 https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt下载(如果下载5.0版本就不会报问题3、4错误,此链接为作者提供链接)放在yolov5-5.0文件夹下即可

问题3:Can't get attribute 'SPPF' on <module 'models.common' from 'D:\\code\\yolov5-5.0\\models\\common.py'>

解决:由于视频使用的5.0版本权重已经更新到6.0版本了(个人理解)所以报错,去6.0版本里面的model/common.py里面找到SPPF的类(代码如下)把它拷到自己这个5.0版本的model/common.py里面,这样自己的代码就有这个类了,还要导入一个warnings(高亮部分)包就可以了

 1 class SPPF(nn.Module):
 2     # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
 3     def __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))
 4         super().__init__()
 5         c_ = c1 // 2  # hidden channels
 6         self.cv1 = Conv(c1, c_, 1, 1)
 7         self.cv2 = Conv(c_ * 4, c2, 1, 1)
 8         self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
 9 
10     def forward(self, x):
11         x = self.cv1(x)
12         with warnings.catch_warnings():
13             warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning
14             y1 = self.m(x)
15             y2 = self.m(y1)
16             return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

问题4:The size of tensor a (60) must match the size of tensor b (56) at non-singLeton dimension 3

解决:这是因为5.0的版本权重下载了个6.1的版本权重,所以不匹配,
可去https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt下载,放在yolov5-5.0文件夹下即可
posted @ 2022-04-23 22:30  子兢  阅读(887)  评论(0编辑  收藏  举报