目标检测知识总结

写在前面

这篇博客用以记录我在学习目标检测过程中看到的各种知识点。大多数是看别人的博客摘过来的,参考博客已标出,如有错误,还请指出。

1、卷积神经网络中的特征图(feature map)

在每个卷积层,数据都是以三维形式存在的。你可以把它看成多个二维图片叠在一起,其中每一个称为一个feature map。在输入层,如果是灰度图片,那就只有一个feature map;如果是彩色图片,一般就是3个feature map(红绿蓝)。层与层之间会有若干个卷积核(kernel),上一层中每个feature map跟每个卷积核做卷积,都会产生下一层的一个feature map。  feature map(下图红线标出) 即:该层卷积核的个数,有多少个卷积核,经过卷积就会产生多少个feature map,也就是下图中 豆腐皮儿的层数、同时也是下图豆腐块的深度(宽度)!!这个宽度可以手动指定,一般网络越深的地方这个值越大,因为随着网络的加深,feature map的长宽尺寸缩小,本卷积层的每个map提取的特征越具有代表性(精华部分),所以后一层卷积层需要增加feature map的数量,才能更充分的提取出前一层的特征,一般是成倍增加(不过具体论文会根据实验情况具体设置)!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
卷积网络在学习过程中保持了图像的空间结构,也就是说最后一层的激活值(feature map)总和原始图像具有空间上的对应关系,具体对应的位置以及大小,可以用感受野来度量。利用这点性质可以做很多事情:
  1、前向计算。我们直接可视化网络每层的 feature map,然后观察feature map 的数值变化. 一个训练成功的CNN 网络,其feature map 的值伴随网络深度的增加,会越来越稀疏。这可以理解网络取精去噪。
  2、反向计算。根据网络最后一层最强的激活值,利用感受野求出原始输入图像的区域。可以观察输入图像的那些区域激活了网络,利用这个思路可以做一些物体定位。
  CNN可以通过感受野和权值共享减少了神经网络需要训练的参数的个数。卷积网络的核心思想是将:局部感受野、权值共享(或者权值复制)以及时间或空间亚采样这三种结构思想结合起来获得了某种程度的位移、尺度、形变不变性。
  如果我们有一个1000x1000像素的图像,有1百万个隐层神经元,那么他们全连接的话(每个隐层神经元都连接图像的每一个像素点),就有1000x1000x1000000=1012个连接,也就是1012个权值参数。然而图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域,然后在更高层,将这些感受不同局部的神经元综合起来就可以得到全局的信息了。这样,我们就可以减少连接的数目,也就是减少神经网络需要训练的权值参数的个数了。
  假如局部感受野是10x10,隐层每个感受野只需要和这10x10的局部图像相连接,所以1百万个隐层神经元就只有一亿个连接,即10^8个参数。比原来减少了四个0(数量级)。
  隐含层的每一个神经元都连接10x10个图像区域,也就是说每一个神经元存在10x10=100个连接权值参数。那如果我们每个神经元这100个参数是相同的呢?也就是说每个神经元用的是同一个卷积核去卷积图像。这样我们就只有多少个参数??只有100个参数啊!不管你隐层的神经元个数有多少,两层间的连接我只有100个参数啊!这就是权值共享。
  假如一种滤波器,也就是一种卷积核提取图像的一种特征,例如某个方向的边缘。那么我们需要提取不同的特征,只需要加多加几种滤波器就可以了。所以假设我们加到100种滤波器,每种滤波器的参数不一样,表示它提出输入图像的不同特征,例如不同的边缘。这样每种滤波器去卷积图像就得到对图像的不同特征的放映,我们称之为Feature Map。所以100种卷积核就有100个Feature Map。这100个Feature Map就组成了一层神经元。这一层有多少个参数了?100种卷积核x每种卷积核共享100个参数=100x100=10K,也就是1万个参数。才1万个参数。
  隐层的参数个数和隐层的神经元个数无关,只和滤波器的大小和滤波器种类的多少有关。隐层的神经元个数怎么确定呢?它和原图像,也就是输入的大小(神经元个数)、滤波器的大小和滤波器在图像中的滑动步长都有关!例如,我的图像是1000x1000像素,而滤波器大小是10x10,假设滤波器没有重叠,也就是步长为10,这样隐层的神经元个数就是(1000x1000 )/ (10x10)=100x100个神经元了。注意了,这只是一种滤波器,也就是一个Feature Map的神经元个数哦,如果100个Feature Map就是100倍了。由此可见,图像越大,神经元个数和需要训练的权值参数个数的贫富差距就越大。

1.1、参考博客

  • https://blog.csdn.net/boon_228/article/details/81238091

2、感受野

2.1、感受野的定义

在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应输入图上的区域,如图所示。
在这里插入图片描述

2.2、感受野的例子

(1)两层33的卷积核卷积操作之后的感受野是55,其中卷积核(filter)的步长(stride)为1、padding为0,如图
在这里插入图片描述

(2)三层33卷积核操作之后的感受野是77,其中卷积核的步长为1,padding为0,如图
在这里插入图片描述

2.3、感受野的计算

感受野计算时有下面几个知识点需要知道:

  • 最后一层(卷积层或池化层)输出特征图感受野的大小等于卷积核的大小。
  • 第i层卷积层的感受野大小和第i层的卷积核大小和步长有关系,同时也与第(i+1)层感受野大小有关。
  • 计算感受野的大小时忽略了图像边缘的影响,即不考虑padding的大小。
    关于感受野大小的计算方式可以采用从最后一层往前计算的方法,即先计算最深层在前一层上的感受野,然后逐层传递到第一层,使用的公式可以表示如下:
    在这里插入图片描述
    其中,RFi是第i层卷积层的感受野,RFi+1是(i+1)层上的感受野,stride是卷积的步长,Ksize是本层卷积核的大小。

