txt格式
训练tensorflow版的yolov3需要的数据格式是txt的,具体要求如下
xxx/xxx.jpg 18.19,6.32,424.13,421.83,20 323.86,2.65,640.0,421.94,20
xxx/xxx.jpg 48,240,195,371,11 8,12,352,498,14
image_path x_min, y_min, x_max, y_max, class_id x_min, y_min ,…, class_id
make sure that x_max < width and y_max < height
针对tensorflow-yolov3,它的class_id 是从0开始到类别数-1. 而我自己的数据集的category_id部分是1,2,3,4,8,9,10
所以我还在代码中添加boundingBox所属类别部分 做了如下修改
id = boundingBox_per['category_id']
if(id in [8,9,10]):
id = id-4
else:
id = id-1
然后class.name 部分为1,2,3,4,8,9,10
环境
需要的环境是 python3
需要修改的地方:第10.11.12行
filename = 'instances_val.json'#修改成你的json文件名字
jsondir = '/home/chenbolin/data2/six/annotations/instances_val.json'#修改成你的json文件路径
img_root = '/home/chenbolin/data2/six/val/' #修改成你的图片路径f = open(jsondir,encoding='utf-8')
代码
我们的数据集是coco格式的,也就是要把json文件转成txt格式的,代码如下:
# coding=utf-8import json
import numpy as np
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString
import os
# -----------------
# txt数据格式:path,xmin,ymin,xmax,ymax
# 每一行表示一个image
# --------------------
filename = 'instances_val.json'#修改成你的json文件名字
jsondir =</