caffe-ssd的loss和darknet-yolov3的loss(L1loss正则化+L2loss正则化)-更新对目标检测loss的sikao

leader告诉我,上手一个深度学习框架,最先必须学会

框架的头和尾,也就是数据是怎么读进来的,数据是怎么使用的也就是loss计算

我们这里选择目标检测,比较具有代表性

首先是darknet框架中loss的计算

数据的输入:

loss的计算

https://blog.csdn.net/jmu201521121021/article/details/86658163


caffe-SSD框架中的loss计算:

数据的输入:

loss的计算:

https://blog.csdn.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.csdn.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.csdn.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公式有时候使用交叉熵的形式:

猜你喜欢

转载自blog.csdn.net/baidu_40840693/article/details/89016521