计算机视觉笔记一

文章探讨了计算机视觉中的关键问题,包括图片分类、目标检测和神经网络风格迁移。详细阐述了卷积神经网络的工作原理,如卷积、填充、步长等概念,以及如何通过这些技术提取图像特征。此外,提到了残差网络在解决深度学习中梯度消失问题的作用,以及Inception网络通过多尺度信息处理增加网络复杂性。最后,简述了迁移学习在提升模型性能上的应用。
摘要由CSDN通过智能技术生成

计算机视觉所研究的问题

1、图片分类(Image Classification)
计算机需要辨别出图像中是一只猫

在这里插入图片描述
2、目标检测(Object Detection)
你需要计算出图中的物体(如车辆)以及车辆的位置

在这里插入图片描述
3、神经网络风格迁移(Neural Style Transfer)
利用神经网络将两张照片融合在一起

在这里插入图片描述
计算机视觉面临的挑战即:数据的输入可能会非常大
对于64×64的彩色图像,输入的数据量为:64×64×3=12288,即特征向量x的维度为12288。 而对于像素的分辨率大的图像,往往维度将会非常大。

神经网络检测

神经网络结果而言,前几层检测边缘部分,后面几层可能检测到物体的部分,最后几层可能检测到完整的物体。
在网络的初始层,卷积核通常会检测一些简单的低级特征,例如边缘、纹理等。随着网络的深入,卷积核能够组合和提取更复杂的特征,例如形状、角点、纹理组合等。这些高级特征对于物体的检测和识别非常重要。
深度神经网络具有更多的参数和更高的复杂度,神经网络在越深的层次上能够检测出物体,是因为网络能够学习到更抽象、更复杂的特征表示,并具有更强大的模式识别能力和上下文理解能力。
在这里插入图片描述
一张图片可以分别通过垂直边缘检测器和水平边缘检测器输出。
在这里插入图片描述
对于图像卷积运算,3×3的矩阵也称为或者过滤器,通过设置矩阵的参数来获取相应的过滤形式(垂直、水平),从而能够检测出图片的边缘特征。在这里插入图片描述
而在深度学习中,对于过滤器的参数,我们的选择更加的灵活,可以通过神经网络反向传播算法来进行获取最佳的参数,并应用于输入的图片。

填充(Padding)

对于 n × n n×n n×n的图像, f × f f×f f×f的过滤器做卷积,输出的维度为:

( n − f + 1 ) × ( n − f + 1 ) (n-f+1)×(n-f+1) (nf+1)×(nf+1)

即:6×6的图像卷积3×3的过滤器,输出为4×4的图像。
提出填充的意义:
1、每次卷积操作会导致图像降维。
2、角落的像素点只被一个输出所触碰或使用,意味着会很容易丢掉图像的边缘位置。
因此,会沿着图像边缘再填充一层像素(通常为0),这样会得到8×8的输入图像,最终为6×6的输出图像。
p:代表填充的层数(数量),输出的维度变为:

( n + 2 p − f + 1 ) × ( n + 2 p − f + 1 ) (n+2p-f+1)×(n+2p-f+1) (n+2pf+1)×(n+2pf+1)

Valid convolutions,即不填充,输出为 ( n − f + 1 ) × ( n − f + 1 ) (n-f+1)×(n-f+1) (nf+1)×(nf+1)
Same convolutions,即保证输出大小和输出大小是一样的, 那么需要 n + 2 p − f + 1 = n n+2p-f+1=n n+2pf+1=n,解得 p = f − 1 2 p=\frac{f-1}{2} p=2f1
过滤器通常为奇数
1、如果是偶数,在same卷积中可能造成不对称填充。
2、奇数维过滤器通常有一个中心点,便于指出过滤器的位置。

卷积步长

若考虑步长参数stride,则输出的维度为:

[ n + 2 p − f s + 1 ] × [ n + 2 p − f s + 1 ] [\frac{n+2p-f}{s}+1]×[\frac{n+2p-f}{s}+1] [sn+2pf+1]×[sn+2pf+1]

例如:输入图像7×7,卷积核3×3,步长stride为2,填充padding为0;输出为3×3的图像,[ ]代表取整运算。
补充:只需要设定卷积核3×3,步长为2可以实现下采样。一般的,假设输出图像为 n × n n×n n×n,输出应该为 n − 3 2 + 1 = n / 2 − 0.5 \frac{n-3}{2}+1 = n/2-0.5 2n3+1=n/20.5,由于向上取整,则输出即为即为 n / 2 × n / 2 n/2×n/2 n/2×n/2

三维卷积

对于RGB图像,如6×6×3的图像,其卷积核也应为3×3×3。其中第一个数字6代表高度,第二个6代表宽度,3代表通道数

6×6×3的图像进行3×3×3的卷积,依次将R、G、B对应的一共27个数与卷积核数字相乘后相加,最后输出为4×4的图像
在这里插入图片描述
可以通过对图像进行多个卷积核运算,以此来提取更多不同方面的特征(水平、垂直等)
在这里插入图片描述

单层卷积网络

