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 計算一張圖片的損失函數
- : mini-batch 的 anchor 的索引。
- :目標的預測概率。
- :target二分類是否有物體,有物體爲1,否則爲0。
- 是一個四點向量,預測座標
- 是一個四點向量,是ground truth boungding box的座標(真實座標)
bottom[0]預測座標,即
bottom[1]target座標,即
bottom[2]inside,有物體,即有前景(foreground)時爲1,否則爲0,即
bottom[3]outside,沒有前景(fg)也沒有後景(bg)的爲0,其他爲1/(bg+fg),對應於加號右邊的係數部分。
Lreg的公式如下,其中 ,
表明只有有fg(20個物體類別)的纔有regression loss.
SmoothL1loss的優點:
當預測值與目標值相差很大時, 梯度容易爆炸, 因爲梯度裏包含了x−t. 所以rgb在Fast RCNN裏提出了SmoothL1Loss. 將L2的梯度轉換爲L1的梯度。L1相對於L2來說更魯棒。L2在拐點處更平滑。