Record study record life
大创第七次汇报
大创第七次汇报

大创第七次汇报

汇报ppt

File name : 第7次汇报-1.pdf

CAM论文

File name : Learning-Deep-Features-for-Discriminative-Localization.pdf

Grad-CAM论文

File name : Grad-CAM-Visual-Explanations-from-Deep-Networks-via-Gradient-based-Localization.pdf

卷积神经网络

卷积神经网络工作原理

 

 

卷积

卷积神经网络 是一个函数或者说是黑箱

有输入有输出

输入就是二维像素阵列(图片)

输入就是这个图片是啥 分类结果等

 

 

对计算机来说看到的就是像素阵列 灰度图

比如我们将图中的每个像素小方块填上-1和1两种数字,假设图片是黑白的,黑色用-1表示,白色用1表示,那么由计算机识别左图和右图,计算机会认为它们不是一样的,因为左图上某一位置的1或者-1在右图同一位置上不是相同的数字。

 

 

特征–》卷积核、特征提取器

future map(特征图)

在图像矩阵中依次取卷积核大小的矩阵(3*3)和卷积核作内积,得到的内积和取平均值,填入新的矩阵中,新矩阵被称为Feature Map

查看源图像

池化

池化 pooling(下采样) (多个像素阵列缩小为1个)池化虽然会使得图像变得模糊但不影响图像的辨认跟位置判断

如人脸特征很多 几万个特征生成几万个future map计算量很大,自动驾驶啥的来不及;

池化–>平移不变性 —– 但是也丢失了空间信息(丢失了长宽方向的位置信息)

max pooling

average pooling

 

激活

激活函数 relu(修正线性单元)future map中大于0为本身,小于0 抹0

 

全连接层

汇总前面的所有特征

判断是x还是o

排成1列,每个值都有权重,各自乘以对应的权重加起来就能判断出是x的概率是多少

为什么叫全连接—和之前每一个神经元都相连

全连接可以放很多层 叫隐藏层

 

损失函数、梯度下降、反向传播

梯度下降与反向传播

梯度下降 是 找损失函数极小值的一种方法,
反向传播 是 求解梯度的一种方法。

 

反向传播 Backpropagation

损失函数 神经网络得到的结果和真实结果进行误差计算

将损失函数降低到最低,求导 调参

一层一层往上传到上去的

大量数据学习后 最后自动学会了采用哪个卷积核

 

梯度下降将损失函数降到最低

 

关于损失函数:

在训练阶段,深度神经网络经过前向传播之后,得到的预测值与先前给出真实值之间存在差距。我们可以使用损失函数来体现这种差距。损失函数的作用可以理解为:当前向传播得到的预测值与真实值接近时,取较小值。反之取值增大。并且,损失函数应是以参数(w 权重, b 偏置)为自变量的函数。

训练神经网络,“训练”的含义:

它是指通过输入大量训练数据,使得神经网络中的各参数(w 权重, b 偏置)不断调整“学习”到一个合适的值。使得损失函数最小。

如何训练?

采用 梯度下降 的方式,一点点地调整参数,找损失函数的极小值(最小值)

为啥用梯度下降?

由浅入深,我们最容易想到的调整参数(权重和偏置)是穷举。即取遍参数的所有可能取值,比较在不同取值情况下得到的损失函数的值,即可得到使损失函数取值最小时的参数值。然而这种方法显然是不可取的。因为在深度神经网络中,参数的数量是一个可怕的数字,动辄上万,十几万。并且,其取值有时是十分灵活的,甚至精确到小数点后若干位。若使用穷举法,将会造成一个几乎不可能实现的计算量。

第二个想到的方法就是微分求导。通过将损失函数进行全微分,取全微分方程为零或较小的点,即可得到理想参数。(补充:损失函数取下凸函数,才能使得此方法可行。现实中选取的各种损失函数大多也正是如此。)可面对神经网络中庞大的参数总量,纯数学方法几乎是不可能直接得到微分零点的。

因此我们使用了梯度下降法。既然无法直接获得该点,那么我们就想要一步一步逼近该点。一个常见的形象理解是,爬山时一步一步朝着坡度最陡的山坡往下,即可到达山谷最底部。(至于为何不能闪现到谷底,原因是参数数量庞大,表达式复杂,无法直接计算)我们都知道,向量场的梯度指向的方向是其函数值上升最快的方向,也即其反方向是下降最快的方向。计算梯度的方式就是求偏导。

这里需要引入一个步长的概念。个人理解是:此梯度对参数当前一轮学习的影响程度。步长越大,此梯度影响越大。若以平面直角坐标系中的函数举例,若初始参数x=10,步长为1 。那么参数需要调整十次才能到达谷底。若步长为5,则只需2次。若为步长为11,则永远无法到达真正的谷底。

[5分钟深度学习] #01 梯度下降算法哔哩哔哩bilibili

综合示例

  • 将图转换为像素点
  • 对原图进行6个卷积生成6个future map
  • 对6个future map下采样得到6个小图
  • 对小图再卷积,再下采样
  • 接着进行两层全连接层

 

 

 

 

