赞
踩
目录
一、RCNN - Rich feature hierarchies for accurate object detection and semantic segmentation
Towards Real-Time Object Detection with Region Proposal Networks
region proposal
对每个ROI都用网络提取feature map
候选区域算法用分割不同区域的办法来识别潜在的物体。在分割的时候,我们要合并那些在某些方面(如颜色、纹理)类似的小区域。相比滑窗法在不同位置和大小的穷举,候选区域算法将像素分配到少数的分割区域中。所以最终候选区域算法产生的数量比滑窗法少的多,从而大大减少运行物体识别算法的次数。同时候选区域算法所选定的范围天然兼顾了不同的大小和长宽比。
候选区域算法比较重要的特征就是要有较高的召回率。
选择性搜索算法使用《Efficient Graph-Based Image Segmentation》论文里的方法产生初始的分割区域作为输入,通过下面的步骤进行合并:
首先将所有分割区域的外框加到候选区域列表中
通过不停的迭代,候选区域列表中的区域越来越大。可以说,我们通过自底向下的方法创建了越来越大的候选区域。表示效果如下:
相似度
选择性搜索算法如何计算两个区域的像素度的呢?
主要是通过以下四个方面:颜色、纹理、大小和形状交叠
最终的相似度是这四个值取不同的权重相加
https://blog.csdn.net/yuanlulu/article/details/82157071
R-CNN需要先使用selective search进行region的选择,再finetune一个预训练的模型,再训练SVM分类器,再进行框的回归。
1.selective search 提取2000个候选框
2.用一个神经网络对全图进行特征提取
3.ROI pooling 在全图特征上摘取每个ROI区域对应的特征
4.全连接层 进行分类与bbox修正
1.取代RCNN串行的特征提取方式,一个CNN提取全图的特征
2.除了 selective search之外其他的步骤可以合在一起训练
selective search依然存在
ROI Pooling 用一个神经网络对全图进行特征提取
属于max pooling
具体操作如下:
(1)根据输入image,将ROI映射到feature map对应位置;([x/16]四舍五入)
(2)将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);(四舍五入)
(3)对每个sections进行max pooling操作;
这样我们就可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度
具体介绍:https://blog.csdn.net/auto1993/article/details/78514071
https://blog.csdn.net/luo841297935/article/details/88699495
(&SPP Net 金字塔层空间特征pooling
与SPPnets不同,SPPnets在一副图像得到对应的特征后,从这张图像的特征上proposal对应的部分,采用空间金字塔池化,对于不同输入大小的proposal都能得到一个固定大小的特征向量。)
Fast-RCNN将finetune和分类器的训练结合了起来。原因也非常简单,因此Fast R-CNN采用的RoI pooling是可以进行反向传播的,也就是可以求导的
多任务loss
1.共享的卷积层 为全图提取特征 得到feature map
2.RPN层 生成待测框ROI 类似注意力机制的作用
3.ROI Pooling 在全图的特征图上摘取每个ROI对应的特征
4.FCN 进行分类 FastRCNN的detector层(reg+cls)
RPN层 生成待测框ROI
ROI Pooling
创新点:
RPN(region proposal networks)用于替代之前的selective search。这个层还可以在GPU上运算来提高速度。
RPN的目的:
属于滑动窗的算法
为了能够进行region proposal,作者使用了一个小的网络,在基础的卷积层输出的特征上进行滑动,这个网络输入大小为n*n,输入后会映射(用的n*n卷积)为一个固定长度的特征向量,然后接两个并联的fc层(用的1*1卷积层代替),这两个fc层,一个为box-regressoin,一个为box-classification。如下图:
输入:图
输出:bbox + objectness score
结构:
CNN(ZF or VGG)
à sliding window (n*n cov + 1*1 cov for fc )
à reg+cls
包括在sliding window中
3个方向,3个尺度,共9个
具有平移不变性
本质:
(转载自:https://www.zhihu.com/question/42205480/answer/155759667)
anchor 的本质是什么,本质是 SPP(spatial pyramid pooling) 思想的逆向。而SPP本身是做什么的呢,就是将不同尺寸的输入 resize 成为相同尺寸的输出。所以SPP的逆向就是,将相同尺寸的输出,倒推得到不同尺寸的输入。接下来是 anchor 的窗口尺寸,这个不难理解,三个面积尺寸(1282,2562,512^2),然后在每个面积尺寸下,取三种不同的长宽比例(1:1,1:2,2:1).这样一来,我们得到了一共9种面积尺寸各异的 anchor 。示意图如下
至于这个 anchor 到底是怎么用的,这个是理解整个问题的关键。
下面是整个 Faster RCNN 结构的示意图:
利用anchor是从第二列这个位置开始进行处理,这个时候,原始图片已经经过一系列卷积层和池化层以及relu,得到了这里的 feature:51x39x256(256是层数)
在这个特征参数的基础上,通过一个3x3的滑动窗口,在这个51x39的区域上进行滑动,stride=1,padding=1,这样一来,滑动得到的就是51x39个3x3的窗口。对于每个3x3的窗口,作者就计算这个滑动窗口的中心点所对应的原始图片的中心点。
正样本:IoU高
负样本:IoU低
舍弃的样本:无重合的
分类:log loss
回归:robust loss(smooth L1)
对两类loss进行归一化+权重平衡
每个anchor对应一个回归项
第一步中,我们对RPN进行训练,该网络通过ImageNet预训练模型进行初始化,并针对区域提议任务进行端到端微调。在第二步中,我们使用步骤1 RPN生成的提议,通过Fast R-CNN训练一个单独的检测网络。该检测网络也由ImageNet预训练模型初始化。此时,两个网络不共享conv层。在第三步中,我们使用检测器网络来初始化RPN训练,但是我们修复了共享的conv层,并且只对RPN特有的层进行微调。现在这两个网络共享conv层。最后,保持共享的conv层不变,我们微调快速r-cnn的fc层。因此,两个网络共享相同的conv层并形成一个统一的网络
————————————————
原文链接:https://blog.csdn.net/weixin_39958313/article/details/87096861
https://www.jianshu.com/p/656343761fd5
https://blog.csdn.net/weixin_39958313/article/details/87096861
待更新
待更新
c5 p5
c4 p4
c3 p3
c2 p2
网络直接在原来的单网络上做修改,每个分辨率的 feature map 引入后一分辨率缩放两倍的 feature map 做 element-wise 相加的操作。
通过这样的连接,每一层预测所用的 feature map 都融合了不同分辨率、不同语义强度的特征,融合的不同分辨率的 feature map 分别做对应分辨率大小的物体检测。
这样保证了每一层都有合适的分辨率以及强语义特征。
同时,此方法只是在原网络基础上加上了额外的跨层连接,在实际应用中几乎不增加额外的时间和计算量
高层:语义信息强,空间粗糙
底层:语义信息若,空间信息强
结构:
一个自底向上的线路,
一个自顶向下的线路,
一个横向连接(lateral connection)。图中放大的区域就是横向连接,
1*1的卷积核 :用于降维,减少核数,保持与后面的通道数相同,但size不变 (主要作用是减少卷积核的个数,也就是减少了feature map的个数,并不改变feature map的尺寸大小)
2 up: 两倍最近邻上采样 放大图像
然后二者按element-wise元素宽度相加
每个金字塔层featuremap后都再接head层
再接3*3卷积 与已经融合的特征图:消除混叠效应,生成最好的参考特征图
若为resnet则
金字塔:resnet的佟size的stage中取后四层的末层
3*3 的卷积滑动窗得到featuremap及两个相邻的 1*1 卷积分别做分类和回归的预测
(3*3卷积减少上采样造成的aliasing effect混叠效应)
并共享权重,共享语义信息
5area*3层金字塔=15anchor/金字塔
在统计、信号处理和相关领域中,混叠是指取样信号被还原成连续信号时产生彼此交叠而失真的现象。当混叠发生时,原始信号无法从取样信号还原。而混叠可能发生在时域上,称做时间混叠,或是发生在频域上,被称作空间混叠。在视觉影像的模拟数字转换或音乐信号领域,混叠都是相当重要的议题。因为在做模拟-数字转换时若取样频率选取不当将造成高频信号和低频信号混叠在一起,因此无法完美地重建出原始的信号。为了避免此情形发生,取样前必须先做滤波的操作。
在视频信号处理过程中,有两种方法可以消除混叠现象:
直接提高采样频率,但是采样频率不能无限提高;
在采样频率固定的情况下,可通过低通滤波器消除大于尼奎斯特频率的高频信号,从而消除混叠现象;
所以这边使用一个3∗3 3*33∗3卷积核来卷积特征图来产生最后的参考特征图。
————————————————
https://blog.csdn.net/qq_33948796/article/details/89513416
https://blog.csdn.net/baidu_30594023/article/details/82623623
=FasterRCNN+ResNeXt +FPN+RPN+head:FCN+2fc
class label
bounding box
object mask
将mask和分类的确定分离 &FCN 基于像素级别的多分类共享,同时分割和分类 FCN 得到mask
在每个ROI后增加小分支 ≈小的FCN
http://blog.leanote.com/post/afanti.deng@gmail.com/b5f4f526490b
https://blog.csdn.net/kk123k/article/details/86563425
https://www.cnblogs.com/wangyong/p/8523814.html
https://blog.csdn.net/u013355826/article/details/56680521
ROI pooling改为ROI Align
pixel-to-pixel alignment:
ROI Pooling 粗糙的空间量化 [/16] + 7*7 bin,四舍五入两次,不精确
ROI Align 保留空间位置 *116 +双线性插值 精确 解决Misalignment 对齐问题
对于检测图片中大目标物体时,两种方案的差别不大,而如果是图片中有较多小目标物体需要检测,则优先选择RoiAlign,更精准些。
步骤:
举例来说:
1)Conv layers使用的是VGG16,feat_stride=32(即表示,经过网络层后图片缩小为原图的1/32),原图800*800,最后一层特征图feature map大小:25*25
2)假定原图中有一region proposal,大小为665*665,这样,映射到特征图中的大小:665/32=20.78,即20.78*20.78,此时,没有像RoiPooling那样就行取整操作,保留浮点数
3)假定pooled_w=7,pooled_h=7,即pooling后固定成7*7大小的特征图,所以,将在 feature map上映射的20.78*20.78的region proposal 划分成49个同等大小的小区域,每个小区域的大小20.78/7=2.97,即2.97*2.97
4)假定采样点数为4,即表示,对于每个2.97*2.97的小区域,平分四份,每一份取其中心点位置,而中心点位置的像素,采用双线性插值法(下面介绍)进行计算,这样,就会得到四个点的像素值,如下图
上图中,四个红色叉叉‘×’的像素值是通过双线性插值算法计算得到的
最后,取四个像素值中最大值作为这个小区域(即:2.97*2.97大小的区域)的像素值,如此类推,同样是49个小区域得到49个像素值,组成7*7大小的feature map。
https://blog.csdn.net/kk123k/article/details/86563425
减少失真
一维线性插值
双线性插值
为了求图一中箭头所指点的坐标。先在图二红色平面内求投影点的y坐标,以及图三蓝色平面内投影点的y坐标,最后在黑色平面内根据两个投影点求出橙色箭头所指点的坐标
每个 ROIAlign 对应 K * m^2 维度的输出。K 对应类别个数,即输出 K 个mask,m对应 池化分辨率(7*7)。
mask部分Loss 函数定义:
Lmask(Cls_k) = Sigmoid (Cls_k),
平均二值交叉熵 (average binary cross-entropy)Loss,通过逐像素的 Sigmoid 计算得到。
Why K个mask?通过对每个 Class 对应一个 Mask 可以有效避免类间竞争(其他 Class 不贡献 Loss )。
多任务loss,分开训练
MaskRCNN: per-pixel sigmoid +average binary Cross Entropy loss 二值交叉熵 不同类互不干扰
& FCN: per-pixel softmax +multinomial cross-entropy导致类间竞争
交叉熵: tlogO+(1-t)log(1-O) O为sigmoid输出
多分类常用softmax entropy loss,对应的总概率和是1
https://www.jianshu.com/p/52fcd56f2406
https://blog.csdn.net/uncle_ll/article/details/82778750
sigmoid (即逻辑回归函数):
0到1之间的概率值
当x趋近于负无穷时,y趋近于0;当x趋近于正无穷时,y趋近于1;当x= 0时,y=0.5.6
softmax函数:
概率和累加和为1
backbone:
ResNeXt+FPN
head:FCN
对于mask分支来说,使用FCN的好处:
可以保持空间信息
参数少而结果精确
maskrcnn解析
https://blog.csdn.net/linolzhang/article/details/71774168
https://blog.csdn.net/sunflower_sara/article/details/88640945
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。