ROI pooling层
说起ROI Alignment,就要说道faster-rcnn的ROI pooling,
ROIpooling层结构是为了将原图像的rois映射到固定大小的feature map上。而此方法有一些缺点,会带来边缘像素的缺失。
- 回顾ROIpooling。
- 具体caffe层可以观察ROIpooling层解析
ROI Align的作用
如果roi大小为(7,6),而roipooling是分成了(6,6)的部分,(7,6)到(6,6)的转换必然带来了边缘某像素的损失。而roialign利用双线性插值,将roi(7,6)插值扩充到(12,12),此时再做(6,6)的roipooling,会提高精度,充分利用了roi的像素。
SmoothL1Loss
faster rcnn的源码理解(一)SmoothL1LossLayer论文与代码的结合理解
SmoothL1LossLayer 计算一张图片的损失函数
- i i : mini-batch 的 anchor 的索引。
- :目标的预测概率。
- pi∗ p i ∗ :target二分类是否有物体,有物体为1,否则为0。
- ti t i 是一个四点向量,预测坐标
- ti∗ t i ∗ 是一个四点向量,是ground truth boungding box的坐标(真实坐标)
bottom[0]预测坐标,即
ti
t
i
bottom[1]target坐标,即
ti∗
t
i
∗
bottom[2]inside,有物体,即有前景(foreground)时为1,否则为0,即
pi∗
p
i
∗
bottom[3]outside,没有前景(fg)也没有后景(bg)的为0,其他为1/(bg+fg),对应于加号右边的系数部分。
Lreg的公式如下,其中
x=ti−ti∗
x
=
t
i
−
t
i
∗
,
pi∗Lreg(ti,ti∗) p i ∗ L r e g ( t i , t i ∗ ) 表明只有有fg(20个物体类别)的才有regression loss.
SmoothL1loss的优点:
当预测值与目标值相差很大时, 梯度容易爆炸, 因为梯度里包含了x−t. 所以rgb在Fast RCNN里提出了SmoothL1Loss. 将L2的梯度转换为L1的梯度。L1相对于L2来说更鲁棒。L2在拐点处更平滑。