【yolov2】原理详解 &与Yolov1对比 & batch norm详解

yolov1模型和预测内容

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第1张图片
【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第2张图片

相对于Yolov1引入了如下内容:

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第3张图片

一.引入了Batch Normalization

原理

提升了4%map
它把样本的数据分布变成了以0为中心,标准差为1的分布。
激活函数如sigmoid和双曲正切激活函数,在0附近是非饱和区, 如果输出太大或者太小,则会进入激活函数的饱和区(饱和区意味着梯度消失,难以训练  )

所以用batch norm强行把神经元的输出集中在0附近。

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第4张图片

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第5张图片

举例:

batch norm前,某一层的输出
【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第6张图片
batch norm后,某一层的输出
【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第7张图片
都在0附近,在sigmoid的非饱和区。大大减少梯度消失的问题。

batch norm的方法和流程

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第8张图片

batch norm的效果可视化

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第9张图片
【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第10张图片
如上,就算没有把区间压到0附近,也会往中间靠

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第11张图片

batch norm出现的位置

一般在线性层的后面,激活函数的前面。

batch norm的好处总结

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第12张图片

补充:batch norm 和 dropout不能同时使用

同时使用时性能降低

高分辨率分类器

一般使用的图像分类backbone都是在Imagenet以很小的分辨率训练的,比如224x224
可是yolov1目标检测时模型的输入图像size为448x448
使用的时候要在小分辨率图像上训练的网络要学习适应448x448分辨率的图像。这造成了麻烦,降低了性能。
所以Yolov2的图像分类backbone直接在448x448数据集上训练。让网络适应大分辨率的输入。
最终提高了 3.5% map

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第13张图片

锚框机制

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第14张图片

把图片分成13x13个gred cell,每个grid cell设置5个锚框,不同的宽高比。
锚框的作用:如下面的两个锚框,一个天生适合预测细高的物体,比如人体。一个天生适合宽窄的物体,比如汽车。而不像Yolov1那样,两个预测框的区分度不大。

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第15张图片

损失函数

【yolov2】原理详解 &与Yolov1对比 & batch norm详解_第16张图片

参考视频

https://www.bilibili.com/video/BV1Q64y1s74K/?spm_id_from=333.999.top_right_bar_window_history.content.click&vd_source=ebc47f36e62b223817b8e0edff181613

你可能感兴趣的:(目标检测,YOLO,深度学习,目标检测)