1. 程式人生 > >EAST 自然場景文字檢測實踐(EAST: An Efficient and Accurate Scene Text Detector)

EAST 自然場景文字檢測實踐(EAST: An Efficient and Accurate Scene Text Detector)

       自然場景文字是影象高層語義的一種重要載體,近些年自然場景影象中的文字檢測與識別技術越來越引起人們的重視。特別是近年來ICDAR的歷界比賽,更是逐漸將這一領域的score不斷提升。如http://rrc.cvc.uab.es/?ch=4&com=evaluation&task=1&gtv=1這個主頁上看到列出的result結果,都有達到90%多的。此外,一些大公司的AI都提供了這樣的介面,如百度AI的SDK上已經有這一塊,看起來非常猛的樣子。

      自然場景文字檢測是影象處理的核心模組,也是一直想要接觸的一個方面。剛好看到國內的曠視今年在CVPR2017的一篇文章:EAST: An Efficient and Accurate Scene Text Detector。而且有開放的程式碼,學習和測試了下。

       題目說的是比較高效,它的高效主要體現在對一些過程的消除,其架構就是下圖中對應的E部分,跟上面的比起來的確少了比較多的過程。這與去年經典的CTPN架構類似。不過CTPN只支援水平方向,而EAST在論文中指出是可以支援多方向文字的定位的。


論文采用的架構如下:


這個架構的細節應該包括幾個部分:

(1) The algorithm follows the general design ofDenseBox [9], in which an image is fed into the FCN andmultiple channels of pixel-level text score map and geometryare generated. 從論文中這句話可以看出,參考了DenseBox的架構,採用FCN網路,同時在多個通道中進行特徵層的輸出與幾何的生成。

(2) 文中採用了兩種幾何物件,rotated box (RBOX) and quadrangle (QUAD),通過這兩種,可以實現對多方向場景文字的檢測。

(3) 採用了Locality-Aware NMS來對生成的幾何進行過濾,這也是程式碼中lanms(C++)程式碼的因素。

模型的實現原始碼如下:

def model(images, weight_decay=1e-5, is_training=True):
    '''
    define the model, we use slim's implemention of resnet
    '''
    images = mean_image_subtraction(images)

    with slim.arg_scope(resnet_v1.resnet_arg_scope(weight_decay=weight_decay)):
        logits, end_points = resnet_v1.resnet_v1_50(images, is_training=is_training, scope='resnet_v1_50')

    with tf.variable_scope('feature_fusion', values=[end_points.values]):
        batch_norm_params = {
        'decay': 0.997,
        'epsilon': 1e-5,
        'scale': True,
        'is_training': is_training
        }
        with slim.arg_scope([slim.conv2d],
                            activation_fn=tf.nn.relu,
                            normalizer_fn=slim.batch_norm,
                            normalizer_params=batch_norm_params,
                            weights_regularizer=slim.l2_regularizer(weight_decay)):
            f = [end_points['pool5'], end_points['pool4'],
                 end_points['pool3'], end_points['pool2']]
            for i in range(4):
                print('Shape of f_{} {}'.format(i, f[i].shape))
            g = [None, None, None, None]
            h = [None, None, None, None]
            num_outputs = [None, 128, 64, 32]
            for i in range(4):
                if i == 0:
                    h[i] = f[i]
                else:
                    c1_1 = slim.conv2d(tf.concat([g[i-1], f[i]], axis=-1), num_outputs[i], 1)
                    h[i] = slim.conv2d(c1_1, num_outputs[i], 3)
                if i <= 2:
                    g[i] = unpool(h[i])
                else:
                    g[i] = slim.conv2d(h[i], num_outputs[i], 3)
                print('Shape of h_{} {}, g_{} {}'.format(i, h[i].shape, i, g[i].shape))

            # here we use a slightly different way for regression part,
            # we first use a sigmoid to limit the regression range, and also
            # this is do with the angle map
            F_score = slim.conv2d(g[3], 1, 1, activation_fn=tf.nn.sigmoid, normalizer_fn=None)
            # 4 channel of axis aligned bbox and 1 channel rotation angle
            geo_map = slim.conv2d(g[3], 4, 1, activation_fn=tf.nn.sigmoid, normalizer_fn=None) * FLAGS.text_scale
            angle_map = (slim.conv2d(g[3], 1, 1, activation_fn=tf.nn.sigmoid, normalizer_fn=None) - 0.5) * np.pi/2 # angle is between [-45, 45]
            F_geometry = tf.concat([geo_map, angle_map], axis=-1)

    return F_score, F_geometry

