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 条评论
登录 后参与评论

相关文章

  • [Logstash-input-redis] 使用详解

    redis插件的完整配置 input { redis { batch_count => 1 #返回的事件数量,此属性仅在list模式下起...

    用户1154259
  • Express开发实例(1) —— Hello,world!

    Express是NodeJs开发中最常用的基础模块。NodeJs本身有Http模块,但是易用性并不好,因此有人在此基础上开发了Express模块。 什么是...

    用户1154259
  • 图解Tomcat类加载机制

      说到本篇的tomcat类加载机制,不得不说翻译学习tomcat的初衷。   之前实习的时候学习javaMelody的源码,但是它是一个Maven的项目,...

    用户1154259
  • 其实算法就这么点东西

    以笔试为目的的修炼都是耍流氓。但也许,我们就想当个好流氓。秋招已到,希望大家都能收货满意的offer。

    程序员小浩
  • 干货:ToB(SaaS)企业如何寻找可持续、可规模化、可盈利增长模式

    ? 来源 :SaaS随笔  ID:NotesOnSaaS ---- 一般而言,对2C的初创企业来说,在打磨好产品后就有机会迎来爆发式增长。但很多2B的企业会...

    腾讯SaaS加速器
  • 图灵机器人郭家:以语义技术为核心驱动力,让机器更好地理解世界

    导读:2017年12月26日,中国人工智能机器人CEO峰会在深圳举办。图灵机器人联合创始人郭家做了“AI之多模态语义”的主题分享。 12月26日,中国人工智能机...

    企鹅号小编
  • ES6基础语法之set

    十月梦想
  • CLOCs:3D目标检测多模态融合之Late-Fusion

    文章:CLOCs: Camera-LiDAR Object Candidates Fusion for 3D Object Detection 论文地址:在公众...

    计算机视觉
  • 十个令人震惊的人工智能应用之三(附视频)

    磐创AI
  • ICRA 2018展会开幕,从落地产品看「产学融合」的「共振」

    以上是去年ICRA 2017(IEEE International Conference on Robotics and Automation)会议上,AI科技...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券