最近在使用yolov3算法做目标检测实验 从GitHub上clone了项目 运行时出现了不少错误 查了一大堆资料 一个个的解决 真是愁苦了孩子 故在此分享初次使用yolov3容易出现的几个错误的解决办法。
错误1 文件目录正确但提示No such file or directary:
解决办法 1、要使用绝对路径 2、在dataset.py文件的img_path处 要保证读取图片的位置要和train.txt val.txt文件中图片的位置相衔接 这样才能在训练数据时准确读取到图片 label_path处读取的是数据集图片转化后的.txt标签文件
img_path F:/001/PyTorch-YOLOv3/PyTorch-YOLOv3/data/coco img_path #print (img_path) # Extract image as PyTorch tensor img transforms.ToTensor()(Image.open(img_path).convert( RGB )) # Handle images with less than three channels if len(img.shape) ! 3: img img.unsqueeze(0) img img.expand((3, img.shape[1:])) _, h, w img.shape h_factor, w_factor (h, w) if self.normalized_labels else (1, 1) # Pad to square resolution img, pad pad_to_square(img, 0) _, padded_h, padded_w img.shape # --------- # Label # --------- label_path self.label_files[index % len(self.img_files)].rstrip() label_path F:/001/PyTorch-YOLOv3/PyTorch-YOLOv3/data/coco/labels label_path
错误2 IndexError: index 0 is out of range
出现这种错误的原因可能是config文件夹中yolov3的网络配置文件出现使用错误 简而言之就是你可能使用的是原作者的80分类的配置文件
解决办法 将原来的yolov3.cfg文件删除 从Git官网Git (git-scm.com)下载git这个小程序 安装后鼠标右键就可以看到
点击Git Bash Here 输入命令 bash .sh文件名 类别个数 运行即可生成自己的网络配置文件
错误3 ValueError: not enough values to unpack (expected 3, got 0);这个问题真是让我头疼了一天 它能正常训练数据 但训练完后啪啪地就给我报错了 给我气的........加上这个错误网上资料甚少 真是愁死了人 终于功夫不负有心人 在网上爬了一天 总算找到了解决办法。
解决办法1 在test.py文件53行左右在#concatenate sample statistics之前 插入这段代码
if len(sample_metrics) 0: return np.array([0]), np.array([0]), np.array([0]), np.array([0]), np.array([0], dtype np.int)
解决办法2 在train.py 第159行左右将0改为1 但本人不建议采用此法
if epoch % opt.evaluation_interval 0: print( n---- evaluating Model ---- ) ###################################### cahnge to ###################################### if epoch % opt.evaluation_interval 1: print( n---- evaluating Model ---- )
最后顺利运行
试运行我这里使用的是从coco数据集选出100张图片进行训练
好了 dome跑通了之后就是漫长的模型网络改进学习了 作为小白我是真的特别特别理解那种遇到问题解决不掉 资料找不到 又没人帮的心情 在这里希望后人遇到同样的问题时能快速地在CSDN上找到答案。



