目录
将VOC数据格式转换为YOLO数据格式
1.VOC数据集格式
2.YOLO数据格式
3.将VOC数据格式转换为YOLO数据格式
【尊重原则,转载请注明出处】https://panjinquan.blog.csdn.net/article/details/127879904
Pascal VOC数据集下载地址:The PASCAL Visual Object Classes Homepage
数据集下载后解压得到一个名为VOCdevkit的文件夹,该文件夹结构如下:
对于目前检测任务,主要用到JPEGImages和Annotations;其中JPEGImages文件夹存放图片,而Annotations下放的是标注框的信息,格式为xml; Annotations文件夹中存放的是xml格式的标签文件,每一个xml文件都对应于JPEGImages文件夹中的一张图片,包含了图片的标注信息,如图片的名称,图片中object的类别及其bounding box坐标。
xml样例如下:
widerface
000001.jpg
353
500
3
0
xm文件中,字段object是物体位置信息,包含了物体名称name,拍摄角度pose,是否截断truncated,难以识别difficult,object对应的bounding box信息 bndbox,格式为[xmin,ymin,xmax,ymax]
YOLO系列数据格式都一样的,一张图片对应一个txt文本,内容格式为:[id x_center y_center w h],且都是标准化(0~1之间)后的值。
为了方便大家使用,现在已经打包发布了,请使用pip安装即可使用
- pybaseutils工具源码: https://github.com/PanJinquan/base-utils
- 安装:pip install pybaseutils
使用方法特别特别简单,填写好数据data_root和输出路径out_text_dir即可,
特别注意:数据路径只需要保证有JPEGImages和Annotations即可,其余ImageSets和SegmentationClass这些都可以不需要
if __name__ == "__main__":
from pybaseutils.maker import convert_voc2yolo
# 定义类别数
class_name = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat",
"chair", "cow", "diningtable", "dog", "horse", "motorbike", "person",
"pottedplant", "sheep", "sofa", "train", "tvmonitor"]
# VOC数据目录
data_root = "/path/to/VOC2007"
# 保存输出yolo格式数据目录
out_text_dir = os.path.join(data_root, "labels")
# 开始转换,vis=True进行可视化
convert_voc2yolo.convert_voc2yolo(data_root, out_text_dir, class_name=class_name, vis=True)
可视化效果如下:
如果你想挑选其中几个类别进行训练,比如筛选含有["car", "dog"]的数据,其余的类别数据不需要,则修改class_name即可,如
if __name__ == "__main__":
from pybaseutils.maker import convert_voc2yolo
# 定义类别数
class_name = ["car", "dog"]
# VOC数据目录
data_root = "/path/to/VOC2007"
# 保存输出yolo格式数据目录
out_text_dir = os.path.join(data_root, "labels")
# 开始转换,vis=True进行可视化
convert_voc2yolo.convert_voc2yolo(data_root, out_text_dir, class_name=class_name, vis=True)