网络结构
![RetinaNet详解 RetinaNet详解](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM4LzM3MTUyZDk5YTVlZGJhZTFhMmM1M2EyZjJlNWFhNTA2LnBuZw==)
这里默认3∗3个anchor,图中标出以输入为672*640
大小时,每层对应的尺度,以及每层对应anchor个数和每个特征层base anchor对应到原图的anchor大小.
边界框回归
在faster rcnn 中存在3个框,其中anchor, ground truth为已知固定的框, predict 为预测框
其中:
Anchor:(Ax,Ay,Aw,Ah)
Predict:(Px,Py,Pw,Ph)
GroundTruth:(Gx,Gy,Gw,Gh)
目标:
边界框回归的目的即寻找一个F,使得
F(Ax,Ay,Aw,Ah)=(Px,Py,Pw,Ph)≈(Gx,Gy,Gw,Gh)
方法:
-
平移
Px=Aw⋅dx(A)+Ax
Py=Ah⋅dy(A)+Ay
-
放缩
Pw=Aw⋅edw(A)
ph=Ah⋅edh(A)
当输入 anchor 和 groundtruth 相差不远可以近似使用线性回归模型转换
线性回归
d∗(A)=W∗T⋅Φ(A)
其中 ∗=x,y,w,h
Loss=i∑N(t∗i−W∗T⋅Φ(Ai))2
其中 t∗ 为 Anchor 与 Groundtruth 的位置位移参数
tx=AwGx−Ax
ty=AhGy−Ay
tw=lnAwGw
th=lnAhGh
retinaNet网络回归部分学习到的参数即为t∗
回归损失函数选择
l1 loss
l2 loss
- 优点:各点光滑
- 缺点:误差累积,可能因为个别样本(远的样本)导致梯度爆炸
Smooth l1 loss:结合二者优缺点
Smoothl1loss(x)={0.5∗x2,∣x∣<1∣x∣−0.5,other
分类损失函数选择
交叉熵损失函数:
CE=−log(p)
focal loss:
FL=−α(1−p)γlog(p)
原理:在网络预测中,正负样本比相差大(由anchor开以推测出预测样本有几万个,而gt只有几个),并且负样本大多为简单样本,大量的简单样本损失累计会导致训练缓慢,所以对预测错误的样本添加权重,从而使简单样本损失降得更大,从而优化了训练。