输入图像为 a [ 1 ] a^{[1]} a[1],卷积核为 w [ 1 ] w^{[1]} w[1],设置偏置为b卷积后结果为 a [ 1 ] a^{[1]} a[1] w [ 1 ] + b w^{[1]}+b w[1]+b,引入激活函数Relu,即得到 z [ 2 ] = a [ 1 ] z^{[2]}=a^{[1]} z[2]=a[1] w [ 1 ] + b w^{[1]}+b w[1]+b,最后输出为 h θ ( x ) = a [ 2 ] = g ( z [ 2 ] ) h_{\theta}(x)=a^{[2]}=g(z^{[2]}) hθ(x)=a[2]=g(z[2])在这里插入图片描述
卷积神经网络示例如下。但卷积神经网络一般分为:卷积层(Convolution)、池化层(Pooling)、全连接层(Fully connected)。
在这里插入图片描述

池化层

分为最大池化和平均池化,最大池化取过滤器对应的区域的最大值,平均池化则同理。对应的超参数为 f f f(filter size)和 s s s(stride),通常设置为 f f f=2, s s s=2;或者 f f f=3, s s s=2。
最大池化只是计算神经网络某一层的静态属性,池化过程中没有需要学习的参数。
接下来是一个卷积神经网络示例:
在这里插入图片描述

卷积层

卷积层的主要优势是:参数共享(使用相同的卷积核)和稀疏连接(输出的单个元素只与其映射的9个元素相关,减少了很多没有关系的映射,如果展开全连接,就会增大计算量)。通过这两种机制来减少参数。
参数根据过滤器的大小和个数决定。例如6个5×5的过滤器需要6×(25+1)个参数,1代表偏置参数。
x x x代表图片, y y y代表二进制标记或某个重要标记

在这里插入图片描述

经典神经网络

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

残差网络

ResNets由残差块构成
在这里插入图片描述
a l a^{l} al首先进行线性激活,即: z [ l + 1 ] = W [ l + 1 ] a l + b l + 1 z^{[l+1]}=W^{[l+1]}a^{l}+b^{l+1} z[l+1]=W[l+1]al+bl+1
再通过非线性激活Relu得到 a [ l + 1 ] a^{[l+1]} a[l+1],即: a [ l + 1 ] = g ( z [ l + 1 ] ) a^{[l+1]}=g(z^{[l+1]}) a[l+1]=g(z[l+1])
然后再线性激活, z [ l + 2 ] = W [ l + 2 ] a [ l + 1 ] + b l + 2 z^{[l+2]}=W^{[l+2]}a^{[l+1]}+b^{l+2} z[l+2]=W[l+2]a[l+1]+bl+2
最后经过Relu得到, a [ l + 2 ] = g ( z [ l + 2 ] ) a^{[l+2]}=g(z^{[l+2]}) a[l+2]=g(z[l+2])
而残差块是通过远跳连接将 a l a^{l} al直接与第二层线性激活函数之后,Relu函数之前连接,由此得到的输出为: a [ l + 2 ] = g ( z [ l + 2 ] + a l ) a^{[l+2]}=g(z^{[l+2]}+a^{l}) a[l+2]=g(z[l+2]+al)

ReLU 激活函数的输出为 f ( x ) = m a x ( 0 , x ) f(x)=max(0, x) f(x)=max(0,x)
在这个函数中,输入信号 x x x经过变换后输出模型的输出 y y y。如果 x x x大于等于 0,那么 y y y等于 x x x,否则 y y y等于0。
随着网络的加深,当发生梯度消失或者梯度爆炸的情况下, W [ l + 2 ] , b l + 2 W^{[l+2]},b^{l+2} W[l+2],bl+2的值为0,即下式会变为: a [ l + 2 ] = g ( W [ l + 2 ] a [ l + 1 ] + b l + 2 + a l ) a^{[l+2]}=g(W^{[l+2]}a^{[l+1]}+b^{l+2}+a^{l}) a[l+2]=g(W[l+2]a[l+1]+bl+2+al)
最终得到: a [ l + 2 ] = a l a^{[l+2]}=a^{l} a[l+2]=al
表明即使增加了网络的层数,在效率和简单的神经网络相差不大,很好的解决的问题,或者退回到梯度消失之前,以此来寻找合适的层数。当网络足够深的时候,开始起反作用的时候,残差模块能保证你的网络性能不发生改变。

对于普通网络来说,随着网络的深度加深,用优化算法越难训练,训练错误会越来越多,训练的效率会越来越低,而残差网络会更好的解决梯度消失或者梯度爆炸的问题。随着深度的增加,逼近函数的效果好,已经有paper证明过了,个人理解就是,神经网络训练的过程就是调整参数的过程,可以调整的参数(weights and bias)越多,意味着调整的自由度越大,从而逼近效果越好
在这里插入图片描述

网络中的网络及1×1卷积

1×1卷积操作用来压缩或保持输入层中的信道数量,甚至增加信道,之后可以添加非线性函数,从而让网络学习更复杂的函数。可以学习独立通道直接的相关性。
在这里插入图片描述
1×1卷积块可以构建瓶颈层来减少计算量
图一单个元素的计算量为5×5×192,总的计算量为28×28×32(过滤器个数)×(5×5×192)约为1.2亿。
图二中1×1的卷积块的计算量为28×28×16×(1×1×192),得出的28×28×16为瓶颈层,5×5的卷积块计算量为28×28×32×(5×5×16),总计约为1200w。
在这里插入图片描述在这里插入图片描述

Inception网络模型在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
重复的意义:通过增加深度提高网络的复杂性,来拟合更加复杂的函数

迁移学习

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值