最近在做作业批改场景的OCR相关算法研发工作,打算梳理一下文本检测的相关知识,也欢迎大家留言讨论。
目前主流的基于深度学习的目标检测方法大体分为两类:one-stage和two-stage:
1.Two stage目标检测算法
先进行区域生成(region proposal,RP)(一个有可能包含待检物体的预选框),再通过卷积神经网络进行样本分类。(间接回归)
任务:特征提取—>生成RP—>分类/定位回归。
常见的two stage目标检测算法有:R-CNN、Fast R-CNN、Faster R-CNN、R-FCN、CTPN等。
2.One stage目标检测算法
不用RP,直接在网络中提取特征来预测物体分类和位置。(直接回归)
任务:特征提取—>分类/定位回归。
常见的one stage目标检测算法有:YOLO系列、SSD、RetinaNet、TextBoxes++等。
其中R-CNN系列和SSD系列成为两类变体繁多的流派,很多特定场景的检测模型都是在这两类方法上进行改进。而这两类方法的共同点就是anchor-based,在检测过程中都需要先生成anchor,基于这些先验区域分别做分类和位置回归
接下来按照发展顺序梳理这些方法:
Two-Stage系列
R-CNN
R-CNN 利用候选区域方法创建了约 2000 个 ROI。这些区域被转换为固定大小的图像,并分别馈送到卷积神经网络中。该网络架构后面会跟几个全连接层,以实现目标分类并提炼边界框。
![8efb8bbf44194ae1788bf5b293f10027.png](https://i-blog.csdnimg.cn/blog_migrate/4e3e0854af3371c9fcded65500865b25.png)
ROIs = region_proposal(image)
for ROI in ROIs
patch = get_patch(image, ROI)
results = detector(patch)
Fast R-CNN
Fast R-CNN 使用特征提取器(CNN)先提取整个图像的特征,而不是从头开始对每个图像块提取多次。然后,我们可以将创建候选区域的方法直接应用到提取到的特征图上。例如,Fast R-CNN 选择了 VGG16 中的卷积层 conv5 来生成 ROI,这些关注区域随后会结合对应的特征图以裁剪为特征图块,并用于目标检测任务中。我们使用 ROI 池化将特征图块转换为固定的大小,并馈送到全连接层进行分类和定位。因为 Fast-RCNN 不会重复提取特征,因此它能显著地减少处理时间。
![9ce927fe72ee4d201e9e0dc74f522014.png](https://i-blog.csdnimg.cn/blog_migrate/6adfcc392bb1c6d09ed4e7454817ca0a.png)
feature_maps = process(image)
ROIs = region_proposal(feature_maps)
for ROI in ROIs
patch = roi_pooling(feature_maps, ROI)
results = detector2(patch)
Faster R-CNN
Faster R-CNN 采用与 Fast R-CNN 相同的设计,只是它用内部深层网络代替了候选区域方法。新的候选区域网络(RPN)在生成 ROI 时效率更高,并且以每幅图像 10 毫秒的速度运行。
![30728447d62cbae928af1504e71878a1.png](https://i-blog.csdnimg.cn/blog_migrate/d0edf3442022c1a32b79e35c79b6f809.png)
feature_maps = process(image)
ROIs = region_proposal(feature_maps) # Expensive!
for ROI in ROIs
patch = roi_pooling(feature_maps, ROI)
results = detector2(patch)
针对目标检测多尺度问题,可以引入特征金字塔网络FPN来改进,将底层和高层的特征融合,再利用融合后的特征进行分类和定位。
CTPN
CTPN是在Faster R-CNN基础上针对文本检测的实际需求进行改进,关键点如下:
- 采用垂直anchor回归机制,检测小尺度的文本候选框
- 引入双向LSTM提取文本序列的上下文信息,尽可能减少误检
- 使用基于图的文本行构造算法,将得到的一个一个的文本段合并成文本行
原版CTPN主要用于检测水平文本,加入角度检测模块后可以检测一定角度的倾斜文本
One-Stage 系列
Yolo
YOLO将物体框的选择和识别进行了融合,一步输出:
1. 把缩放成统一大小的图片分割成S*S的单元格。
2. 每个单元格输出B个矩形框(冗余设计),包含框的位置信息(x, y, w, h)与物体的Confidence。
3. 每个单元格再输出C个类别的条件概率P(Class|Object)。
4. 最终的输出层应有S*S*(B*5+C)个单元。(论文中,S = 7, B = 2, C = 20)
这个系列的特点就是快SSD
YOLO在7*7的框架下识别物体,遇到大量的小物体时,难以处理。
SSD则在不同层级的feature map下进行识别,能够覆盖更多的范围。
Key idea:
- 采用多尺度特征图用于检测
- 与Yolo最后采用全连接层不同,SSD直接采用卷积对不同的特征图来进行提取检测结果
- 借鉴了Faster R-CNN中anchor的理念,每个单元设置尺度或者长宽比不同的先验框
RetinaNet
- 提出了一种新的loss,称为focal loss,用于解决one stage目标检测过程中正负样本数量差距太大的情况
-
- 基于FPN提出了一个新的one stage目标检测框架,称为RetinaNet,目前在精度和速度方面达到了较好的平衡
- Backbone网络使用的是ResNet+FPN,其中ResNet的
层到
层用来构建特征金字塔,在特征金字塔的每一层后面都会连接一个分类子网络和一个回归子网络,子网络的结构均为全卷积网络FCN。
TextBoxes与TextBoxes++
针对文字检测场景,在SSD的基础上进行改进:
- 修改了default box的apect ratio,分别为[1 2 3 5 7 10],目的是适应文本行长度比较长,宽度比较短的特性,也就是说现在的default box是长条形
- 提出了text-box层,修改classifier卷积核的大小为
,而SSD中卷积核的大小为
,这样做的目的是更适合文本行的检测,避免引入非文本噪声
- 提出了端到端的训练框架.在训练的时候,输入图像由单尺度变成了多尺度
- 增加文本识别来提高文本行检测的效果
Anchor-free 系列
EAST and EAST++
Pipeline描述结合了DenseBox和Unet网络中的特性,具体流程如下:
- 先用一个通用的网络(论文中采用的是Pvanet,实际在使用的时候可以采用VGG16,Resnet等)作为base net ,用于特征提取
- 基于上述主干特征提取网络,抽取不同level的feature map(它们的尺寸分别是inuput-image的
),这样可以得到不同尺度的特征图.目的是解决文本行尺度变换剧烈的问题,ealy stage可用于预测小的文本行,late-stage可用于预测大的文本行.
- 特征合并层,将抽取的特征进行merge.这里合并的规则采用了U-net的方法,合并规则:从特征提取网络的顶部特征按照相应的规则向下进行合并,这里描述可能不太好理解,具体参见下述的网络结构图
- 网络输出层,包含文本得分和文本形状.根据不同文本形状(可分为RBOX和QUAD),输出也各不相同,具体参看网络结构图
![c6ebdecdcdd6f3cdc4fdfbb60645aac9.png](https://i-blog.csdnimg.cn/blog_migrate/fd949e1fb126f5c8d1b6bca5c8d3332c.jpeg)
- 全卷积网络(FCN)和非极大值抑制(NMS),消除中间过程冗余,减少检测时间.
- 该方法即可以检测单词级别,又可以检测文本行级别.检测的形状可以为任意形状的四边形:即可以是旋转矩形(下图中绿色的框),也可以是普通四边形(下图中蓝色的框)).
- 采用了Locality-Aware NMS来对生成的几何进行过滤
EAST在检测长文本的时候效果表现比较差,这主要是由网络的感受野决定的;而EAST++在此处有较好地改善。详见https://github.com/huoyijie/AdvancedEAST
Anchor-point detector
DenseBox
Lichao Huang, Yi Yang, Yafeng Deng, and Yinan Yu. Densebox: Unifying landmark localization with end to end object detection. arXiv preprint arXiv:1509.04874, 2015.
FSAF
Chenchen Zhu, Yihui He, and Marios Savvides. Feature selective anchor-free module for single-shot object detection. In The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2019.
Fcos
Zhi Tian, Chunhua Shen, Hao Chen, and Tong He. Fcos: Fully convolutional one-stage object detection. In Proceedings of the IEEE International Conference on Computer Vision, 2019.
SAPD
Soft Anchor-Point Detector
Key-point detector
CornerNet
Hei Law and Jia Deng. Cornernet: Detecting objects as paired keypoints. In Proceedings of the European Conference on Computer Vision (ECCV), pages 734–750, 2018.
CenterNet
Kaiwen Duan, Song Bai, Lingxi Xie, Honggang Qi, Qingming Huang, and Qi Tian. Centernet: Object detection with keypoint triplets. In Proceedings of the IEEE International Conference on Computer Vision, 2019.