【文本检测与识别白皮书】第三章 - 第三节:算法模型
3.1.3 常用的文本检测模型
R-CNN、Fast R-CNN、Faster R-CNN
1)R-CNN(CVPR 2014, TPAMI 2015)
2014 年论文《Rich feature hierarchies for accurate object detection and semantic segmentation Tech report》提出 R-CNN 模型,即 Regions with CNN features。这篇论文可以算是将 CNN 方法应用到目标检测问题上的开山之作。
R-CNN 的算法原理:
RCNN 算法分成四个步骤:
(1)获取输入图像
(2)提取大约 2000 个自下而上的候选区域
(3)使用大型卷积神经网络(CNN)计算每个建议的特征
(4)使用特定分类的线性支持向量机(SVM)对每个区域进行分类。
实验结果:
表 1 显示了 VOC 2010 数据集上的实验完整结果。实验将 R-CNN 方法与四个强 Baseline 进行了比较,其中包括 SegDPM,它将 DPM 检测器与语义分割系统的输出相结合,并使用额外的检测器间上下文和图像分类器重新排序。最密切的比较是与 Uijlings 等人研究的 UVA 系统,因为 R-CNN 的系统使用相同的区域候选算法。为了对区域进行分类,UVA 的方法构建了一个四级空间金字塔,并使用密集采样的 SIFT、扩展的 OpponentSIFT 和 RGBSIFT 描述符对其进行填充,每个向量使用 4000 字的码本进行量化。采用直方图相交核支持向量机进行分类。与 UVA 的多特征非线性核 SVM 方法相比,R-CNN 在 mAP 方面取得了很大的改进,从 35.1%提高到 53.7%,同时速度也更快。R-CNN 的方法在 VOC 2011/12 测试中达到了类似的性能(53.3%mAP)。
图 3 将 R-CNN 与 ILSVRC 2013 年比赛的参赛作品以及赛后的 OverFeat 结果进行了比较。R-CNN 获得了 31.4%的 mAP,明显领先于 OverFeat 第二好的 24.3%。为了了解 AP 在不同类别上的分布情况,还提供了方框图,并在表 8 中的文章末尾提供了一个 perclass AP 表。大多数竞争对手提交的资料(OverFeat、NEC-MU、UvAEuvision、Toronto A 和 UIUC-IFP)都使用了卷积神经网络,这表明 CNN 如何应用于目标检测存在显著差异,导致结果差异很大。
首先查看 CNN 不在 PASCAL 进行微调,即所有 CNN 参数仅在 ILSVRC 2012 上进行预训练后的结果。逐层分析性能(表 2 第 1-3 行)表明,fc7 的特征概括起来比 fc6 的特征更差。这意味着,在不降低地图质量的情况下,可以删除 29%或 1680 万个 CNN 参数。更令人惊讶的是,删除 fc7 和 fc6 会产生非常好的结果,尽管 pool5 功能仅使用 CNN 6%的参数计算。CNN 的大部分提取特征的能力来自其卷积层,而不是更大的密集连接层。这一发现表明,仅使用 CNN 的卷积层就可以计算任意大小图像的稠密特征图(从 HOG 的意义上讲)的潜在效用。这种表示方式将支持在 pool5 特性的基础上使用滑动窗口检测器(包括 DPM)进行实验。
在 VOC 2007 trainval 上微调了 CNN 的参数后,现在来看一下 CNN 的结果。改进是惊人的(表 2 第 4-6 行):微调将 mAP 提高了 8.0 个百分点,达到 54.2%。fc6 和 fc7 的微调带来的提升要比 pool5 大得多,这表明从 ImageNet 学习到的 pool5 功能是通用的,大部分改进都是通过学习特定领域的非线性分类器获得的。
所有 R-CNN 变体的性能都明显优于三个 DPMBaseline(表 2 第 8-10 行),包括使用功能学习的两个。与只使用 HOG 功能的最新版本 DPM 相比,R-CNN 的 mAP 提高了 20 多个百分点:54.2%比 33.7%,相对提高了 61%。HOG 和 sketch 令牌的组合比单独的 HOG 产生 2.5 个 mAP,而 HSC 比 HOG 提高了 4 个 mAP(与它们的专用 DPM Baseline 进行内部比较时,两者都使用性能低于开源版本的非公开 DPM 实现)。这些方法分别实现了 29.1%和 34.3%的 MAP。
在表 3 中,实验展示了使用 Simonyan 和 Zisserman 最近提出的 16 层深度网络进行 VOC 2007 测试的结果。该网络是最近 ILSVRC 2014 分类挑战赛中表现最好的网络之一。该网络具有由 13 层 3×3 卷积核组成的同质结构,其中穿插有 5 个最大池层,顶部有 3 个完全连接的层。对于 OxfordNet,实验将该网络称为“O-Net”,对于 TorontoNet,实验将 baseline 称为“T-Net”。
为了在 R-CNN 中使用 O-Net,实验从 Caffe 模型 Zoo1 下载了 VGG ILSVRC 16 层模型的公开预训练网络权重,然后使用与 T-Net 相同的协议对网络进行微调。唯一的区别是根据需要使用较小的小批量(24 个示例),以适应 GPU 内存。表 3 中的结果表明,使用 O-Net 的 RCNN 显著优于使用 T-Net 的 R-CNN,将 mAP 从 58.5%增加到 66.0%。然而,在计算时间方面有一个相当大的缺点,O-Net 的向前传递大约比 T-Net 长 7 倍。
效果:R-CNN 在 pascal voc2007 上的检测结果从 DPM HSC 的 34.3%直接提升到了 66%(mAP)。
R-CNN 速度慢的原因:对图像提取 region proposal(2000 个左右)之后将每个 proposal 当成一张图像进行后续处理(利用 CNN 提取特征+SVM 分类),实际上对一张图像进行了 2000 次提取特征和分类的过程。
2)Fast R-CNN(ICCV 2015)
Fast R-CNN 的算法原理:
Fast R-CNN 算法步骤:
(1)输入待检测图像
(2)利用 Selective Search 算法在输入图像中提取出 2000 个左右的候选区域,
(3)将这些候选区域输入到 CNN 进行特征提取
(4)对于卷积特征层上的每个候选区域进行 RoI Pooling 操作,得到固定维度的 feature map;
(5)提取到的特征输入全连接层,然后用 Softmax 进行分类,对候选区域的位置进行回归。
实验结果:
在 VOC07 上,实验比较了 Fast R-CNN、R-CNN 和 SPPnet。所有方法都从相同的预训练 VGG16 网络开始,并使用边界框回归。VGG16 SPPnet 结果由 SPPnet BB 的作者计算得出。SPPnet 在培训和测试期间使用五个量表。与 SPPnet 相比,Fast R-CNN 的改进表明,尽管 Fast R-CNN 使用单尺度训练和测试,但微调 conv 层可以大幅提高 mAP(从 63.1%提高到 66.9%)。R-CNN 获得了 66.0%的 mAP。次要的一点是,SPPnet 在帕斯卡语中没有标记为“困难”的例子。删除这些示例将 Fast R-CNN 映射提高到 68.1%。所有其他实验都使用“困难”的例子。
在 VOC 2010 and 2012 数据集中,实验将 Fast R-CNN(简称 FRCN)与公开排行榜 comp4(外部数据)上的顶级方法进行比较(表 2,表 3)。对于 NUS NIN c2000 和 BabyLearning 方法,目前没有相关论文,实验无法找到所用 ConvNet 体系结构的确切信息;它们是网络设计中网络的变体。所有其他方法都是从相同的预训练 VGG16 网络初始化的。
Fast R-CNN 以 65.7%的 mAP 在 VOC12 上取得了最佳结果(额外数据为 68.4%)。它也比其他方法快两个数量级,这些方法都基于“慢速”R-CNN 管道。在 VOC10 上,SegDeepM 获得了比 Fast R-CNN 更高的 mAP(67.2%对 66.1%)。SegDeepM 在 VOC12 trainval 和分段注释上进行训练;通过使用马尔可夫随机场推理 O2P 语义分割方法中的 R-CNN 检测和分割,旨在提高 R-CNN 的准确性。快速 R-CNN 可以替换为 SEGDEPM 代替 R-CNN,这可能会产生更好的结果。当使用扩大的 07++12 训练集(见表 2 标题)时,Fast R-CNN 的 mAP 增加到 68.8%,超过 SegDeepM。
与 R-CNN 框架图对比,有两处不同:
(1)最后一个卷积层后加了一个 RoI(Regions of Interest) pooling layer;
(2)损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到 CNN 网络中进行训练。
Fast R-CNN 改进:
(1)RoI pooling layer:SPP-NET 对每个 proposal 使用了不同大小的金字塔映射,将 RoI pooling layer 只需要下采样到一个 7*7 的特征图;
(2)使用 softmax 代替 SVM 分类,将多任务损失函数边框回归加入到网络中:除了 region proposal 提取阶段以外,其他的训练过程是端到端的;
(3)微调部分卷积层。
存在问题:
要先提取 region proposal,没有实现真正意义上的端到端训练。
3)Faster R-CNN(ICCV 2015)
经过 R-CNN 和 Fast R-CNN 的积淀,Ross B. Girshick 在 2016 年的论文《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》提出了新的 Faster RCNN。
Faster R-CNN 算法原理:
整个网络可以分为四个部分:
(1)Conv layers。首先使用一组基础的 conv+relu+pooling 层提取 image 的 feature maps。该 feature maps 被共享用于后续的 RPN 层和全连接层。
(2)Region Proposal Networks。RPN 网络用于生成 region proposals。该层通过 softmax 判断 anchors 属于 foreground 或者 background,再利用 bounding box regression 来修正 anchors 来获得精确 proposals。
(3)RoI Pooling。该层收集输入的 feature maps 和 proposals,送入后续全连接层判定目标类别。
(4)Classifier。利用 proposal feature maps 计算 proposals 的类别,同时再次利用 bounding box regression 获得检测框最终的精确位置。
FASTER-RCNN 算法步骤:
(1)输入测试图像;
(2)将整张图片输入 CNN,进行特征提取;
(3)用 RPN 生成建议窗口(proposals),每张图片生成 300 个建议窗口;
(4)把建议窗口映射到 CNN 的最后一层卷积 feature map 上;
(5)通过 RoI pooling 层使每个 RoI 生成固定尺寸的 feature map;
(6)利用 Softmax Loss(探测分类概率) 和 Smooth L1 Loss(探测边框回归)对分类概率和边框回归(Bounding box regression)联合训练.
实验结果:
实验在 PASCAL VOC 2007 检测基准上综合评估了 FASTER-RCNN 的方法【11】。该数据集包括约 5k 个 TranVal 图像和超过 20 个对象类别的 5k 个测试图像。FASTER-RCNN 还提供了一些模型的 PASCAL VOC 2012 基准测试结果。对于 ImageNet 预训练网络,FASTER-RCNN 使用“快速”版本的 ZF net[32],它有 5 个卷积层和 3 个完全连接层,以及公共 VGG-16 model7[3],它有 13 个卷积层和 3 个完全连接层。FASTER-RCNN 主要评估检测平均精度(mAP),因为这是对象检测的实际度量(而不是关注对象建议代理度量)。
表 2(顶部)显示了使用各种区域候选方法进行训练和测试时的 Fast R-CNN 结果。这些结果使用 ZF 网络。对于选 Selective Search(SS),实验通过“快速”模式生成了大约 2000 个候选。对于 EdgeBoxes(EB),实验通过调整为 0.7 IoU 的默认 EB 设置生成提案。在快速 R-CNN 框架下,SS 的 mAP 为 58.7%,EB 的 mAP 为 58.6%。使用 Fast R-CNN 的 RPN 取得了有竞争力的结果,在使用多达 300 个提议 8 的情况下,其 mAP 为 59.9%。由于共享卷积计算,使用 RPN 比使用 SS 或 EB 产生更快的检测系统;更少的提案也降低了区域级完全连接层的成本(表 5)。
为了研究 RPN 的行为作为一种建议方法,实验进行了几项消融研究。首先,实验展示了 RPN 和 Fast R-CNN 检测网络之间共享卷积层的效果。为此,实验在四步训练过程的第二步之后停止。使用单独的网络将结果略微降低到 58.7%(RPN+ZF,非共享,表 2)。观察到这是因为在第三步中,当使用 detectortuned 特征微调 RPN 时,建议质量得到了提高。
接下来,实验分析了 RPN 对训练 Fast R-CNN 检测网络的影响。为此,实验使用 2000 SS 提案和 ZF 网络来训练 Fast R-CNN 模型。Fast R-CNN 修复此检测器,并通过更改测试时使用的建议区域来评估检测图。在这些烧蚀实验中,RPN 与探测器不具有相同的特征
在测试时用 300 个 RPN 提案替换 SS,mAP 为 56.8%。mAP 中的损失是由于培训/测试提案之间的不一致。此结果作为以下比较的基线。有些令人惊讶的是,当在测试时使用排名前 100 的提案时,RPN 仍然会导致竞争结果(55.1%),这表明排名前 100 的 RPN 提案是准确的。另一方面,使用排名靠前的 6000 个 RPN 方案(无 NMS)有一个可比的地图(55.2%),表明 NMS 不会损害检测地图,并可能减少误报。
接下来,Fast R-CNN 通过在测试时关闭其中一个来分别研究 RPN 的 cls 和 reg 输出的作用。当在测试时删除 cls 层(因此不使用 NMS/排名)时,Fast R-CNN 从未评分区域随机抽取 N 个提案。当 N=1000 时,mAP 几乎没有变化(55.8%),但当 N=100 时,mAP 显著下降至 44.6%。这表明 cls 分数说明了排名最高的提案的准确性。
另一方面,当 reg 层在测试时被移除(因此提案成为锚定框)时,mAP 下降到 52.1%。这表明,高质量的提案主要是由于回归框界限。锚箱虽然具有多个刻度和纵横比,但不足以进行精确检测。实验还评估了更强大的网络对 RPN 提案质量的影响。实验使用 VGG-16 来训练 RPN,并且仍然使用上述 SS+ZF 检测器。mAP 从 56.8%(使用 RPN+ZF)提高到 59.2%(使用 RPN+VGG)。这是一个有希望的结果,因为它表明 RPN+VGG 的提案质量优于 RPN+ZF。由于 RPN+ZF 的提案与 SS 具有竞争性(当持续用于培训和测试时,两者均为 58.7%),可以预期 RPN+VGG 优于 SS。以下实验证实了这一假设。
VGG-16 的性能。表 3 显示了 VGG-16 的建议和检测结果。使用 RPN+VGG,非共享特性的结果为 68.5%,略高于 SS 基线。如上所示,这是因为 RPN+VGG 生成的提案比 SS 更准确。与预定义的 SS 不同,RPN 经过积极培训,并受益于更好的网络。对于功能共享变体,结果是 69.9%,比强大的 SS 基线要好,但几乎没有成本。实验进一步在 PASCAL VOC 2007 trainval 和 2012 trainval 的联合集上训练 RPN 和检测网络。mAP 为 73.2%。图 5 显示了 PASCAL VOC 2007 测试集的一些结果。在 PASCAL VOC 2012 测试集(表 4)上,faster-RCNN 的方法在 VOC 2007 trainval+测试和 VOC 2012 trainval 的联合集上训练了 70.4%的映射。表 6 和表 7 显示了详细的数据。
在表 5 中,实验总结了整个目标检测系统的运行时间。SS 需要 1-2 秒,具体取决于内容(平均约 1.5 秒),而带有 VGG-16 的 Fast R-CNN 在 2000 个 SS 提案上需要 320ms(如果在完全连接的层上使用 SVD,则需要 223ms[2])。实验使用 VGG-16 的系统在建议和检测方面总共需要 198ms。共享卷积特性后,仅 RPN 就只需 10ms 即可计算额外的层。由于提案较少(每张图片 300 个),区域计算也较低。Faster RCNN 系统在 ZF 网络上的帧速率为 17 fps。
相比 FAST R-CNN,主要两处不同:
(1)使用 RPN(Region Proposal Network)代替原来的 Selective Search 方法产生候选窗口;
(2)产生候选窗口的 CNN 和目标检测的 CNN 共享
主要贡献:提出了区域推荐网络(RPN,Region Proposal Networks),实现了真正意义上的端到端训练。
RPN 网络:在提取特征的最后的卷积层上滑动一遍,利用 anchor 机制和边框回归,得到多尺度多长宽比的 region proposals。
Anchor 机制:
对于提取特征的最后的卷积层的每一个位置,考虑9个可能的候选窗口:
三种面积(128*128,256*256,512*512) * 三种比例(1:1,1:2,2:1)。这些候选窗口称为 anchors。
版权声明: 本文为 InfoQ 作者【合合技术团队】的原创文章。
原文链接:【http://xie.infoq.cn/article/a9c9eef7dcd4956cc77acf64e】。文章转载请联系作者。
评论