问题一: 运行detect.py 报错:AttributeError: Can’t get attribute ‘SPPF’ on <module ‘models.common’
原因:models文件夹的comon.py缺少SPPF类,这个类在yolov5的v6.0版本里有,这要复制过来即可,这里直接把代码发出来,省着各位朋友再去找了。
import warnings
class SPPF(nn.Module):
# Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
def __init__(self, c1, c2, k=5): # equivalent to SPP(k=(5, 9, 13))
super().__init__()
c_ = c1 // 2 # hidden channels
self.cv1 = Conv(c1, c_, 1, 1)
self.cv2 = Conv(c_ * 4, c2, 1, 1)
self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
def forward(self, x):
x = self.cv1(x)
with warnings.catch_warnings():
warnings.simplefilter('ignore') # suppress torch 1.9.0 max_pool2d() warning
y1 = self.m(x)
y2 = self.m(y1)
return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))
注意:
(1)如果这个如果这个yolov5s.pt下载不下来的话,可以直接去我的资源里下载,里面包含了(yolov5s.pt、yolov5m.pt、yolov5l.pt、yolov5x.pt、yolov5n.pt),下载后只要复制到yolo文件夹中就可以使用。
(2)yolov5所在文件夹不要包含中文路径!很重要的一点。
运行detect.py在对应的runs/expn的文件夹里有以下的结果代表detect.py运行成功,yolov5自带两张图片用于检验模型。
问题二: coco128文件下载、coco128yaml文件更改、coco128数据集not exist问题
coco128.zip放在我的资源里了,有需要的可以下载。
1)运行train.py,遇到以下报错:
解决方法:将原文件中的main函数部分:
更改为:
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--weights', type=str, default='', help='initial weights path')
parser.add_argument('--cfg', type=str, default='yolov5s.yaml', help='model.yaml path')
2)关于coco128\images\train2017 does not exist 问题
此问题需要对coco128yaml文件更改
这个搞了好久才终于解决,解决办法就是:
在yolov5文件夹中新建一个文件夹,我取名是MyData(任何名字都可以,不要是中文)用于存放coco128的images和labels
将coco128中的images和labels分别复制过来
如下图所示,然后将data文件夹中的coco128.yaml train,val路径更改,即可解决
train: MyData/images/train2017 # 128 images
val: MyData/images/train2017 # 128 images
运行train.py
3) 出现BrokenPipeError,这个是线程问题
将workers的默认参数更改一下就可以了。
版权声明:本文为CSDN博主「jq_98」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jq_98/article/details/121271146
暂无评论