最近在使用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上找到答案。