可以看出,幾何圖的生成過程。

實驗部分:

由於該原始碼已經公佈,進行了測試,效果如下:

(1) ICDAR相關的資料集測試,有相當部分的效果還是可以的,這也是文中所說能夠達到80%的,也有一定的可信之處。


(2) 一些公開網際網路的資料集:這個結果就有些可憐了,不過主要採用了文中提供的預訓練資料集,可能訓練資料集不包括這些吧。




可見,場景文字識別檢測還有很長的一段路要走。不過最後一張圖實在過於複雜,包括CTPN的效果也都是非常一般。利用百度識別SDK也測試了下,結果也是差不多。


相關推薦

EAST 自然場景文字檢測實踐(EAST: An Efficient and Accurate Scene Text Detector)

       自然場景文字是影象高層語義的一種重要載體,近些年自然場景影象中的文字檢測與識別技術越來越引起人們的重視。特別是近年來ICDAR的歷界比賽,更是逐漸將這一領域的score不斷提升。如http://rrc.cvc.uab.es/?ch=4&com=eval

OCR EAST: An Efficient and Accurate Scene Text Detector 自然場景下的文字識別演算法詳解

最近研究OCR,有篇比較好的演算法文章,《EAST: An Efficient and Accurate Scene Text Detector》,該文發表在2017年CVPR上。程式碼地址:https://github.com/argman/EAST ,這是原作者參與的一份tensorfl

EAST: An Efficient and Accurate Scene Text Detector

EAST: An Efficient and Accurate Scene Text Detector EAST:高效準確的場景文字檢測器 【Abstract】 先前的場景文字檢測方法已經在各種基準測試中取得了很好的成果。然而,在處理具有挑戰性的情況時,即使配備了深度神經網路模型,它

【論文閱讀】EAST: An Efficient and Accurate Scene Text Detector

任務:文字檢測(可以檢測傾斜文字) contributions 提出了End-to-End 的全卷積網路來解決文字檢測問題 可以根據特定的應用生成quardrangles或者是rotated boxes兩種格式的幾何標註 改進了stat

python+opencv+EAST自然場景文字檢測(轉)

mark一下,感謝作者分享! https://blog.csdn.net/luolan9611/article/details/81914251 英文原文連結:https://www.pyimagesearch.

