在神经网络中Batch Norm在线性层的后面,激活函数层的前面。
它把线性层的输出变成了以0为中心,标准差为1的分布,进入sigmoid激活函数的非饱和区。
激活函数如sigmoid和双曲正切激活函数,在0附近是非饱和区, 如果输出太大或者太小,则会进入激活函数的饱和区(饱和区意味着梯度消失,难以训练)


如上,就算没有把区间压到0附近,也会往中间靠

batch norm前,某一层的输出

batch norm后,某一层的输出

都在0附近,在sigmoid的非饱和区。大大减少梯度消失的问题。

Batch Normalization(Batch norm)可以加快收敛主要因为它有以下优点:
如图线性层的输出大于5时,就将要进入梯度函数的饱和区(梯度接近0),造成梯度消失(反向传播的时候是要用到激活函数的梯度的)。
在采用了Batch Normalization之后,线性层的输出始终被压缩到0附近,因此可以容忍更高的学习率,使得梯度下降的幅度更大,从而加快训练速度。



同时使用时性能降低

卷积操作是一种线性操作,通常用于特征的提取,通过卷积核的加权求和来得到新的像素值。

原文:
https://blog.csdn.net/weixin_51571728/article/details/121545254
余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比欧氏距离,余弦距离更加注重两个向量在方向上的差异。
是什么?yolov5系列最小的模型,s是small。
适合什么情况下使用?适合在计算资源有限的设备上使用。如移动设备或边缘设备。
速度和准确率:速度最快,准确率最低。
输入分辨率:通常为640x640
# Parameters
nc: 80 # number of classes
depth_multiple: 0.33 # 控制模型的深度
width_multiple: 0.50 # layer channel multiple
anchors:
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
是什么?yolov5系列中等的模型,m是medium。
适合什么情况下使用?适合有一定计算能力的设备。
速度和准确率:速度中,准确率中。
是什么?yolov5系列较大的模型,l是large。
适合什么情况下使用?适合较强计算能力的设备。
速度和准确率:速度慢,准确率较高。
输入分辨率:通常为896x896
之前用Yolonas的large版,3050显卡的设备连接网络摄像头进行检测,很卡。摄像头上面的时间,两秒左右才跳一下。所以该模型适合3050以上的显卡。
# Parameters
nc: 80 # number of classes
depth_multiple: 1.0 # model depth multiple
width_multiple: 1.0 # layer channel multiple
anchors:
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
是什么?这是 YOLOv5 系列中最大的模型。“x” 代表 “extra large”(超大)。
适合什么情况下使用?适用于需要极高准确度的任务,且具有强大计算能力(如 GPU)的设备。
速度和准确率:速度最慢,准确率最高。
YOLOv5n:这是 YOLOv5 系列中的一个变体,专为 Nano 设备(如 NVIDIA Jetson Nano)进行优化。YOLOv5n 在保持较快速度的同时,提供适用于边缘设备的准确度。