数据集制作_PaddleDetection——使用自己制作的VOC数据集进行模型训练的避坑指南...

本文介绍了在使用PaddleDetection框架时遇到的问题及解决方案,包括如何处理creat_list.py生成空文件的问题,以及训练时报错的解决方法,详细讲述了自定义creat_txt.py文件的创建和修改voc.py中标签函数的过程。
摘要由CSDN通过智能技术生成

问题及解决方案

问题一

creat_list.py执行后,生成的trainval.txt和test.txt为空文件夹。

6a79c75f9002b277434c44bf696bb265.png

解决方法

标准的trainval.txt文件格式,有".jpg"+".xmi"的照片对应信息。

b20de58004740d0e3db53022a5f4fe96.png

目前不知道是什么原因creat_list生成的txt文件为空,但是我们可以自己写一个creat_txt.py文件代替creat_list.py文件,将其进行补全:

      1.创建creat_txt.py:

import osimport reimport randomdevkit_dir = './'output_dir = './'def get_dir(devkit_dir,  type):    return os.path.join(devkit_dir, type)def walk_dir(devkit_dir):    filelist_dir = get_dir(devkit_dir, 'ImageSets/Main')    annotation_dir = get_dir(devkit_dir, 'Annotations')    img_dir = get_dir(devkit_dir, 'JPEGImages')    trainval_list = []    train_list = []    val_list = []    test_list = []    added = set()    for _, _, files in os.walk(filelist_dir):        for fname in files:            print(fname)            img_ann_list = []            if re.match('trainval.txt', fname):                img_ann_list = trainval_list            elif re.match('train.txt', fname):                img_ann_list = train_list            elif re.match('val.txt', fname):                img_ann_list = val_list            elif re.match('test.txt', fname):                img_ann_list = test_list            else:                continue            fpath = os.path.join(filelist_dir, fname)            for line in open(fpath):                name_prefix = line.strip().split()[0]                print(name_prefix)                added.add(name_prefix)                #ann_path = os.path.join(annotation_dir, name_prefix + '.xml')                ann_path = annotation_dir + '/' + name_prefix + '.xml'                print(ann_path)                #img_path = os.path.join(img_dir, name_prefix + '.jpg')                img_path = img_dir + '/' + name_prefix + '.jpg'                assert os.path.isfile(ann_path), 'file %s not found.' % ann_path                assert os.path.isfile(img_path), 'file %s not found.' % img_path                img_ann_list.append((img_path, ann_path))            print(img_ann_list)    return trainval_list, train_list, val_list, test_listdef prepare_filelist(devkit_dir, output_dir):    trainval_list = []    train_list = []    val_list = []    test_list = []    trainval, train, val, test = walk_dir(devkit_dir)    trainval_list.extend(trainval)    train_list.extend(train)    val_list.extend(val)    test_list.extend(test)    #print(trainval)    with open(os.path.join(output_dir, 'trainval.txt'), 'w') as ftrainval:        for item in trainval_list:            ftrainval.write(item[0] + ' ' + item[1] + '\n')    with open(os.path.join(output_dir, 'train.txt'), 'w') as ftrain:        for item in train_list:            ftrain.write(item[0] + ' ' + item[1] + '\n')    with open(os.path.join(output_dir, 'val.txt'), 'w') as fval:        for item in val_list:            fval.write(item[0] + ' ' + item[1] + '\n')    with open(os.path.join(output_dir, 'test.txt'), 'w') as ftest:        for item in test_list:            ftest.write(item[0] + ' ' + item[1] + '\n')if __name__ == '__main__':    prepare_filelist(devkit_dir, output_dir)

      2.运行py程序:

!python dataset/voc/creat_txt.py

      3.生成结果:

97fa00c84b802f6aa698d9c7a77b8fae.png

问题二

执行train.py报错:

90800bc514c72a524eb6e2e1846410ea.png

该报错说明该函数本应该接收到2个参数,但只接收到一个参数,所以我们需要找到该参数,给该参数进行赋值即可。

查看报错函数:

ca80407c27dde0b6f9a9ae7b65073fde.png

解决方法

在voc.py中找到该函数,将“None”改为自己对应的"img_path"(照片的路径)和"anno_path"(label的路径)。

fcc0a593ab2e16714c9ded66ef820d64.png

注意:需要将默认的label函数中的标签改为自己的label_list,如下图所示:

cb8383fec5a41bebd09a3f0f5d44fd87.png 132f4f92fb3f74b37d753c8a3e8ab945.png博文链接:https://blog.csdn.net/qq_45779334/article/details/107350499
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值