【CVPR 2020】ContourNet 论文学习笔记 | 深度学习训练

文章来源 | 恒源云(专注人工智能/深度学习GPU免费加速平台,官方体验网址:https://gpushare.com

原文地址 | 【CVPR 2020】ContourNet 论文学习笔记 (学霸季奖励计划)

一、背景

虽然ocr发展了很多年,也有了非常不错的表现,但在场景文本识别领域仍然有很多挑战:
1、真实场景下文本样式复杂、背景杂乱
2、图像质量参差不齐
3、文本方向各异甚至弯曲文本
4、文本过密、尺寸过长、过小
。。。

通常STR会分为:文本检测和文本识别两个问题,当然也有很多研究关注于end-to-end文本识别。

其中检测方面,2019年韩国NAVER Clova AI Research的Craft为我们提供了一个很优秀的模型,这种类型的检测模型属于自下而上的分割,即先分割再实例化为一个个文本,类似的还有DBNet、PSENet。然而我在实际应用时发现,对于多行密集文本场景,往往会将其识别为同一个文本区域,这给后续文本识别任务带来了不小的麻烦。

本文介绍的ContourNet是cvpr2020的一篇属于自上而下的文本检测方法,即先识别到文本框,再分割出文本mask区域。类似的还有maskRcnn、SPCNet等。这一思路我认为可以较好地解决文本区域实例化的问题。

本文将对这篇论文的主要思想做梳理,详细部分建议还是仔细查看源码和论文。

二、论文主要解决两个问题:

1、伪召回

2、对尺度变化剧烈的文本检测不准确

5c2be73f-73c7-4292-89f7-efc8cda17cb1-image.png

三、方案

1、利用9个点的adaptive-rpn 替换rpn(通常rpn在fpn的每个stage输出之后)

其中外边沿的8个点的外界矩形代表回归后的box,且中心点对最终的box做最后的矫正(若边沿超过中心点,如xmin>center_x,则xmin=center_x)

2、LOTM,负责解耦候选框中的水平和竖直方向的文本轮廓检测。

问题:lotm输出的两个方向的feature map 代表的是轮廓还是text的mask?
论文说的不够清楚,查看代码确认是轮廓而不是mask。因此监督训练时需要gt的轮廓。(将gt的segmentation先转成mask,然后再利用distance_transform_edt,计算计算图像中非零点到最近背景点(即0)的距离,再将距离>2的过滤掉剩下的就是gt mask的轮廓)

问题:LOTM的proposal features是利用adaptive-RPN得到的共享特征图还是利用最终two-stage的bbox重新做roi-pooling?
这里仅看框架图和论文,似乎bbox的结果没有被利用上,检查源码后发现,训练时用的同一个rpn bbox;预测时box branch的输出bbox被用于LOTM的roi-pooling。

3、后处理

伪代码见下图。

46ebf34f-8dc5-4f57-bae6-968886d082d1-image.png
查看源码确定细节:
先对hmap和vmap分别做1k和k1的max_pooling
将同时满足hmap和vmap大于threshod的位置至为1。看代码,感觉hmap和vmap都是轮廓的feature map而不是mask的。利用alpha-shape散点轮廓算法得到轮廓,然后根据最后得到的轮廓进行填充mask,再利用cv2提取边界,得到包含边界的最小四边形。

4、loss (对crop masks进行loss,而非整图)

c4af4f36-4c90-467c-a967-ae5d6d854bec-image.png

Reference:
https://cloud.tencent.com/developer/article/1652640
https://github.com/wangyuxin87/ContourNet
https://arxiv.org/abs/2004.04940

猜你喜欢

转载自blog.csdn.net/weixin_53977063/article/details/114324510
今日推荐