当前位置:   article > 正文

目标分类和目标检测学习笔记-理论篇

分类和目标检测

一、目标分类篇

1.AlexNet

网络结构

在这里插入图片描述

网络亮点

1.首次使用GPU加速网络训练

2.ReLU激活函数

关于Sigmod,ReLU,LeakyReLU激活函数的比较

3.使用LRN局部响应归一化

在这里插入图片描述

4.在全连接层的前两层中使用了 Dropout 随机失活神经元操作,以减少过拟合
在这里插入图片描述

*Note:
经 过 卷 积 后 的 矩 阵 尺 寸 大 小 计 算 公 式 为 : N = W − F + 2 P S + 1 输 入 图 片 大 小 : W × W 卷 积 核 尺 寸 : F × F 步 长 s t r i d e :   S p a d d i n g 值 : P 经过卷积后的矩阵尺寸大小计算公式为:\\ N=\frac{W-F+2P}{S}+1\\ 输入图片大小:W \times W \quad 卷积核尺寸:F \times F \quad 步长stride:\ S \quad padding值:P N=SWF+2P+1:W×W:F×Fstride: Spadding:P

2.VGG

–VERY DEEP CONVOLUTIONAL NETWORKS–

网络结构

在这里插入图片描述

网络亮点
  1. 通过堆叠多个3x3的卷积核来替代大尺度卷积核 (减少所需参数)

    可以通过堆叠两个3x3的卷积核替代5x5的卷积核,堆叠三个3x3的卷积核替代7x7的卷积核,它们拥有相同的感受野(receptive field).。

感 受 野 计 算 公 式 : F ( i ) = ( F ( i + 1 ) − 1 ) × S t r i d e + K s i z e 感受野计算公式:F(i)=(F(i+1)-1)\times Stride+Ksize F(i)=(F(i+1)1)×Stride+Ksize
在这里插入图片描述

2.通过堆叠3x3的卷积核减少了模型参数
在这里插入图片描述

3.LRN对模型效果没有改善
在这里插入图片描述

3.GoogLeNet

网络结构

在这里插入图片描述

在这里插入图片描述

网络亮点

1.引入了Inception结构(融合不同尺度的特征信息)
在这里插入图片描述

2.使用1x1的卷积核进行降维以及映射处理
在这里插入图片描述

3.添加两个辅助分类器帮助训练
在这里插入图片描述

在这里插入图片描述

4.丢弃全连接层,使用平均池化层(大大减少模型参数)

4.Resnet

**Question:**Is learning better networks as easy as stacking more layers?

img

Anwser:如图 所示,在训练集上,传统神经网络越深效果不一定越好。而 Deep Residual Learning for Image Recognition 这篇论文认为,理论上,可以训练一个 shallower 网络,然后在这个训练好的 shallower 网络上堆几层 identity mapping(恒等映射) 的层,即输出等于输入的层,构建出一个 deeper 网络。这两个网络(shallower 和 deeper)得到的结果应该是一模一样的,因为堆上去的层都是 identity mapping。这样可以得出一个结论:理论上,在训练集上,Deeper 不应该比 shallower 差,即越深的网络不会比浅层的网络效果差。但为什么会出现图 中 这样的情况呢,随着层数的增多,训练集上的效果变差?这被称为退化问题(degradation problem),原因是随着网络越来越深,训练变得原来越难,网络的优化变得越来越难。理论上,越深的网络,效果应该更好;但实际上,由于训练难度,过深的网络会产生退化问题,效果反而不如相对较浅的网络。而残差网络就可以解决这个问题的,残差网络越深,训练集上的效果会越好。(测试集上的效果可能涉及过拟合问题。过拟合问题指的是测试集上的效果和训练集上的效果之间有差距。)

网络结构

文中对比了VGG19、34-layer plain(没有residue模块)、34-layer residual模型
在这里插入图片描述

在这里插入图片描述

网络亮点

1.超深的网络结构

->梯度消失或梯度爆炸问题

->退化问题Degration Problem:
在这里插入图片描述

2.提出residual模块
在这里插入图片描述
在这里插入图片描述

3.Batch Normalization

