ICDAR2015数据集转换为VOC

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ICDAR2015数据集转换为VOC

数据集格式转换 ICDAR->VOC


简介

在做一个OCR项目,训练CTPN需要VOC格式的数据集,用手里的ICDAR2015格式的数据集做了一个转换。数据集是我自己的,和官方的ICDAR2015数据集内容不一样但标注格式是一样的,且为了方便这里没有分训练数据和测试数据,转换后的数据也是train和test在一起的,用的时候再划分。


一、原数据和目标数据格式

原数据集,即icdar2015格式的文件结构如下。
icdar_c4_train_imgs存放了1000张图片(我训练用的图片一共1000张),txt_1000-存放了对应的1000个txt文件。
icdar文件结构
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值