0、yolov5的环境配置:
conda create --prefix=D:\Anaconda3\envs\pytorch python==3.7
activate pytorch
pip install pyqt5
conda install cudatoolkit=11.3 cudnn=8.2.1
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
pip install -r requirements.txt
#train.py
#pip install tensorboard
#cd venv/Scripts
#tensorboard --logdir=../../runs/train/exp
1、如何连接(链接地址):
我是苹果手机,下载这个免费的软件就行:
需要提前下载好权重文件,修改以下代码中default的内容,改为存放权重文件的位置:
parser.add_argument('--weights', nargs='+', type=str, default='weights/yolov5s.pt', help='model.pt path(s)')
之后运行代码:
python detect.py --source http://admin:admin@10.45.102.144:8081
@符号之后的地址根据手机上的局域网地址改,ctrl+c退出。
运行效果:
2、报错subprocess.CalledProcessError: Command ‘git tag‘ returned non-zero exit status(链接地址):
打开报错中提示的subprocess.py文件
ctrl+f找到下这句代码(我的在415行),把check的True改成False:
return run(*popenargs, stdout=PIPI, timeout=timeout, check=True,......)
3、报错UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb2 in position 6:invalidstartbyte(链接地址):
在提示报错的torch_utils.py文件的第58行,将原来的decode()改成decode(encoding = ‘gbk’):
return subprocess.check_output(s,shell=True,srderr=subprocess.STDOUT).decode()[:-1}
4、AttributeError: ‘SPPF’ object has no attribute ‘CV1’(解决方案):
在modles文件夹下的common.py中,找到SPPF类(在SPP类的上方),将SPPF类替换成如下代码:
class SPPF(nn.Module):
def __init__(self, c1, c2, k = 5):
super().__init__()
c_ = c1 // 2
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')
y1 = self.m(x)
y2 = self.m(y1)
return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))
5、RuntimeError: The size of tensor a (80) must match the size of tensor b (56) at…(参考链接):
替换权重文件,下载地址,我下载后添加到qq收藏了,yolov5s.pt。
6、IndexError: list index out of range:
一般是权重文件的路径没有添加正确,主要修改如下代码权重文件的路径。
parser.add_argument('--weights', nargs='+', type=str, default='weights/yolov5s.pt', help='model.pt path(s)')
7、AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor’(参考链接):
不更改pytorch版本,修改其中一句代码即可。
打开报错文件:upsampling.py,找到如下代码,152行左右:
def forward ......
return F.interpolate(input,self.size, self.scale_factor, self.mode, self.align_corners,
reconpute_scale_factor=self.recompute_scale_factor)
删除后半部分,改为:
return F.interpolate(input,self.size, self.scale_factor, self.mode, self.align_corners)
8、提示无Lable:
找到datasetd.py文件,ctrl+f找到def img2label_paths(img_paths):
将其中 sa, sb = os.sep + 'images' + os.sep, os.sep + 'labels' + os.sep # /images/, /labels/ substrings
'images’替换’JPEGImages‘,或者后者替换前者。
这是采用的数据集不一样导致的,总之这里改成和标签文件夹同路径下的放图片的那个文件夹即可。
修改完以上的bug,我的detect.py就可以成功连接摄像头了。
数据集转换:
coco划分为小的数据集:
https://zhuanlan.zhihu.com/p/423898204
参考:
1、 版权声明:本文为CSDN博主「世由心生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gongkeguo/article/details/121609311 2、
版权声明:本文为CSDN博主「weixin_42673583」的原创文章,遵循CC 4.0
BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42673583/article/details/124346042
3、版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Williamcsj/article/details/122678138
4、版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46288319/article/details/125242714
5、 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40280673/article/details/125095353