(YouTube视频 How Convolutional Neural Networks work – YouTube

大白话讲解卷积神经网络工作原理哔哩哔哩bilibili

 

 

卷积神经网络
将图像拆分成对应的特点,被称为卷积核。然后查看被识别图像有无对应的卷积核来确认是否为目标物体。
用卷积核扫描目标图得出的一个二维图为特征图。
但是这样的话,岂不是有多少个卷积核就要扫描多少遍?
对于一个有大量细节,或者说相当数量分层级的细节来说,这样算法的复杂度是很高的。
所以有池化(pooling)。即缩小特征图(Feature Map)
有最大池化:选择被扫描区域内的最大值
和平均池化:取被扫描区域内的平均值 等池化方式
在处理边缘时的操作称为(Padding)zero padding(周围补0)
如果对图像采用最大池化,则在边缘补零来提取边缘特征
池化要求一定要保留原特征图的特征
卷积计算中的一个基本流程为:卷积,ReLU(修正线性单元),池化(下采样)
然后把得到的最简单的特征图们展开得到一条特征数组(?)
然后就是全链接的操作,对数组按目标图的数组权值操作得到一个判断是否为目标的概率数。
用大数据修正卷积核和全链接的行为叫机器学习
然后用反向传播(backpropagation)的算法不断修正用来处理特征数组的权链接。
得到越来越令人满意的网络。
所以甚至一开始的卷积核和权链接是随机的,只要给出的数据和反馈足够多
仍然可以得到正确的算法网络

 

 

可视化卷积神经网络

可视化卷积神经网络哔哩哔哩bilibili

CS231N斯坦福计算机视觉公开课第六讲

单个图的框:分类急+定位

多个图的框:目标检测

像素级别的抠图:语义分割、实例分割

Cam类激活热力图

cam精妙之处

  • 1.对深度学习实现可解释性分析、显著性分析
  • 2.可扩展性强,后续衍生出各种基于CAM的算法
  • 3.每张图片、每个类别,都能生成CAM热力图
  • 4.弱监督定位︰图像分类模型解决定位问题
  • 5.潜在的“注意力机制”
  • 按权重排序可得特征重要度,辅助Machine Teaching

Cam算法原理

核心插图

为什么用全卷积网络?

池化–>平移不变性 —– 但是也丢失了空间信息(丢失了长宽方向的位置信息)

全局平均池化(GAP)

  • 全局平均池化(GAP)取代全连接层
  • 减少参数量、防止过拟合
  • 而且每个GAP平均值,间接代表了卷积层最后一层输出的每个channel

为什么是averge而不是max?

max是取最大值,只是边缘点而非物体范围

averge是关键区域范围内的特征都有影响

而max则是非最大值的特征怎么变化都没用(无梯度)

缺点

  • CAM算法中,必须有GAP层,否则无法计算每个channel的权重,如果没有GAP层,需把全连接层替换为GAP再重新训练模型(用Grad-CAM改进)
  • 只能分析最后一层卷积层输出,无法分析中间层
  • 仅限图像分类任务

 

 

Grad—CAM

算法原理

核心插图

首先网络进行正向传播,得到特征层A(一般指的是最后一个卷积层的输出)和网络预测值y (注意,这里指的是softmax激活之前的数值)。假设我们想看下网络针对Tiger Cat这个类别的感兴趣区域,假设网络针对Tiger Cat类别的预测值为y^c。接着对 y^c进行反向传播,能够得到反传回特征层A的梯度信息。通过计算得到针对特征层A每个通道的重要程度,然后进行加权求和通过ReLU就行了,最终得到的结果即是Grad-CAM。

 

全连接层后预测出每个类别对应的分数y的c次方,改变yc上一层512×14×14的feature map中每一个数值A(i,j)就能知道其对最终预测分数yc的影响,使得yc对每一个A(i,j)求偏导也能获得512×14×14的channel,每个不同channel求平均得到GAP各自的权重

 

首先得到的特征层A 是网络对原图进行特征提取得到的结果,越往后的特征层抽象程度越高,语义信息越丰富,而且利用CNN抽取得到的特征图是能够保留空间信息的(Transformer同样)。所以Grad-CAM在CNN中一般A都指的是最后一个卷积层的输出。当然特征层A包含了所有我们感兴趣目标的语义信息

兼容各项任务

Guided Backprop

每一个像素对原图的影响—->得到高分辨率图(细粒度)

类别判别性弱

与Grad-CAM逐元素做乘法获得高分辨率又高类别判别能力的热力图

 

 

为什么要过ReLU激活函数?

实验表明效果跟好

可以过滤无关信息

有0使得与guided backprop乘法方便

优点

  • 无需GAP层,无需修改模型结构,无需重新训练
  • 可分析任意中间层
  • 数学上是原生CAM的推广
  • 细粒度图形分类、Machine Teaching
  • 包含Cam优点
    • 1.对深度学习实现可解释性分析、显著性分析
    • 2.可扩展性强,后续衍生出各种基于CAM的算法
    • 3.每张图片、每个类别,都能生成CAM热力图
    • 4.弱监督定位︰图像分类模型解决定位问题
    • 5.潜在的“注意力机制”
    • 按权重排序可得特征重要度,辅助Machine Teaching

缺点

  • 图像上由多个同类物体时,只能画出一块热力图
  • 不同位置的梯度值,GAP平均之后,影响是相同的
  • 梯度饱和、梯度消失、梯度噪声
  • 权重大的channel,不一定对类别预测分数贡献大
  • 只考虑从后往前的反向传播梯度,没考虑前向预测的影响
  • 深层生成的粗粒度热力图和浅层生成的细粒度热力图 都不够精准

后续算法—–Grad-CAM++

解决了前两个问题

  • 图像上由多个同类物体时,只能画出一块热力图
  • 不同位置的梯度值,GAP平均之后,影响是相同的

后续算法—ScoreCAM

解决了三个问题

  • 梯度饱和、梯度消失、梯度噪声
  • 权重大的channel,不一定对类别预测分数贡献大
  • 只考虑从后往前的反向传播梯度,没考虑前向预测的影响

 

后续算法—LaayerCAM

解决了

  • 深层生成的粗粒度热力图和浅层生成的细粒度热力图 都不够精准

 

赞赏

微信赞赏 支付宝赞赏

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注