当前位置:   article > 正文

用自己的数据(kitti)训练测试faster rcnn(一)_自建kitti格式训练集

自建kitti格式训练集

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 e
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/116573
推荐阅读
相关标签
  

闽ICP备14008679号