当前位置:网站首页>目标检测(一):R-CNN系列
目标检测(一):R-CNN系列
2022-08-02 03:28:00 【Aiolei】
目录
1. R-CNN
Region CNN(RCNN) 可以说是利用深度学习进行目标检测的开山之作。作者 Ross Girshick 多次在 PASCAL VOC 的目标检测竞赛中折桂,2010 年更带领团队获得终身成就奖。R-CNN 基于卷积神经网络(CNN)、线性回归和支持向量机(SVM)等算法,实现目标检测技术。
对于一张图片,R-CNN 基于 selective search 方法大约生成 2000 个候选区域,然后每个候选区域被 resize 成固定大小,并送入一个 CNN 模型中,最后得到一个特征向量。然后这个特征向量被送入一个多类别 SVM 分类器中,预测出候选区域中所含物体的属于每个类的概率值。每个类别训练一个 SVM 分类器,从特征向量中推断其属于该类别的概率大小。为了提升定位准确性,R-CNN 最后又训练了一个边界框回归模型,通过边框回归模型对框的准确位置进行修正。
1.1 R-CNN 算法流程(4个步骤)
(1)一张图像生成 1K~2K 个候选区域 (使用 Selective Search 方法)
(2)对每个候选区域,使用深度网络提取特征
(3)特征送入每一类的 SVM 分类器,判别是否属于该类
(4)使用回归器精细修正候选框位置
1.2 R-CNN 存在的问题
(1)测试速度慢:用 Selective Search 算法提取候选框,一张图像内候选框之间存在大量重叠,提取特征操作冗余。
(2)训练速度慢:过程极其繁琐
(3)训练所需空间大:对于 SVM 和 bounding-box 回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如 VGG16,从 VOCo7 训练集上的5k图像上提取的特征需要数百 GB 的存储空间。
2. Fast R-CNN
继 2014 年的 RCNN 之后,Ross Girshick 在 15 年推出 Fast RCNN,构思精巧,流程更为紧凑,大幅提升了目标检测的速度。基于 VGG16 的 Fast RCNN 算法在训练速度上比 RCNN 快了将近 9 倍;测试速度比 RCNN 快了 213 倍,在 VOC2012 上的 mAP 在 66% 左右。
Fast R-CNN 将整张图像归一化后直接送入深度网络。在邻接时,才加入候选框信息,在末尾的少数几层处理每个候选框。是对整张图像卷积而不是对每个 region proposal 卷积,ROI Pooling、分类和回归都放在网络一起训练的。Fast RCNN 不仅大大提高了检测速度,也提高了检测准确率。
2.1 Fast R-CNN 算法流程(3个步骤)
(1)一张图像生成 1K~2K 个候选区域 (使用 Selective Search 方法)
(2)将图像输入网络得到相应的特征图,将 SS 算法生成的候选框投影到特征图上获得相应的特征矩阵
(3)将每个特征矩阵通过 ROI pooling 层缩放到 7x7 大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果。一系列全连接层:经过两个 output 都为 4096 维的全连接层,分别经过 output 各为 21 和 84 维的全连接层(并列的,前者是分类输出,后者是回归输出),最后接上两个损失层(分类是 softmax,回归是 smoothL1)。
2.2 损失函数
Multi-task loss 多损失融合(分类损失和回归损失融合)
p p p 是分类器预测的 softmax 概率分布 p = ( p 0 , . . . , p k ) p = (p_0,...,p_k) p=(p0,...,pk)
u u u 对应目标真实类别标签
t u t^u tu 对应边界框回归器预测的对应类别 u 的回归参数
v v v 对应真实目标的边界框回归 ( v x , v y , v w , v h ) (v_x,v_y,v_w,v_h) (vx,vy,vw,vh)
2.3 Fast R-CNN 的改进和不足
改进:
(1)卷积是对于整张图像先提取了泛化特征,这样子减少了大量的计算量;R-CNN 中对于每一个 region proposal 做卷积会有很多重复计算;
(2)ROIPooling 的提出,巧妙的解决了尺度放缩的问题;
(3)将 regressor 放进网络一起训练,同时用 softmax 代替 SVM 分类器,更加简单高效。
不足:
region proposal 的提取依然使用 selective search,目标检测时间大多消耗在这上面(提 region proposal 2~3s,提特征分类只需 0.32s),这也是后续 Faster RCNN 的改进方向之一。
3. Faster R-CNN
Faster R-CNN 是作者 Ross Girshick 继 Fast R-CNN 后的又一力作。同样使用 VGG16 作为网络的 backbone,推理速度在 GPU 上达到 5fps (包括候选区域的生成),准确率也有进一步的提升。在 2015 年的 ILSVRC 以及 COCO 竞赛中获得多个项目的第一名。
3.1 Faster R-CNN 算法流程(3个步骤)
(1)将图像输入网络得到相应的特征图
(2)使用 RPN 结构生成候选框,将 RPN 生成的候选框投影到特征图上获得相应的特征矩阵
(3)将每个特征矩阵通过 ROI pooling 层缩放到 7x7 大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果
3.2 RPN
k anchor boxes 给定了大小和长宽比例,如下图 RPN 的九种 anchor;
2k scores 目标概率,分为两个:背景概率、目标概率;
4k coordinates 边界框回归参数,四个:dx, dy, dw, dh
图中 256 表示:ZF网络特征图的深度 channel = 256,而使用 VGG16 的话就是 512。
RPN 的九种 anchor:
三种尺度(面积) {128*, 256*, 512*}
三种比例 {1:1, 1:2, 2:1}
每个位置在原图,上都对应有 3 x 3 = 9 anchor
对于一张 1000 x 600 x 3 的图像,大约有 60 x 40 x 9 (20k) 个 anchor,忽略跨越边界的 anchor 以后,剩下约 6k 个 anchor。对于 RPN 生成的候选框之间存在大量重叠,基于候选框的 cls 得分,采用非极大值抑制,IoU 设为 0.7,这样每张图片只剩 2k 个候选框。
3.3 正样本和负样本
原论文是这么介绍的:
For training RPNs, we assign a binary class label (of being an object or not) to each anchor. We assign a positive label to two kinds of anchors: (i) the anchor/anchors with the highest Intersectionover-Union (IoU) overlap with a ground-truth box, or (ii) an anchor that has an IoU overlap higher than 0.7 with any ground-truth box. Note that a single ground-truth box may assign positive labels to multiple anchors. We assign a negative label to a non-positive anchor if its IoU ratio is lower than 0.3 for all ground-truth boxes. Anchors that are neither positive nor negative do not contribute to the training objective.
首先要知道 IoU 是什么,IoU 即交并比,两个矩形框 A、B 的重合度,公式如下:
I o U = ( A ∩ B ) / ( A ∪ B ) IoU = (A \cap B) / (A \cup B) IoU=(A∩B)/(A∪B)
正样本有两种情况:
(i) 与 ground-truth bo x的 IoU 的重叠区最大的 anchor/anchors,将它定义为正样本;
(ii) anchor 与 ground-truth box 的 IoU 值大于 0.7,将它定义为正样本;
负样本:如果 anchor 与任何 ground-truth box 的 IoU 值小于 0.3,便将它定义为负样本。
既不属于正样本又不属于负样本的 anchor 不参与训练。
3.4 损失函数
p i p_i pi 表示第 i 个 anchor 预测为真实标签的概率
p i ∗ p_i^* pi∗ 当为正样本时为 1,当为负样本时为 0
t i t_i ti 表示预测第 i 个 anchor 的边界框回归参数
t i ∗ t_i^* ti∗ 表示第 i 个 anchor 对应的 ground-truth box 的回归参数
N c l s N_{cls} Ncls 表示一个 mini-batch 中的所有样本数量 256
N r e g N_{reg} Nreg 表示 anchor 位置的个数 (不是 anchor 个数) 约 2400
论文链接:
- R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation https://arxiv.org/pdf/1311.2524.pdf
- Fast R-CNN https://arxiv.org/pdf/1504.08083.pdf
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks https://papers.nips.cc/paper/5638-faster-r-cnn-towards-real-time-object-detection-with-region-proposal-networks.pdf
本笔记记录学习 R-CNN/FastrR-CNN/Faster R-CNN,若有错误,欢迎批评指正,学习交流。
边栏推荐
猜你喜欢
Solve the problem that the 5+APP real machine test cannot access the background (same local area network)
研发过程中的文档管理与工具
TimeSformer视频理解框架:视频理解中的Transformer
Transformer结构解析及常见问题
关于我的项目-微信小程序2(uniapp->wx小程序)
考(重点理解哪些属于其他货币资金)、其他货币资金的内容、其他货币资金的账务处理(银行汇票存款、银行本票存款、信用卡存款、信用证保证金存款、存出投资款、外埠存款)
Microsoft Office安装全过程记录
Visual Studio2022创建setup项目
面试知识点整理:Skia 架构的场景渲染
一分钟get:缓存穿透、缓存击穿、缓存雪崩
随机推荐
机器学习预备知识
英语每日打卡
链动2+1无限循环系统,2022年起盘成功率超高的模式
管理会计(对内)指引、管理会计要素及其具体内容(可能考,考前记一下,推荐记一下四个大点即可)、
《scala 编程(第3版)》学习笔记2
自定义ViewGroup实现搜索栏历史记录流式布局
加密数字货币前传:从大卫·乔姆到中本聪
关于我的项目-微信公众号~
会计凭证概述、原始凭证、原始凭证的种类、原始凭证的基本内容、原始凭证的填制要求、原始凭证的审核
C# 关键字学习手记
挖矿是什么意思?矿工都做了什么?
同时安装VirtualBox和VMware,虚拟机如何上网
广告电商「私域打工人」职业前景:你离月薪6万,还差多远?
Laravel打印执行的SQL语句
一文理解分布式开发中的服务治理
财产清查概述、 全面清查的情况、局部清查的情况、财产清查的方法、财产清查结果的处理
[Spark]-RDD详解之变量&操作
无源域适应(SFDA)方向的领域探究和论文复现(第一部分)
Visual Studio2022创建setup项目
关于我的项目-微信小程序2(uniapp->wx小程序)