【OCR技術系列之五】自然場景文字檢測技術綜述(CTPN, SegLink, EAST

文字識別分為兩個具體步驟:文字的檢測和文字的識別,兩者缺一不可,尤其是文字檢測,是識別的前提條件,若文字都找不到,那何談文字識別。今天我們首先來談一下當今流行的文字檢測技術有哪些。 文字檢測不是一件簡單的任務,尤其是複雜場景下的文字檢測,非常具有挑戰性。自然場景下的文字檢測有如下幾個難點:

選字驗證碼破解思路:CTPN - 自然場景文字檢測

前言     最近準備極驗3代,選字驗證碼的破解。之前用CNN實現端到端的字元型驗證碼破解已滿足不了需求了,我以為破解選字驗證碼關鍵步驟有三:1.圖片文字的識別;2.字元座標的識別;3.字序的識別。設計的技術有,圖片識別技術、特徵位置檢測和NLP處理。本文作為關鍵技術之一,用

自然場景文字檢測CTPN原理詳解

自然場景文字檢測CTPN流程詳解 標籤: 文字檢測 CTPN tensorflow 說明: 借鑑了網上很多資源,如有侵權,請聯絡本人刪除! 摘要 對於自然場景中的文字檢測,難點是:字型多變、遮擋、不規則變化等,其實對於實際的應用場景,針對自己的需求可以採用通用的目標檢測框架(fa

自然場景文字檢測】PSENet: Shape Robust Text Detection with Progressive Scale Expansion Network

github:https://github.com/whai362/PSENet 論文:https://arxiv.org/abs/1806.02559    主要思想: 網路主要學習,Sn,Sn-1,.......,S1, 其中Sn佔文字區域100%, Sn-1佔文字區域

自然場景文字檢測

第一,用VGG16的前5個Conv stage(到conv5)得到feature map(W*H*C)第二,在Conv5的feature map的每個位置上取3*3*C的視窗的特徵,這些特徵將用於預測該位置k個anchor(anchor的定義和Faster RCNN類似)對應的類別資訊,位置資訊。第三,將每一

OpenCV自然場景文字檢測(附Python程式碼)

本文的opencv要求 OpenCV 3.4.2或者OpenCV 4。如果你沒有安裝的話,你可以使用下面的語句進行安裝: pip install opencv-python 我們首先要下載原始碼:之後我們下載模型,放入原始碼中,之後我們看一下目錄結構: 之後我們更新

自然場景文字處理論文整理 (5)Detecting Curve Text in the Wild: New Dataset and New Solution

這篇文章是在自然場景文字處理中針對彎曲問題做的非常好的一篇文章。後面打算先用這篇論文來做實驗。 paper:https://arxiv.org/abs/1712.02170 github:https://github.com/Yuliang-Liu/Curve-Text-Detect

【OCR技術系列之五】場景文字檢測技術綜述(CTPN, SegLink, EAST

文字識別分為兩個具體步驟:文字的檢測和文字的識別,兩者缺一不可,尤其是文字檢測,是識別的前提條件,若文字都找不到,那何談文字識別。今天我們首先來談一下當今流行的文字檢測技術有哪些。 文字檢測不是一件簡單的任務,尤其是複雜場景下的文字檢測,非常具有挑戰性。自然場景下的文字檢測有如下幾個難點: 文字存在多種分佈

文字檢測EAST

轉自:https://zhuanlan.zhihu.com/p/37504120論文題目:EAST: An Efficient and Accurate Scene Text Detector傳統的文字檢測方法和一些基於深度學習的文字檢測方法,大多是multi-stage,在

自然場景文字處理論文整理(1)Spatial Transformer Networks

paper:Spatial Transformer Networks 在Theano框架中,STN演算法已經被封裝成API,可以直接呼叫。tensorflow實現見文章最後。 1、空間變換器的結構: 這是一個可微分的模組,它在單個前向傳遞期間將空間變換應用於要素圖,其中變換以特

自然場景文字處理論文整理(2)STN-OCR

今天是進入公司實習的第三週了,在小組內負責的工作主要是和自然場景文字檢測相關的內容。這裡把看過的論文做一下翻譯和整理,也方便自己日後檢視。 Paper:STN-OCR: A single Neural Network for Text Detection and Text Recogn

自然場景文字處理論文整理 (4)PixelLink

paper:https://arxiv.org/abs/1801.01315v1 github:https://github.com/ZJULearning/pixel_link 摘要 大多數最先進的場景文字檢測演算法是基於深度學習的方法,其依賴於邊界框迴歸並且執行至少兩種預測

自然場景文字處理論文整理(3)Mask TextSpotter

這篇論文是2018年7月6號出來的,對於任意形狀的自然文字檢測識別效果非常好。 paper:https://arxiv.org/abs/1807.02242 目前無相關原始碼 1.摘要簡介 在本文中,我們提出了一個名為Mask TextSpotter的文字監視器,它可以檢測和

[深度學習]場景文字檢測與識別

目錄 背景 文字為什麼重要? 問題定義 那麼會有那些挑戰呢? 近期前沿和有代表性演算法 Holistic, Multi-Channel Prediction TextBoxes Rotation Proposals Corner Localization and

基於注意力模型和卷積迴圈神經網路的中文自然場景文字識別

 最近,在進行相關中文文字識別的工作,查閱了許多論文。最終決定參考谷歌的基於注意力機制的街景文字識別的論文:"Attention-based Extraction of Structured Information from Street View Imagery",並對官方原始碼進行修改