zoukankan      html  css  js  c++  java
  • 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 
        :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文本里面就可以了。

  • 相关阅读:
    Task 4.5 求二维数组中的最大连通子数组之和
    Task 6.4 冲刺Two之站立会议4
    《程序员开发心理学》阅读笔记二
    第二次站立会议9
    第二次站立会议8
    第二次站立会议7
    第二次站立会议6
    第二次站立会议5
    第二次站立会议4
    第二次站立会议3
  • 原文地址:https://www.cnblogs.com/xing901022/p/9579935.html
Copyright © 2011-2022 走看看