caffe-ssd的loss和darknet-yolov3的loss(L1loss正则化+L2loss正则化)-更新对目标检测loss的sikao
leader告诉我,上手一个深度学习框架,最先必须学会
框架的头和尾,也就是数据是怎么读进来的,数据是怎么使用的也就是loss计算
我们这里选择目标检测,比较具有代表性
首先是darknet框架中loss的计算
数据的输入:
loss的计算
https://blog.****.net/jmu201521121021/article/details/86658163
caffe-SSD框架中的loss计算:
数据的输入:
loss的计算:
https://blog.****.net/qianqing13579/article/details/80146425
关于正则化的一些总结:
首先我们先不管目标检测,就仅仅简单的机器学习回归预测来说,什么是正则化:
虽然学习的特别好,但是蓝色曲线能更有效的概括数据
正则化就是在原始loss误差上
加一些东西,让误差不仅仅取决拟合参数的好坏,也取决与方程的系数,其中(c塔)就是刚刚方程y中的a、b、c、d:
(c塔)3、4的非线性能力很强,能更好的拟合方程,但是如果错了,整个loss都会随着(c塔)3、4偏移
加上正则化,能够更好的控制loss,
现在我们假设只有两个参数(c塔)1、2要学习
注意这里,只有(c塔)1、2的前提,才能看懂下面的图
蓝色的圆心是误差最小的地方,每条蓝线上每个地方的误差都是一样的
正则化的方程就是加上了在黄线上的额外误差,有的地方也叫惩罚度
交点能让两个误差的加和最小,交点处的(c塔)1、2,就是正则化获得的解
L1正则化有时候结果可能是如图,只有(c塔)1的特征被保留
所以L1正则化有时候也用于来选择对结果贡献最大的重要特征
当然,L1正则化也有其缺点,比如用批数据进行训练,每次批数据都会有稍稍不同的误差曲线
L1可能会出现多个解,L1的解不稳定
打个比方:
求街区最短路径,两个黑点的最短路径是绿色的线,是L2的解,是唯一的,而L1的解是图中红黄蓝三根线,因为他们的长度都是12,因此L1解不唯一。
为了控制正则化的强度,加一个参数(拉米达)
通过交叉熵验证,选择一个比较好的(拉米达),p是来代表对参数的正则化程度,比如L1,L2
Caffe学习(六)损失层及其参数设置
caffe都有哪些loss:
https://blog.****.net/u012177034/article/details/52144325
(1)ContrastiveLossLayer
(2)EuclideanLossLayer
(3)HingeLossLayer
(4)InfogainLossLayer
(5)MultinomialLogisticLossLayer
(6)SoftmaxLossLayer
(7)SigmoidCrossEntroyLossLayer
我们选择一个
HingeLossLayer
我们看一下源代码:
是将绝对值加和
上面说的简单的分类问题
参考博客:
傻瓜的物体检测第1部分:梯度矢量,HOG和SS
傻瓜的物体检测第2部分:CNN,DPM和Overfeat
傻瓜的物体检测第3部分:R-CNN族
傻瓜的物体检测第4部分:快速检测模型
https://lilianweng.github.io/lil-log/2017/10/29/object-recognition-for-dummies-part-1.html
https://lilianweng.github.io/lil-log/2017/12/15/object-recognition-for-dummies-part-2.html
https://lilianweng.github.io/lil-log/2017/12/31/object-recognition-for-dummies-part-3.html
https://lilianweng.github.io/lil-log/2018/12/27/object-detection-part-4.html
R-CNN网络
RCNN网络的x、y、w、h都是通过一个线性函数回归计算的,下图中的dx(p),其中x=x,y,w,h
如果是线性**函数,那么肯定就会有函数系数,就能用上正则化了
如下图,采用的是L2正则化
yolov1loss如下,通过自己的方式完成了类似正则化的处理,给每个loss赋予不同权重
但是如果是结构化项目,loss使用的都是sigmod、softmax
这些都是可以正则化的:
https://blog.****.net/qq_40432881/article/details/84989219
比如softmax:
softmax的loss
这里的k表示分类数目
这里的k表示分类数目
比如给个阈值0.5,大于0.5的视为存在,小于0.5视为没有检测出该分类
这里的m表示ground truth的数目
softmax的正则化(L2正则化)
公式中k表示分类数目,n表示什么呢,那首先就要明白,正则化中的惩罚权重是哪里来的
那我们就往上追溯,z1,z2,z3是哪里来的
z1,z2,z3是通过全连接层进行计算的,通过WX+B计算得到,即,我们公式中的(c塔)就是链接softmax层的w
softmax的loss公式有时候使用交叉熵的形式: