MSRA-TD5000數據集使用詳解
阿新 • • 發佈:2018-09-03
return 方式 angle mat txt文本 hub 分享 turn 因此
中文檢測的數據集,目前最火的應該是清華的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文本裏面就可以了。
MSRA-TD5000數據集使用詳解