mmdetection入坑日记(二)数据集制作

可以写一个制作数据集的脚本,每次跑起来就比较方便了

coco数据集

官网上给出的格式如下:

'images': [
    {
        'file_name': 'COCO_val2014_000000001268.jpg',
        'height': 427,
        'width': 640,
        'id': 1268
    },
    ...
],

'annotations': [
    {
        'segmentation': [[192.81,
            247.09,
            ...
            219.03,
            249.06]],  # if you have mask labels
        'area': 1035.749,
        'iscrowd': 0,
        'image_id': 1268,
        'bbox': [192.81, 224.8, 74.73, 33.43],
        'category_id': 16,
        'id': 42986
    },
    ...
],

'categories': [
    {'id': 0, 'name': 'car'},
 ]
label-voc数据集(.xml)
<annotation>
	<folder>VOC2012</folder>  #表明图片来源
	<filename>2007_000027.jpg</filename> #图片名称
	<source>                  #图片来源相关信息
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
	</source>
	<size>     #图像尺寸
		<width>486</width>
		<height>500</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented> #是否用于分割
	<object>  #包含的物体
		<name>person</name> #物体类别
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>  #物体的bbox
			<xmin>174</xmin>
			<ymin>101</ymin>
			<xmax>349</xmax>
			<ymax>351</ymax>
		</bndbox>
		<part> #物体的头
			<name>head</name>
			<bndbox>
				<xmin>169</xmin>
				<ymin>104</ymin>
				<xmax>209</xmax>
				<ymax>146</ymax>
			</bndbox>
		</part>
		<part>   #物体的手
			<name>hand</name>
			<bndbox>
				<xmin>278</xmin>
				<ymin>210</ymin>
				<xmax>297</xmax>
				<ymax>233</ymax>
			</bndbox>
		</part>
		<part>
			<name>foot</name>
			<bndbox>
				<xmin>273</xmin>
				<ymin>333</ymin>
				<xmax>297</xmax>
				<ymax>354</ymax>
			</bndbox>
		</part>
		<part>
			<name>foot</name>
			<bndbox>
				<xmin>319</xmin>
				<ymin>307</ymin>
				<xmax>340</xmax>
				<ymax>326</ymax>
			</bndbox>
		</part>
	</object>
</annotation>

label-yolo数据集(.txt)
class_id center_x center_y bbox_weight bbox_height
...
class_id center_x center_y bbox_weight bbox_height
数据集制作的时候一定注意按照 train:val 的 rate 进行 random 来分数据集。
def split_train_val(txt_dir, split_rate=0.5):
    txts = [f for f in os.listdir(txt_dir) if f.endswith(".txt")]  # xml的格式就改成.xml
    txts_num = len(txts)

    train_idx = random.sample(range(txts_num), int(txts_num * split_rate))

    train_pics = []
    val_pics = []
    for i, txt in enumerate(txts):
        if i in train_idx:
            train_pics.append(txt.replace(".txt", ".jpg"))
        else:
            val_pics.append(txt.replace(".txt", ".jpg"))

    return train_pics, val_pics
修改config
classes = ('person', 'bicycle', 'car')
data = dict(
    train=dict(classes=classes),
    val=dict(classes=classes),
    test=dict(classes=classes))

或者

classes = 'path/to/classes.txt'
data = dict(
    train=dict(classes=classes),
    val=dict(classes=classes),
    test=dict(classes=classes))

修改 config/_base/dataset/coco_detect.py 中的root目录,以及train,val图片目录,以及json目录
这样数据集就制作好了,就可以进行训练了。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读