AI智能
改变未来

使用google colab训练yolo和ssd的问题

使用google colab训练yolo和ssd的问题

  • 问题描述
  • 解决方法

问题描述

当使用yolo或者ssd训练自己的数据时,利用相应的python程序会生成训练所需要的.txt文件,里面放置的为图片的路径,如

利用下面的程序能够生成训练所需的.txt文件

// An highlighted blockdef convert_annotation(year, image_id, list_file):in_file = open(\'VOCdevkit/VOC%s/Annotations/%s.xml\'%(year, image_id))tree=ET.parse(in_file)root = tree.getroot()for obj in root.iter(\'object\'):difficult = obj.find(\'difficult\').textcls = obj.find(\'name\').textif cls not in classes or int(difficult)==1:continuecls_id = classes.index(cls)xmlbox = obj.find(\'bndbox\')b = (int(xmlbox.find(\'xmin\').text), int(xmlbox.find(\'ymin\').text), int(xmlbox.find(\'xmax\').text), int(xmlbox.find(\'ymax\').text))list_file.write(\" \" + \",\".join([str(a) for a in b]) + \',\' + str(cls_id))wd = getcwd()for year, image_set in sets:image_ids = open(\'VOCdevkit/VOC%s/ImageSets/Main/%s.txt\'%(year, image_set)).read().strip().split()list_file = open(\'%s_%s.txt\'%(year, image_set), \'w\')for image_id in image_ids:list_file.write(\'%s/VOCdevkit/VOC%s/JPEGImages/%s.jpg\'%(wd, year, image_id))convert_annotation(year, image_id, list_file)list_file.write(\'\\n\')list_file.close()

生成的.txt文件

这样看好像并没有什么问题,但是执行训练操作时,会出现:

原因呢,是因为google的网盘名称叫My drive,中间有空格,但是程序在执行过程中并不能将其识别为一个整体,所以导致出现找不到路径的错误。

解决方法

解决方法其实很简单,让生成路径的代码,生成相对路径就好了。

// An highlighted blockdef convert_annotation(year, image_id, list_file):in_file = open(\'VOCdevkit/VOC%s/Annotations/%s.xml\'%(year, image_id))tree=ET.parse(in_file)root = tree.getroot()for obj in root.iter(\'object\'):difficult = obj.find(\'difficult\').textcls = obj.find(\'name\').textif cls not in classes or int(difficult)==1:continuecls_id = classes.index(cls)xmlbox = obj.find(\'bndbox\')b = (int(xmlbox.find(\'xmin\').text), int(xmlbox.find(\'ymin\').text), int(xmlbox.find(\'xmax\').text), int(xmlbox.find(\'ymax\').text))list_file.write(\" \" + \",\".join([str(a) for a in b]) + \',\' + str(cls_id))wd = getcwd()for year, image_set in sets:image_ids = open(\'VOCdevkit/VOC%s/ImageSets/Main/%s.txt\'%(year, image_set)).read().strip().split()list_file = open(\'%s_%s.txt\'%(year, image_set), \'w\')for image_id in image_ids:list_file.write(\'./VOCdevkit/VOC%s/JPEGImages/%s.jpg\'%(year, image_id))convert_annotation(year, image_id, list_file)list_file.write(\'\\n\')list_file.close()

主要修改list_file.write(’%s/VOCdevkit/VOC%s/JPEGImages/%s.jpg’%(wd, year, image_id))为
list_file.write(’./VOCdevkit/VOC%s/JPEGImages/%s.jpg’%(year, image_id)),这样就解决了这个问题。

下面是修改之后生成的.txt文件。

这样再训练就成功了

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 使用google colab训练yolo和ssd的问题