赞
踩
R-CNN: Region with CNN feature,是一个双阶段目标检测算法系列。
内容基于 b站霹雳吧啦Wz 博主,讲的很好,这里只是做简要总结。
只有Feature extraction是CNN,其他是传统的机器学习方法。
关键步骤:
除SS算法外,特征提取、分类以及回归使用一个CNN网络实现。
且其不对每个SS后的候选框做特征提取,而是对整幅图做特征提取生成特征图,然后将候选框位置映射到特征图上,获得候选框所对应的特征图。大大减少了运算量。比R-CNN快200倍以上。
关键步骤:
损失loss:分类损失使用CE(Cross Entropy) loss,回归使用smooth L1 loss。[u≥1]是艾弗森括号,其中u代表该候选区域的真实标签 (0代表背景,1-N代表前景的类),当u≥1时[u≥1]=1,u≤1时[u≥1]=0,即只将前景的回归损失计入。
其中回归的损失:
L1因为在最低点是不可导的,所以势必不会收敛到最低点,可能会在最优解附近震荡,而L2则是可以缓慢收敛至最优解的。从上图可以看出,该函数实际上就是一个分段函数,在[-1,1]之间实际上就是L2损失,这样解决了L1的不光滑问题,在[-1,1]区间外,实际上就是L1损失,这样就解决了离群点梯度爆炸的问题
Fast R-CNN的速度瓶颈在SS算法,所以新作针对候选框的生成进行改进。
FasterRCNN = RPN+ FastRCNN(之前使用的SS算法,现在替换成RPN),即本作的重点就是RPN网络。其中k是anchor boxes的数量,RPN(Region Proposal Net)结构:
其中关于RPN的感受野该博主在VGG视频中有讲。还会对anchor boxes进行一些筛选操作:
其中训练时需要对anchor boxes进行正负样本的采样,每张图取256个样本,其中正负样本比大概1:1。正样本取与ground truth 的IoU超过阈值(论文取0.7)的(没有超过阈值的就取最大的),负样本取与与所有ground truth的IoU小于0.3的。
分类损失:论文中使用多分类的SCE(softmax CE)损失来计算这个二分类损失,因为其score输出是2k个,如果使用BCE也可以,但网络就是k个输出了。
边界框回归损失:与Fast RCNN的边界框回归损失是一样的
剩下的部分就是Fast RCNN了。
训练:
之后,何凯明团队又在Mask R-CNN中升级了ROI pooling,得到ROI align方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。