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文件夹下即可