[D27] 物件侦测(8)

接下来详细一点的说明 YOLOv4 的内部架构!
目标检测通常由以下几个部分组成:

  • Input: 指图片的输入
  • Backbone: 在 ImageNet 预训练的骨架
  • Neck: 通常用来提取不同层级的特徵图
  • Head:预测对象类别及 bndBox 的检测器,通常分两类 Dense Prediction (one stage)和 Sparse Prediction (two stage)

YOLOv4 模型的架构是由这三部分组成的:

  • BackBone: CSPDarknet53
  • Neck: SPP+PAN
  • HEAD:YOLO HEAD

Dropout

Dropout 是一个有效降低 Overfitting 的方法,与权重衰减的精神相似,皆是在训练模型时使用的正则化方法,在训练时每一次的迭代(epoch)皆以一定的机率丢弃隐藏层神经元,而被丢弃的神经元不会传递讯息。

在反向传播时,被丢弃的神经元其梯度是 0,所以在训练时不会过度依赖某一些神经元,藉此达到对抗 Overfitting 的效果。

要特别注意的是,因为 dropout 只能在训练时使用,所以会造成测试时向前传播的讯息大於训练时向前传播的讯息,通常会在测试时乘以 1/p 改善这个问题。(这个方式叫 inverted dropout)

为了避免结果大於训练的情况,需要测试的时候将输出结果乘以 1/p 使下一层的输入规模保持不变!
而利用inverted dropout,可以在训练的时候直接将dropout後留下的权重扩大 1/p 倍,这样就可以使结果的scale保持不变,而在预测的时候也不用做额外的操作了,更方便一些~

Overfitting:Overfitting 顾名思义就是机器过於纠结误差值,过度学习训练资料,变得无法顺利去预测或分辨不是在训练资料内的其他资料。

Weight decay

权重衰减的主要目的是「抑制更新参数的幅度」,在训练模型时预测的结果会通过 loss 函数评估结果与真实值的差距,再藉由梯度下降更新参数,而权重衰减的方法是在 loss 函数加上一个惩罚项

用线性回归中的例子来看:损失函数为 loss(w, b),我们在这个损失函数後加上一个带有 L2 范数的惩罚项,其中 λ 是惩罚项的倍率,当 λ=0 时,则权重衰减不会发生;当 λ 越大时,惩罚的比率较高,权重衰减的程度也就跟着变大。

weight decay 也是一种对抗模型 overfitting 的正则化方法。
也了解到透过修改惩罚项的系数 λ,改变权重衰减的倍率对於训练模型会有不一样的效果。

图片来源1
图片来源2
图片来源3


<<:  D27 - 走!去浏览器学 Drag & Drop 自己组汉堡包

>>:  [Day27] String methods 字串操作方法(2)

30天程序语言研究

今天是30天程序语言研究的第十九天,由於深度学习老师多让我们上了python的进阶课程里面包括之前没...

Day14 - Button外传

前3天已经学会了Button用法 以往我们处理按钮的点击事件 都是先抓到元件id,才去设定点击事件 ...

成熟度模型( A maturity model)

-CMM 和 CMMI 成熟度水平比较 成熟度模型“可以”(而不是应该或必须)定义五个成熟度级别,...

C# 入门笔记01

程序架构 Namespace (自订命名空间) 就是由自己写的程序库之名称,一个程序库只能有一个自订...

【Day21】 Transformer 新手包 (一)

为什麽 Transformer ? 回顾 LSTM 与 CNN ,在一开始处理 time-seque...