MSRA-TD5000数据集使用详解

中文检测的数据集,目前最火的应该是清华的CTW,https://ctwdataset.github.io/ 但是它的数据集只存储在微云和google driver,微云空间受限不能完全保存,所以下载的时候很蛋疼。我这边就挑了一个相对较小的数据集——MSRA TD5000,这个数据集支持中英文的倾斜文本检测。

详情参考MSRA的官方地址:http://www.iapr-tc11.org/mediawiki/index.php/MSRA_Text_Detection_500_Database_(MSRA-TD500)

里面的内容为图片和label,这里的label表示方法很蛋疼,是RBOX风格的,即

index, defficult label, x, y, width, height, theta

这里这个theta不好理解,其实它是弧度...

弧度就是角度的一种度量方式,是用弧长与半径的比来计算。因此0表示0度,π表示180度,π/2表示90度。

在python中,可以通过math.radius()来做角度和弧度的变换。

print(math.radians(90)) # 1.5707963267948966
print(math.radians(180)) # 3.141592653589793
print(math.radians(360)) # 6.283185307179586

一般的深度学习算法,接收的矩形框都是QUAD风格的,即:

x1,y1,x2,y2,x3,y3,x4,y4,text

因此我这边通过Python代码进行了坐标的变换:

def rotate(angle, x, y):
    """
    基于原点的弧度旋转

    :param angle:   弧度
    :param x:       x
    :param y:       y
    :return:
    """
    rotatex = math.cos(angle) * x - math.sin(angle) * y
    rotatey = math.cos(angle) * y + math.sin(angle) * x
    return rotatex, rotatey

def xy_rorate(theta, x, y, centerx, centery):
    """
    针对中心点进行旋转

    :param theta:
    :param x:
    :param y:
    :param centerx:
    :param centery:
    :return:
    """
    r_x, r_y = rotate(theta, x - centerx, y - centery)
    return centerx+r_x, centery+r_y

def rec_rotate(x, y, width, height, theta):
    """
    传入矩形的x,y和宽度高度,弧度,转成QUAD格式
    :param x:
    :param y:
    :param width:
    :param height:
    :param theta:
    :return:
    """
    centerx = x + width / 2
    centery = y + height / 2

    x1, y1 = xy_rorate(theta, x, y, centerx, centery)
    x2, y2 = xy_rorate(theta, x+width, y, centerx, centery)
    x3, y3 = xy_rorate(theta, x, y+height, centerx, centery)
    x4, y4 = xy_rorate(theta, x+width, y+height, centerx, centery)

    return x1, y1, x2, y2, x3, y3, x4, y4

再重新写回txt文本里面就可以了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏计算机视觉

Python中plt.plot图像保存有白边,CV2.polyline,fillpoly的参数问题,图像保存颜色发生异常

Python中,如果你遇到了PIL图像保存有白边,CV2.polyline,fillpoly,参数问题,图像保存颜色发生异常这几个问题,这篇文章就能够解决你的疑...

3572
来自专栏xingoo, 一个梦想做发明家的程序员

布线问题-分支限界法

问题描述:   印刷电路板不限区域划分成n*m个方格阵列。如下图所示 ?   精确的电路布线问题要求确定连接方格a的中点,到连接方格b的中点的最短布线方案。  ...

22410
来自专栏人工智能LeadAI

使用TensorFlow实现手写识别(Softmax)

准备工作 由于将TensorFlow安装到了Conda的tensorflow环境,虽然可以用Jupyter notebook打开,但是没有提示,写代码不方便,所...

4035
来自专栏北京马哥教育

十分钟入门 Python 绘图库 Matplotlib 入门教程

Matplotlib是一个Python语言的2D绘图库,它支持各种平台,并且功能强大,能够轻易绘制出各种专业的图像。本文是对它的一个入门教程。

1260
来自专栏PaddlePaddle

【序列到序列学习】带外部记忆机制的神经机器翻译

生成古诗词 序列到序列学习实现两个甚至是多个不定长模型之间的映射,有着广泛的应用,包括:机器翻译、智能对话与问答、广告创意语料生成、自动编码(如金融画像编码)...

3424
来自专栏数据结构与算法

P1032 字串变换

题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则):      A1 -> B1      A2 -> B2 规则的含义为:在 A$中的子...

3446
来自专栏人工智能

如何使用 scikit-learn 为机器学习准备文本数据

文本数据需要特殊处理,然后才能开始将其用于预测建模。

9348
来自专栏闪电gogogo的专栏

tensorflow

3561
来自专栏北京马哥教育

Python 绘图库 Matplotlib 入门教程

Matplotlib是一个Python语言的2D绘图库,它支持各种平台,并且功能强大,能够轻易绘制出各种专业的图像。本文是对它的一个入门教程。

1471
来自专栏Python专栏

Python | 21行轻松搞定拼写检查器

链接:http://blog.csdn.net/Pwiling/article/details/50573650

2093

扫码关注云+社区

领取腾讯云代金券