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为四个点的横坐标中最大的,然后下取整。纵坐标同理。
最终转换完成是图示蓝色框效果。

存在一个缺陷就是实际标注应该是红色框更加准确一些,我这样简单粗暴地取了最值会导致边框会比文字稍大,不过我的数据集大部分是TB商品图,水平文字占大多数。
如果是官方的icdar2015街景什么的倾斜文字比较多的情况可能需要转换成带倾斜角度的VOC格式,那个就是h, w, theta等;日后有需要再研究。
三、代码
路径要改成自己的存放图像和标注文件的路径
#! /usr/bin/python
# coding:utf-8
import os, sys
import glob
from PIL impo

本文介绍了如何将ICDAR2015数据集转换为VOC格式,用于OCR项目的训练。内容包括原数据格式、目标数据格式的描述,转换过程详解,以及转换代码展示。转换过程中,由于ICDAR的标注框可以任意方向,转换至VOC的横平竖直格式时,可能会导致边框略微大于文字。最后展示了转换后的效果。
最低0.47元/天 解锁文章
3883

被折叠的 条评论
为什么被折叠?



