PaddleDetection——使用自己制作的VOC数据集进行模型训练的避坑指南
程序员文章站
2022-05-21 12:20:00
文章目录问题及解决方案问题一解决方法问题二解决方法注意问题及解决方案问题一creat_list.py执行后,生成的trainval.txt和test.txt为空文件夹解决方法creat_list文件本身就是将数据集作以划分,方便训练,但在制作数据集时应该会自动进行划分,所以可以直接使用数据集中main文件夹中划分好的test.txt文件。问题二执行train.py报错:该报错说明该函数本应该接收到2个参数,但只接收到一个参数,所以我们需要找到该参数,给该参数进行赋值即可。查看报错函数:...
问题及解决方案
问题一
creat_list.py执行后,生成的trainval.txt和test.txt为空文件夹
解决方法
标准的trainval.txt文件格式,有".jpg"+".xmi"的照片对应信息。
目前不知道是什么原因creat_list生成的txt文件为空,但是我们可以自己写一个creat_txt.py文件代替creat_list.py文件,将其进行补全:
- 创建creat_txt.py
creat_txt.py
import os
#定义路径,根据你自己的txt和voc的文件夹位置进行修改
txt_path = "/home/aistudio/PaddleDetection-release-0.2/dataset/voc/VOCdevkit/VOC2007/ImagesSet/Main"
creat_path = "/home/aistudio/PaddleDetection-release-0.2/dataset/voc"
#操作文件夹,写入trainval和test的txt文件
txt_ftrainval = open(os.path.join(txt_path,'trainval.txt'), 'r')
txt_ftest = open(os.path.join(txt_path, 'test.txt'), 'r')
creat_ftrainval = open(os.path.join(creat_path ,'trainval.txt'), 'w')
creat_ftest = open(os.path.join(creat_path , 'test.txt'), 'w')
#读写操作
for i in txt_ftrainval.readlines():
i = i.strip('\n')
jpg1 = str("VOCdevkit/VOC2007/JPEGImages/" + i + ".jpg" + "\n")
xml1 = str("VOCdevkit/VOC2007/Annotations/" + i + ".xml" + "\n")
creat_ftrainval.write(jpg1)
creat_ftrainval.write(xml1)
for p in txt_ftest.readlines():
p = p.strip('\n')
jpg2 = str("VOCdevkit/VOC2007/JPEGImages/" + p + ".jpg" + "\n")
xml2 = str("VOCdevkit/VOC2007/Annotations/" + p + ".xml" + "\n")
creat_ftest.write(jpg2)
creat_ftest.write(xml2)
creat_ftrainval.close()
creat_ftest.close()
- 运行py程序:
!python dataset/voc/creat_txt.py
- 生成结果:
问题二
执行train.py报错:
该报错说明该函数本应该接收到2个参数,但只接收到一个参数,所以我们需要找到该参数,给该参数进行赋值即可。
查看报错函数:
解决方法
在voc.py中找到该函数,将“None”改为自己对应的"img_path"(照片的路径)和"anno_path"(label的路径)
注意
需要将默认的label函数中的标签改为自己的label_list,如下图所示:
本文地址:https://blog.csdn.net/qq_45779334/article/details/107350499