R-cnn,Fast Rcnn
输入层设置
特征输入分别输出到两个并行的全连接层,即传统意义上的,分类+回归
- cls_score层:分类层,输出K+1维的数组, pi p i 表示是分类还是背景的概率
- bbox_predict层: 候选框需要调整层,输出4*K维数组,表示属于第K类时应该缩放平移的参数
Loss fuction
- loss_cls : 对分类进行评估,采用真实分类概率决定: Lcls=−logpu L c l s = − l o g p u
- loss_bbox:对bbox定位进行评估,用于比较真实分类对应的预测参数
tu
t
u
和真实平移缩放参数为
v
v
的差别:
- 其中,g为L1正则,故对离群点不敏感: g(x)={0.5x2|x|−0.5|x|<1otherwise g ( x ) = { 0.5 x 2 | x | < 1 | x | − 0.5 o t h e r w i s e
总代价为两个loss加权和:
L={Lcls+λLlocLclsu为前景u为背景
L
=
{
L
c
l
s
+
λ
L
l
o
c
u
为
前
景
L
c
l
s
u
为
背
景
并且,当分类为背景的时候不考虑加权loss
Faster Rcnn
- loss_cls : 分类loss和前者不同,这里是两类(是物体和不是物体)的loss, Lcls(pi,pi∗)=−log[pi∗pi+(1−p∗i)∗(1−pi)] L c l s ( p i , p i ∗ ) = − log [ p i ∗ p i + ( 1 − p i ∗ ) ∗ ( 1 − p i ) ]
- loss_bbox:同fast rcnn使用L1正则
- 注:在bounding box regression中,对四个参数化坐标需要进行约束以防差值过大,即相减后还分别除以各自的宽高。
Yolo
所有的参数计算都纳入回归中, 每个格子都有B个bounding box信息,以及C个物体属于某类别的概率。且每个bounding box有五个参数 x,y,w,h,Confidence x , y , w , h , C o n f i d e n c e ,confidence反应的是bounding box是否包含物体和物体位置的准确性, Confidence=P(object)∗Iou C o n f i d e n c e = P ( o b j e c t ) ∗ I o u ,由于只有在包含物体 P(object)=1 P ( o b j e c t ) = 1 奏效,因此如果不包含则置信度为0
-
Loss=Σs2i=0coordError+iouError+classError
L
o
s
s
=
Σ
i
=
0
s
2
c
o
o
r
d
E
r
r
o
r
+
i
o
u
E
r
r
o
r
+
c
l
a
s
s
E
r
r
o
r
- 作者认为位置(坐标,IOU)相关误差和分类误差贡献不同, λcoord=5 λ c o o r d = 5 对 coordError c o o r d E r r o r 修正。之所以对 w,h w , h 开根号是因为图像宽高可能会很大,相减差距过大导致平方爆炸
- 计算IOU误差时,将包含和不包含分成了两个部分进行概率计算,但二者IOU的误差会变相改变对立IOU的值导致难训练,因此使 λnoobj=0.5 λ n o o b j = 0.5 来修正不包含物体的IOU框。
- 引用别人的一张图,解释的很好,重点是confidence的预测
参考博文:
https://blog.csdn.net/shenxiaolu1984/article/details/51036677
https://zhuanlan.zhihu.com/p/25236464
https://blog.csdn.net/u014381600/article/details/55505231