本文是使用yolo进行饮料识别。
github源码网址:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > CoreML > TFLite
1.解决方法的主要思想
本实验需要检查torch和torchvision库的版本,如果版本过低,后面运行可能无法运行,所以需要重装。
可以通过监测GPU进度,验证程序是否正常运行。
注意,要阅读官方文档,CSDN上的解决方案有时未能解决问题。
2.解决方法的实现
2.1 找不到yaml文件
图1 文件夹里有yaml文件,但运行时显示该文件不存在
查阅资料后,将训练指令里的路径和yaml里的路径都改成绝对路径。同时,修改测试的种类数量以及名字。注意,由于是在Linux环境下,需要使用反斜杠。如图2。
图2 fall.yaml的内容初步配置
发现新的报错,“NotImplementedError: Could not run 'torchvision: :nms' with arguments from the ' CUDA' backend.”,即torchvision版本不匹配,无法调用CUDA。重装后,版本显示如图3。
图3 torchvision的版本要求
2.2 无法生成缓存文件
图4 没有生成对应的Cache文件
发现labels文件夹为空,故考虑将ImageSets里的文本文件放入labels文件夹里。同时,减少训练的参数。
出现报错:[Errno 2] No such file or directory: 'data\\images\\002.jpg。检查文件夹里图片文件发现,要求jpg文件,而数据库里都是jpeg文件,故需要进行格式转换。
考虑将data文件夹放入ultralytics文件夹里,并修改fall.yaml里路径
2.3 找不到图像
图5 找不到图像
发现train.txt,trainval.txt和val.txt为空,考虑将data文件夹里的对应文本文件拿出来替换。经过测试发现,三个文本文件里都应该是图片编号,而没有train\trainval\val等英文单词。
发现fall.yaml文件里train,val,test的路径是没有后缀的,即指向的应该是文件夹而不是文件
考虑将images文件里图片拆分进train,val,test文件夹,labels文件夹里进行类似的分类。Fall.yaml里配置如图6。
图6 fall.yaml的内容最终配置
3 实验及运行结果
图7 正常运行
参考文献: