目录:
1、感受野
2、优化函数
3、激活函数
4、loss 函数。
前言
文章有点长,内容有点丰富,基本涵盖整个深度卷积神经网络,涉及
网络中的感受野、激活函数、loss函数以及各种相关知识。
Part 一、 感受野 receptive field
receptive filed 中文叫感受野,是卷积神经网络中最重要的概念之一,各类目标检测任务都是基于不同的感受野而设计的,比如SSD(single shot detection)融合高分辨率的低层特征做检测解决小目标检测问题,因为小物体随着网络层数加深感受野变大在最后的feature maps中消失,又比如YOLO对成群的物体检测效果较差,天上飞的大雁群,地上跑的羊群,由于感受野变大,成群的物体会连成一片进行检测,导致检测异常,回归的boundingbox有可能每次运行的结果都不同。
感受野是什么?
The receptive field is defined as the region in the input space
that a particular CNN’s feature is looking at (i.e. be affected by).
翻译过来就是,在当前的feature map上,单个像素点对应原始输入图像的区域大小,拿原图来说,感受野就是1,单个像素点对应原图的区域就是这个像素所以是1,现在如果通过一个3*3的卷积核得到新的feature map,那么这个特征图上每个像素点对应原图上一个3*3区域,感受野就是3,原图和第一层卷积后的特征图的感受野比较直白,后面层感受野的计算稍显复杂,但还是有规律可循的。
层层卷积和池化的过程是下采样的过程,这里的小采样是指分辨率逐渐变小的过程,所以无论是卷积或者池化操作后得到的特征图上的特征值虽然在当前空间上位置上是连接在一起的,但是如果对应到原图它们之间都是有一定间隔的这个又叫做jump,这个jump跟进行卷积或池化操作时的步长有关。此外,当前层的感受野是前面所有层感受野堆叠起来的,所以计算当前第n层感受野需要计算前n-1层的感受野,前n-1层的感受野通过计算前n-2层感受野得到,这个计算过程是一个递归过程。
1、原始输入尺寸n,jump j0=1,r0=1,start0=0.5
# r0 表示原始输入图像的感受野
# start0表示当前特征图上的第一个值在原图中的位置
# nout 表示输出特征图的尺寸
特征图宽和高的计算方式:
p 代表padding的规模,可以是1,2等整数也可以是‘valid’或‘same',’valid‘表示padding的规模是0,’same‘表示padding的规模要保证卷积后的特征图和原图一样大小,k是卷积核的尺寸,s代表步长。
当前层的jump在上一层的特征图中,计算公式为:
其中, 表示当前层的上一层特征图中存在的jump,
表示经过当前层的卷积后得到的特征图中的jump,也即为下一层计算感受野所需要引入的jump。
感受野的计算公式:
是当前层的感受野大小,
是但前层的上一层的感受野大小,k是卷积核尺寸。
最后是关于特征图上第一个元素在原始输入中的空间位置:
图一是这个过程的描述示例。
在参考资料[1]中有实现这个过程的python代码,计算的是AlexNet中每一层的上述参数,可以根据实际需要进行更改,代码不复杂。
Part 二、优化函数 optimizer functions
假设你对机器学习或者深度学习有一定了解,二者模型参数的学习方式都是梯度下降,而不同的优化函数改变的是参数的调整方向以及量级,至于为什么是梯度下降这里简单解释一下:
1、假设模型服从函数: 这里的
是向量
2、假设有大量的训练样本,模型通过不断的调整使得对于样本中的
代入函数中的输出是
或者是无限趋近
。
3、如何确定训练得到的模型参数满足2中的要求或者评估模型的效果呢
4、引入loss函数,,其中

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



