用自己的数据(kitti)训练测试faster rcnn(一)

本文介绍了如何将Kitti数据集转换为PASCAL VOC格式以供Faster R-CNN使用,包括数据准备、转换类别、txt到xml标注格式转换以及训练验证集和测试集列表的生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Faster用的是PASCAL VOC数据集,所以将kitti数据改为PASCAL VOC的形式是最高效的办法。

1. 准备工作

  • 下载kitti数据集:
    数据集:Download left color images of object data set (12 GB)
    标注文件:Download training labels of object data set (5 MB)
  • 创建VOC2007文件夹,在文件夹下创建三个文件夹,命名如下:
    这里写图片描述
    JPEGImages文件夹用来存放所有数据集,Annotations文件夹用于放标注信息,在ImageSets文件夹内再创建三个文件夹,如下:
    这里写图片描述
  • 将下载的数据解压放在VOC2007下,图片放入JPEGImages里,标注信息解压后的label_2文件夹在VOC2007下,与Annotations等平行。

这就是所有的准备工作,接下来将kitti转换为pascal形式。

2. 转换数据集

2.1 kitti标注信息说明

kitti数据集中标注信息是存放在txt文本中的,包含如下信息:

Car 0.00 0 -1.67 642.24 178.50 680.14 208.68 1.38 1.49 3.32 2.41 1.66 34.98 -1.60
Car 0.00 0 -1.75 685.77 178.12 767.02 235.21 1.50 1.62 3.89 3.27 1.67 21.18 -1.60

这里写图片描述
根据上图,需要使用的只有类别‘Car’和物体外框的坐标‘387.63 181.54 423.81 203.12’,其余的字段都可以忽略。
我们分三步转换数据:

2.2 转换kitti类别

我忽略了’DontCare’和’Misc’类,也忽略了’Cyclist’类,因为图片中这一类过于小,标注信息也不准确,肉眼都难以分辨。我还合并’Person_sitting’和’Pedestrian’统一为’Pedestrian’。你可以根据自己需求修改。修改后可以看到txt文件里的内容已经变化。

#!/usr/bin/env python  
# -*- coding: UTF-8 -*-  

# modify_annotations_txt.py  
import glob  
import string  

txt_list = glob.glob('./label_2/*.txt') # 存储Labels文件夹所有txt文件路径  
def show_category(txt_list):  
    category_list= []  
    for item in txt_list:  
        try:  
            with open(item) as tdf:  
                for each_line in tdf:  
                    labeldata = each_line.strip().split(' ') # 去掉前后多余的字符并把其分开  
                    category_list.append(labeldata[0]) # 只要第一个字段,即类别  
        except IOError as ioerr:  
            print('File error:'+str(ioerr))  
    print(set(category_list)) # 输出集合  

def merge(line):  
    each_line=''  
    for i in range(len(line)):  
        if i!= (len(line)-1):  
            each_line=each_line+line[i]+' '  
        else:  
            each_line=each_line+line[i] # 最后一条字段后面不加空格  
    each_line=each_line+'\n'  
    return (each_line)  

print('before modify categories are:\n')  
show_category(txt_list)  

for item in txt_list:  
    new_txt=[]  
    try:  
        with open(item, 'r') as r_tdf:  
            for each_line in r_tdf:  
                labeldata = each_line.strip().split(' ')

                
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值