目的:使一批feature map满足均值为0,方差为1的分布规律
Input: V a l u e s   o f   x   o v e r   a   m i n i − b a t c h : B = { x 1... m } ; P a r a m e t e r s   t o   b e   l e a r n e d : γ , β Output: { y i = B N γ , β ( x i ) } μ B ← 1 m ∑ i = 1 m x m / / m i n i − b a t c h   m e a n σ B 2 ← 1 m ∑ i = 1 m ( x i − μ B ) 2 / / m i n i − b a t c h   v a r i a n c e x i ^ ← x i − μ B σ B 2 + ϵ / / n o r m a l i z e y i ← γ x i ^ + β ≡ B N γ , β ( x i ) / / s c a l e   a n d   s h i f t \textbf{Input:}Values\ of\ x\ over\ a\ mini-batch:B=\{ x_{1...m}\}; \\Parameters\ to\ be\ learned:\gamma,\beta\\ \textbf{Output:}\{y_i=BN_{\gamma,\beta}(x_i)\}\\ \mu_B \leftarrow \frac {1}{m} \sum_{i=1}^m x_m \qquad //mini-batch\ mean\\ \sigma_B^2 \leftarrow \frac{1}{m} \sum_{i=1}^m(x_i-\mu_B)^2 \qquad //mini-batch\ variance\\ \hat{x_i} \leftarrow \frac {x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}} \qquad //normalize \\ y_i \leftarrow \gamma \hat{x_i}+\beta \equiv BN_{\gamma,\beta}(x_i) \qquad //scale\ and\ shift Input:Values of x over a minibatch:B={x1...m};Parameters to be learned:γ,βOutput:{yi=BNγ,β(xi)}μBm1i=1mxm//minibatch meanσB2m1i=1m(xiμB)2//minibatch variancexi^σB2+ϵ xiμB//normalizeyiγxi^+βBNγ,β(xi)//scale and shift

为什么残差网络会work?

我们给一个网络不论在中间还是末尾加上一个残差块,并给残差块中的 weights 加上 L2 regularization(weight decay),这样F(x)=0 是很容易的。这种情况下加上一个残差块和不加之前的效果会是一样,所以加上残差块不会使得效果变得差。如果残差块中的隐藏单元学到了一些有用信息,那么它可能比 identity mapping(即 F(x)=0)表现的更好。

*Note:–迁移学习

优势:

  • 能够快速的训练出一个理想的结果
  • 当数据集较小时也能训练出理想的效果

常见的迁移学习方式

  • 载入权重后训练所有参数
  • 载入权重后只训练最后几层参数
  • 载入权重后在原网络基础上再添加一层全连接层、仅训练最后一个全连接层

5.MobileNet

6.ShuffleNet

7.EfficientNet

8.Vision Transformer

二、目标检测篇

1.RCNN->Fast_RCNN->Faster_RCNN

RCNN(mAP:53.7% of PASCAL VOC 2010)

在这里插入图片描述

算法流程
  • 一张图像生成1000~2000个候选区域(Proposals),采用Selective Search方法

  • 对每个候选区域,使用深度网络提取特征

  • 特征送入每一类的SVM分类器,判别是否属于该类

    将2000×4096的特征矩阵与20个SVM组成的权值矩阵4096×20
    相乘,获得2000×20的概率矩阵,每一行代表一个建议框归于每个
    目标类别的概率。分别对上述2000×20维矩阵中每一列即每一类进
    行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一
    些建议框。
    在这里插入图片描述

  • 使用回归器精细修正候选框位置

Fast-RCNN(mAP:66% of PASCAL VOC 2012)
算法介绍

论文指出了R-CNN存在的问题

  • Training is a multi-stage pipeline
  • Training is expensive in space and time.
  • Object detection is slow

测试速度慢:测试一张图片约53s(CPU)。用Selective Search算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余;训练速度慢;训练所需空间大

Fast_RCNN的主要贡献:

  • Higher detection quality (mAP) than R-CNN, SPPnet
  • Training is single-stage, using a multi-task loss
  • Training can update all network layers
  • No disk storage is required for feature caching
算法流程

在这里插入图片描述

  • 一张图像生成1000~2000个候选区域(使用Selective Search方法)
  • 将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到
    特征图上获得相应的特征矩阵
  • 将每个特征矩阵通过ROI Pooling层缩放到7x7大小的特征图,接着将
    特征图展平通过一系列全连接层得到预测结果
