ICDAR2015数据集转换为VOC
数据集格式转换 ICDAR->VOC
简介
在做一个OCR项目,训练CTPN需要VOC格式的数据集,用手里的ICDAR2015格式的数据集做了一个转换。数据集是我自己的,和官方的ICDAR2015数据集内容不一样但标注格式是一样的,且为了方便这里没有分训练数据和测试数据,转换后的数据也是train和test在一起的,用的时候再划分。
一、原数据和目标数据格式
原数据集,即icdar2015格式的文件结构如下。
icdar_c4_train_imgs存放了1000张图片(我训练用的图片一共1000张),txt_1000-存放了对应的1000个txt文件。
icdar的txt标注格式示例:
目标数据集,即本次要转换的VOC格式的文件结构如下。这里Annotations存放处理好的1000份xml文件。
转换后的xml标注文件示例
二、格式转换过程
转换流程:
将原图像移动到新目录->读取txt文件->写入xml
icdar标注格式:x1,y1,x2,y2,x3,y3,x4,y4,text
前面的8个float分别是标注框4个点的坐标。如图的gt1,gt2,gt3,gt4,假如原始标注是绿色框,那么要做的就是把它变成了横平竖直的框。因为这里我转换的是普通的不带旋转角度的VOC,标注只有xmin,xmax,ymin,ymax 4个数值,而icdar原始的标注框可以是任意方向的。因此需要对标注框的坐标做一个转换。
这里的转换方法是取xmin为四个点的横坐标中最小的,xmax为四个点的横坐标中最大的,然后下取整。纵坐标同理。
最终转换完成是图示蓝色框效果。
存在一个缺陷就是实际标注应该是红色框更加准确一些,我这样简单粗暴地取了最值会导致边框会比文字稍大,不过我的数据集大部