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也测试了下,结果也是差不多。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

CVPR 2018 | 商汤科技提出GeoNet:用无监督学习感知3D场景几何

选自arXiv 作者:Zhichao Yin等 机器之心编译 参与:Panda 有效的无监督学习方法能缓解对有标注数据的需求,无监督学习技术与视觉感知领域的结合...

3003
来自专栏人工智能头条

格灵深瞳:人脸识别最新进展以及工业级大规模人脸识别实践探讨 | 公开课笔记

8203
来自专栏大数据智能实战

机器视觉的情感判断实践(From Pixels to Sentiment: Fine-tuning CNNs for Visual Sentiment Prediction)

  看到了2017年的一篇文章From Pixels to Sentiment: Fine-tuning CNNs for Visual Sentiment P...

24910
来自专栏大数据文摘

论文Express | 美图云+中科院AAAI2018:视频语义理解的类脑智能

1132
来自专栏新智元

首次超越LSTM : Facebook 门卷积网络新模型能否取代递归模型?

【新智元导读】Facebook 在尝试使用“门卷积网络”的方法来为语言建模,最近,他们首次取得了超过递归神经网络方法建模方法的性能表现,性能了超越目前被认为是...

2875
来自专栏机器之心

深度 | David Silver全面解读深度强化学习:从基础概念到AlphaGo

机器之心原创 作者:Duke Lee 参与:马亚雄、吴攀、吴沁桐、Arac Wu 强化学习在与之相关的研究者中变得越来越流行,尤其是在 DeepMind 被 G...

2818
来自专栏新智元

【ACL2018】腾讯AI Lab入选5篇论文解读:神经机器翻译、情感分类等

【新智元导读】第 56 届计算语言学协会年会ACL 2018 将于当地时间7 月15-20 日在澳大利亚墨尔本举办。腾讯AI Lab 今年共有 5 篇论文入选,...

1000
来自专栏AI科技评论

动态 | 邀请函or挑战书?OpenAI喊你来研究7个AI未解问题啦

AI 科技评论按:OpenAI 昨日发布一篇博客,介绍了 7 个自己近期在研究但尚未解决的问题,希望邀请到外部的研究者一同参与研究、做出进展。OpenAI 尤其...

3449
来自专栏AI研习社

用深度学习技术,让你的眼睛可以控制电脑

你有没有过这样的经历,当你在吃东西的时候,发现自己没有多余的手来调节电影的音量,或者调节屏幕的亮度?在本文,我们将看到如何使用最先进的人工智能技术来解决这个问题...

1195
来自专栏AI科技大本营的专栏

DeepMind到底是如何教AI玩游戏的?这篇在Medium上获得1700个赞的文章,把里面的原理讲清楚了

一篇顶十篇!想入门强化学习,专心研读这篇对DeepMind经典论文的解析就够了 作者 | Aman Agarwal 编译 | Shawn 编辑 | 鸽子、焦燕...

4256

扫码关注云+社区

领取腾讯云代金券