RCNN进行目标检测时,采取候选区域算法,得到2000个候选区域,并依次放入CNN中进行特征提取预测类别与位置。
下图中的红色框即为候选框,绿色框为人工标注真实框。(为了便于初步分析与理解,此过程将预测框与真实框重合)
原理上,从候选框不准确位置到预测框的真实位置,可通过下列公式得到:
G x = Δ x + P x G y = Δ y + P y G w = Δ w ∗ P y G h = Δ h ∗ P h G_x = \Delta x + P_x\\ G_y = \Delta y + P_y\\ G_w = \Delta w * P_y\\ G_h = \Delta h * P_h Gx=Δx+PxGy=Δy+PyGw=Δw∗PyGh=Δh∗Ph
其中 Δ w \Delta w Δw和 Δ h \Delta h Δh是红色框的宽、高与绿色框的宽、高的比例系数,目的在于使红色框的宽、高通过比例放缩接近于真实框的宽、高。
Δ x , Δ y , Δ w , Δ h \Delta x,\Delta y,\Delta w,\Delta h Δx,Δy,Δw,Δh是候选区域通过CNN提取特征向量并将特征向量输入到SVM模型得到。
考虑到通过SVM模型得到的 Δ \Delta Δ值存在负值。为了避免该情况,不能直接使用SVM预测 Δ \Delta Δ值,而采取预测 d x , d y , d w , d h d_x,d_y,d_w,d_h dx,dy,dw,dh。其中 d x = Δ x P x , d y = Δ y P y , l n Δ w = d w , l n Δ h = d h d_x = \frac{\Delta x} {P_x}, d_y = \frac{\Delta y} {P_y}, ln{\Delta w} = d_w, ln{\Delta h }= d_h dx=PxΔx,dy=PyΔy,lnΔw=dw,lnΔh=dh.
使用 d x = Δ x p x , d y = Δ y p y d_x=\frac{\Delta x}{p_x},d_y=\frac{\Delta y}{p_y} dx=pxΔx,dy=pyΔy的原因在于如下例子所示:
使用具体数值更容易理解:
令图一和图三中
红框坐标(20,20)
绿框坐标(30,30)
黄框坐标(28,28);
使用 Δ \Delta Δ求解:
Δ x \Delta x Δx真实偏移量:30-20=10
Δ x \Delta x Δx预测框偏移量:28-20=8
Δ x \Delta x Δx损失回归函数值:(10-8)^ 2 = 4
使用d求解
d x d_x dx真实偏移量: 30 − 20 20 = 0.5 \frac{30-20}{20}=0.5 2030−20=0.5
d x d_x dx预测框偏移量: 28 − 20 20 = 0.4 \frac{28-20}{20}=0.4 2028−20=0.4
d x d_x dx损失回归函数值:(0.5-0.4)^ 2 = 0.01
令图二和图四中
红框坐标(10,10)
绿框坐标(15,15)
黄框坐标(14,14);
使用 Δ \Delta Δ求解:
Δ x \Delta x Δx真实偏移量:15-10=5
Δ x \Delta x Δx预测框偏移量:14-10=4
Δ x \Delta x Δx损失回归函数值:(5-4)^ 2 = 1
使用d求解
d x d_x dx真实偏移量: 15 − 10 10 = 0.5 \frac{15-10}{10}=0.5 1015−10=0.5
d x d_x dx预测框偏移量: 14 − 10 10 = 0.4 \frac{14-10}{10}=0.4 1014−10=0.4
d x d_x dx损失回归函数值:(0.5-0.4)^ 2 = 0.01
由以上可知,使用 Δ \Delta Δ求解对于同一张图不同大小,计算出来的回归函数损失值不同,不利于模型训练,而使用 d d d求解时,是一致的。
2000
个候选区域,并resize成相同大小(227x227)
,然后分别送入CNN网络中提取特征,得到2000个4096维的特征向量,也即2000x4096
的矩阵。2000x21
矩阵,其中21表示21个类别,包含背景。4096x4
的回归矩阵中,输出2000x4
的偏移矩阵,即得到 d x , d y , d w , d h d_x,d_y,d_w,d_h dx,dy,dw,dh值