2.4、参考博客

  • https://blog.csdn.net/program_developer/article/details/80958716

3、图像的上采样和下采样

缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个

  • 使得图像符合显示区域的大小
  • 生成对应图像的缩略图。

放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上。

4、隐藏层

4.1、什么是隐藏层

在这里插入图片描述
卷积神经网络除了输入层和输出层之外,还有四个基本的神经元层,在三层神经网络中,这些层被称为隐藏层。

  • 卷积层(Convolution)
  • 激活层(Activation)
  • 池化层(Pooling)
  • 完全连接层(Fully connected)

有的神经网络可以没有隐藏层,而只有输入层和输出层,其实这就是一个逻辑回归,一个线性的或者非线性的回归模型。

5、前向传播和反向传播

前向传递输入的信号直至输出产生误差,反向传播误差信息更新权重矩阵,权重在信息双向流动中得到优化。这句话概括了前向传播和反向传播。

5.1、前向传播

5.2、反向传播

输出层得到误差,输出层将误差反向传播到隐藏层,然后应用梯度下降。其中将误差从末层往前传递的过程需要链式法则(Chain Rule),因此反向传播算法可以说是梯度下降在链式法则中的应用。

5.2.1、反向传播公式推导

这里的公式推导是学习的B站上的学习视频,点击链接, 写的不完整,留给我自己参考回忆。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2.2、反向传播公式推导

首先明确各种符号的表示含义,弄明白了这些,就等于明白了一半。

  • 权重的表示
    W j k l W^l_{jk} Wjkl l − 1 l-1 l1层的第 k k k个神经元到 l l l层第 j j j个神经元中间的权重。
    在这里插入图片描述

  • 偏置和激活值的表示
    b j l b^l_j bjl:第 l l l层中的第 j j j个神经元的偏置
    a j l a^l_j ajl:第 l l l层中的第 j j j个神经元的激活值
    在这里插入图片描述

通过上面的表示手法,我们有公式表达 a j l a^l_j ajl
a j l = σ ( ∑ k w j k l a k l − 1 + b j l ) , ( 23 ) a^l_j=\sigma\big(\sum_kw^l_{jk}a^{l-1}_k+b^l_j\big), (23) ajl=σ(kwjklakl1+bjl),23
这个公式用来表达第 l l l层第 j j j个神经元的激活值。
其中的和是在 l − 1 l-1 l1层上所有的神经元 k k k上。

  • 通过矩阵的方式表示
    • 为了将公式(23)以矩阵的方式表达出来,我们为每一个 l l l层定义一个权重矩阵: w l w^l wl。权重矩阵 w l w^l wl的各个条目(entries )用来表示连接第 l l l层各个神经元的权重。也就是说,在 j j j k k k列的条目(entry)就是 w j k l w^l_{jk} wjkl
    • 同理,对于每一个 l l l层,我们定义一个偏差向量: b l b^l bl。偏差矢量的组成部分就是 l l l层中每一个神经元的偏差 b j l b^l_j bjl
    • 最后,我们定义激活值向量: a l a^l al,它由 a j l a^l_j ajl组成。
    • σ \sigma σ来表示矢量 v v v中的每一个元素: σ ( v ) \sigma(v) σ(v)。其中 σ ( v ) \sigma(v) σ(v)就是 σ ( v ) j = σ ( v j ) \sigma(v)_j=\sigma(v_j) σ(v)j=σ(vj)。举个例子: f ( x ) = x 2 → f ( [ 2 3 ] ) = [ f ( 2 ) f ( 3 ) ] = [ 4 9 ] , ( 24 ) f(x)=x^2\to f(\begin{bmatrix}2\\3\end{bmatrix})=\begin{bmatrix}f(2)\\f(3)\end{bmatrix}=\begin{bmatrix}4\\9\end{bmatrix}, (24) f(x)=x2f([23])=[f(2)f(3)]=[49]24
    • 通过这些符号表示,公式(23)可以表示为 a l = σ ( w l a l − 1 + b l ) , ( 25 ) a^l=\sigma(w^la^{l-1}+b^l), (25) al=σ(wlal1+bl)25

从上,我们可以看出每一层的激活值与上面一层的激活值有关。

z l ≡ w l a l − 1 + b l z^l\equiv w^la^{l-1}+b^l zlwlal1+bl,我们称 z l z^l zl l l l层神经元的加权输入。因此,公式(25)可以表示为 a l = σ ( z l ) a^l=\sigma(z^l) al=σ(zl)。 其中 z l z^l zl表示为: z j l = ∑ k w j k l a k l − 1 + b j l z^l_j=\sum_kw^l_{jk}a^{l-1}_k+b^l_j zjl=kwjklakl1+bjl,所以 z j l z^l_j zjl就是第 l l l层第 j j j个神经元的激活函数的加权输入。


反向传播的目标就是计算网络中成本函数对任意权重偏差的偏导数 ∂ C / ∂ w , ∂ C / ∂ b \partial C/\partial w, \partial C/\partial b C/wC/b。为了使反向传播,我们需要对成本函数做出两条假设,在作出假设之前,我们知道二次方成本函数: C = 1 2 n ∑ x ∥ y ( x ) − a L ( x ) ∥ 2 , ( 26 ) C=\cfrac{1}{2n}\sum_{x}\begin{Vmatrix}y(x)-a^L(x)\end{Vmatrix}^2, (26) C=2n1xy(x)aL(x)

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值