DETR训练VOC数据集

本文记录了将VOC数据集转换为DETR模型所需的COCO格式,包括标注和图像的划分以及json文件的生成,以便进行模型训练。在训练过程中,调整了DETR代码以适应VOC数据集的21个类别,并指出了可能的训练问题。
摘要由CSDN通过智能技术生成

在学习DETR过程中,原模型用的COCO数据集,训练的太慢了,故使用VOC数据集。网上找了好长好长时间,好多博客都走不通,特此记录一下。

1. 数据集准备

数据集转换目标:文件夹名为coco, 里面包含以下几个文件夹:

1.1 标注划分

 首先, 根据VOC数据集中的train.txtval.txt两个记事本(两个记事本位置在VOCdevkit -->VOC 2012-->ImageSets-->Main), 将voc数据集中的标注文件(文件夹位置在:VOCdevkit-->VOC2012-->Annotations)划分为训练集和测试集,划分保存的文件夹名分别为train和val. 划分代码如下:

from PIL import Image
import os

f3 = open("E:/VOCdevkit/VOC2012/ImageSets/Main/val.txt", 'r')  
# txt文件所在路径
for line2 in f3.readlines():
    line3 = line2[:-1]  
    xmldir = 'E:/VOCdevkit/VOC2012/Annotations'  # 所有的xml文件绝对路径
    savedir = './val/'
    # 将用于xml文件提取出来的绝对路径
    xmllist = os.listdir(xmldir)
    for xml in xmllist:
        # if '.xml' in xml:
        if '.xml' in xml:
            if line3 in xml:
                fo = open(savedir + '/' + '{}'.format(xml), 'w')
                fi = open(xmldir + '/' + '{}'.format(xml), 'r')
                content = fi.readlines()
                for line in content:
                    fo.write(line)
                fo.close()
f3.close()

1.2 图像划分

其次,根据划分好的标注文件夹将图像(文件夹位置在:VOCdevkit-->VOC2012-->JPE GImages)划分为训练集和测试集,划分保存的文件夹名分别为train2017和val2017. 划分代码如下:

# 将图片根据xml中的文件名挑选出来
from PIL import Image
import os

def convert(input_dir1, input_dir2, output_dir):
    for filename in o
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值