算法重点内容
  • 一次性计算整张图像特征
    在这里插入图片描述

  • 训练数据的采样(计算Loss时正、负样本选取)
    在这里插入图片描述

  • 损失函数 Multi-task loss

    L ( p , u , t u , v ) = L c l s ( p , u ) + λ [ u ≥ 1 ] L l o c ( t u , v ) p 是 分 类 器 预 测 的 s o f t m a x 概 率 分 布 p = { p 0 , . . . , p k } u 对 应 目 标 真 实 类 别 标 签 分 类 损 失 : L c l s ( p , u ) = − l o g   p u 边 界 框 回 归 损 失 : L l o c ( t u , v ) = ∑ i ∈ { x , y , w , h } s m o o t h L 1 ( t i u − v i ) s m o o t h L 1 ( x ) = { 0.5 x 2 i f ∣ x ∣ < 1 ∣ x ∣ − 0.5 o t h e r w i s e L(p,u,t^u,v)=L_{cls}(p,u)+\lambda[u\ge1]L_{loc}(t^u,v) \\p是分类器预测的softmax概率分布p=\{p_0,...,p_k\} \\u对应目标真实类别标签 \\分类损失:L_{cls}(p,u)=-log\ p_u \\边界框回归损失:L_{loc}(t^u,v)=\sum_{i\in \{x,y,w,h \}}smooth_{L_1}(t_i^u-v_i) \\ smooth_{L_1}(x)= \left\{

    0.5x2if|x|<1|x|0.5otherwise
    \right. L(p,u,tu,v)=Lcls(p,u)+λ[u1]Lloc(tu,v)psoftmaxp={p0,...,pk}u:Lcls(p,u)=log puLloc(tu,v)=i{x,y,w,h}smoothL1(tiuvi)smoothL1(x)={0.5x2ifx<1x0.5otherwise

Faster R-CNN (mAP:70.4% on PASCAL VOC 2012)
算法流程

在这里插入图片描述

  • 将图像输入网络得到相应的特征图
  • 使用RPN结构生成候选框,将RPN生成的候选框投影到
    特征图上获得相应的特征矩阵
  • 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图
    接着将特征图展平通过一系列全连接层得到预测结果
算法重点内容
  • RPN(Region Proposal Networks),anchor box
    在这里插入图片描述

在这里插入图片描述

对于一张1000x600x3的图像,大约有60x40x9(20k)个anchor,忽略跨越边界的anchor以后,剩下约6k个anchor。对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片只剩2k个候选框。

  • 正负样本选取
    在这里插入图片描述
    在这里插入图片描述

  • RPN损失函数

L ( p i , t i ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) p i 表 示 第 i 个 a n c h o r 预 测 为 真 实 标 签 的 概 率 p i ∗ 当 为 正 样 本 时 为 , 当 为 负 样 本 时 为 0 t i 表 示 预 测 第 i 个 a n c h o r 的 边 界 框 回 归 参 数 t i ∗ 表 示 第 i 个 a n c h o r 对 应 的 G T B o x 的 边 界 回 归 参 数 N c l s 表 示 一 个 m i n i − b a t c h 中 的 样 本 数 量 256 N r e g 表 示 a n c h o r 位 置 的 个 数 , 约 2400 L({p_i},{t_i})=\frac {1}{N_{cls}}\sum_i L_{cls}(p_i,p_i^*)+\lambda \frac {1}{N_{reg}}\sum_i p_i^* L_{reg}(t_i,t_i^*) \\p_i表示第i个anchor预测为真实标签的概率 \\p_i^*当为正样本时为,当为负样本时为0 \\t_i表示预测第i个anchor的边界框回归参数 \\t_i^*表示第i个anchor对应的GTBox的边界回归参数 \\N_{cls}表示一个mini-batch中的样本数量256 \\N_{reg}表示anchor位置的个数,约2400 L(pi,ti)=Ncls1iLcls(pi,pi)+λNreg1ipiLreg(ti,ti)piianchorpi0tiianchortiianchorGTBoxNclsminibatch256Nreganchor2400

  • Fast R-CNN Multi-task loss 同(Fast R-CNN部分)
    L ( p , u , t u , v ) = L c l s ( p , u ) + λ [ u ≥ 1 ] L l o c ( t u , v ) p 是 分 类 器 预 测 的 s o f t m a x 概 率 分 布 p = { p 0 , . . . , p k } u 对 应 目 标 真 实 类 别 标 签 L(p,u,t^u,v)=L_{cls}(p,u)+\lambda[u\ge1]L_{loc}(t^u,v) \\p是分类器预测的softmax概率分布p=\{p_0,...,p_k\} \\u对应目标真实类别标签 L(p,u,tu,v)=Lcls(p,u)+λ[u1]Lloc(tu,v)psoftmaxp={p0,...,pk}u
总结

Two_stages典型框架
在这里插入图片描述

2.SSD:Single Shot MultiBox Detector

简介:SSD网络是作者Wei Liu在ECCV 2016上发表的论文。对于输入尺寸300x300的网络使用Nvidia Titan X在VOC 2007测试集上达到74.3%mAP以及59FPS,对于512x512的网络,达到了76.9%mAP超越当时最强的Faster RCNN(73.2%mAP)。真正的实时

网络结构

在这里插入图片描述

在这里插入图片描述

Faster RCNN存在的问题

  • 对小目标检测效果很差
  • 模型大,检测速度较慢
论文重点
  • One_stage
    在这里插入图片描述

  • 在不同特征尺度上预测不同尺度的目标

  • Default Box 的scale以及aspect设定
    在这里插入图片描述

  • Predictor的实现
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 正负样本的选取
    在这里插入图片描述

在这里插入图片描述

  • 损失计算
    L ( x , c , l , g ) = 1 N ( L c o n f ( x , c ) ) + α L l o c ( x , l , g ) 其 中 N 为 匹 配 到 的 正 样 本 个 数 类 别 损 失 : L c o n f ( x , c ) = − ∑ i ∈ P o s N x i j p l o g ( c i p ^ ) − ∑ i ∈ N e g l o g ( c i 0 ^ ) w h e r e c i p ^ = e x p ( c i p ) ∑ p e x p ( c i p ) c i p ^ 为 预 测 的 第 i 个 d e f a u l t   b o x 对 应 的 G T B o x ( 类 别 是 P ) 的 类 别 概 率 x i j p = 0 , 1 为 第 i 个 d e f a u l t   b o x 匹 配 到 的 第 j 个 G T B o x ( 类 别 是 P ) L(x,c,l,g)=\frac {1}{N}(L_{conf}(x,c))+\alpha L_{loc}(x,l,g) \\其中N为匹配到的正样本个数\\ \\类别损失:L_{conf}(x,c)=-\sum_{i \in Pos}^Nx_{ij}^p log(\hat{c_i^p})-\sum_{i \in Neg}log(\hat{c_i^0}) \quad where \quad \hat{c_i^p}=\frac {exp(c_i^p)}{\sum_p exp(c_i^p)} \\ \hat{c_i^p}为预测的第i个default\ box对应的GTBox(类别是P)的类别概率 \\ x_{ij}^p={0,1}为第i个default\ box匹配到的第j个GTBox(类别是P) L(x,c,l,g)=N1(Lconf(x,c))+αLloc(x,l,g)NLconf(x,c)=iPosNxijplog(cip^)iNeglog(ci0^)wherecip^=pexp(cip)exp(cip)cip^idefault boxGTBox(P)xijp=0,1idefault boxjGTBox(P)
    在这里插入图片描述

3.YOLOv1->YOLOv2->YOLOv3->YOLOv3 SPP

YOLOv1

表现:mAP:63.4% 45FPS 448x448

论文思想
  • 将一幅图像分成SxS个网格(grid cell),如果某个object的中心落在这个网格中,则这个网格就负责预测这个object
    在这里插入图片描述

  • 每个网格要预测B个bounding box,每个bounding box除了要预测位置之外,还要附带预测一个confidence值。每个网格还要预测C个类别的分数
    在这里插入图片描述

在这里插入图片描述

网络结构

在这里插入图片描述

在这里插入图片描述

损失函数

在这里插入图片描述

YOLOv2

YOLOv2的尝试:

  • Batch Normalization

  • High Resolution Classifier

  • Convolutional With Anchor Boxes
    在这里插入图片描述

  • Dimension Clusters聚类

  • Direct location prediction

  • Fine-Grained Features

    引入passthrough layer,将低层的feature与高层的进行拼接
    在这里插入图片描述

在这里插入图片描述

  • Multi-Scale Training

    每经过10个batches网络会随机选择新的图像输入尺寸,增加了网络在处理不同尺寸大小图片时的鲁棒性。
    在这里插入图片描述

YOLOv3 SPP
  • Mosaic图像增强

  • SPP模块
    在这里插入图片描述

  • CIOU Loss

    GIoU、DIoU、CIoU

    一个优秀的回归定位损失应该考虑到3种几何参数:
    重叠面积 中心点距离 长宽比
    C I o U = I o U − ( ρ 2 ( b , b g t ) c 2 + α v ) v = 4 π 2 ( arctan ⁡ w g t h g t − arctan ⁡ w h ) 2 α = v ( 1 − I o U ) + v L C I o U = 1 − C I o U C I o U=I o U-\left(\frac{\rho^{2}\left(b, b^{g t}\right)}{c^{2}}+\alpha v\right) \\v=\frac{4}{\pi^{2}}\left(\arctan \frac{w^{g t}}{h^{gt} }-\arctan \frac{w}{h}\right)^{2} \\\alpha=\frac{v}{(1-I o U)+v} \\L_{CIoU}=1-CIoU CIoU=IoU(c2ρ2(b,bgt)+αv)v=π24(arctanhgtwgtarctanhw)2α=(1IoU)+vvLCIoU=1CIoU

  • Focal Loss

    Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重
    二 分 类 交 叉 熵 损 失 : C E ( p , y ) = { − log ⁡ ( p )  if  y = 1 − log ⁡ ( 1 − p )  otherwise  为 了 方 便 , 用 p t 表 示 样 本 为 t r u e   c l a s s 的 概 率 则 p t = { p  if  y = 1 1 − p  otherwise  C E ( p , y ) = C E ( p t ) = − log ⁡ ( p t ) 引 入 调 制 系 数 ( 1 − p t ) γ F L ( p t ) = − ( 1 − p t ) γ log ⁡ ( p t ) 二分类交叉熵损失:\mathrm{CE}(p, y)=\left\{

    log(p) if y=1log(1p) otherwise 
    \right. \\为了方便,用p_t表示样本为true\ class的概率 \\则p_{\mathrm{t}}=\left\{
    p if y=11p otherwise 
    \right. \\\mathrm{CE}(p, y)=\mathrm{CE}\left(p_{\mathrm{t}}\right)=-\log \left(p_{\mathrm{t}}\right) \\ 引入调制系数(1-p_t)^{\gamma} \qquad \mathrm{FL}\left(p_{\mathrm{t}}\right)=-\left(1-p_{\mathrm{t}}\right)^{\gamma} \log \left(p_{\mathrm{t}}\right) CE(p,y)={log(p)log(1p) if y=1 otherwise 便pttrue classpt={p1p if y=1 otherwise CE(p,y)=CE(pt)=log(pt)(1pt)γFL(pt)=(1pt)γlog(pt)
    两个重要性质:

    • 当一个样本被分错的时候,pt是很小的,那么调制因子(1-Pt)接近1,损失不被影响;当Pt→1,因子(1-Pt)接近0,那么分的比较好的(well-classified)样本的权值就被调低了。因此调制系数就趋于1,也就是说相比原来的loss是没有什么大的改变的。当pt趋于1的时候(此时分类正确而且是易分类样本),调制系数趋于0,也就是对于总的loss的贡献很小
    • 当γ=0的时候,focal loss就是传统的交叉熵损失,当γ增加的时候,调制系数也会增加。 专注参数γ平滑地调节了易分样本调低权值的比例。γ增大能增强调制因子的影响,实验发现γ取2最好。直觉上来说,调制因子减少了易分样本的损失贡献,拓宽了样例接收到低损失的范围。当γ一定的时候,比如等于2,一样easy example(pt=0.9)的loss要比标准的交叉熵loss小100+倍,当pt=0.968时,要小1000+倍,但是对于hard example(pt < 0.5),loss最多小了4倍。这样的话hard example的权重相对就提升了很多
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/910570
推荐阅读
相关标签
  

闽ICP备14008679号