文章目录

  • 1. 图片识别问题简介以及经典数据集
    • 1.1 图片识别问题简介
    • 1.2 经典数据集
  • 1. 单通道图片求卷积
    • 1.1 基本的图片求卷积
    • 1.2 填充的图片求卷积
    • 1.3 TensorFlow计算卷积
  • 2. 三通道图片求卷积
  • 3. 池化层
  • 4. 小结
    • 4.1 输入图片为正方形,卷积核为正方形,单卷积核,单通道
    • 4.2 输入图片为正方形,卷积核为正方形,单卷积核,三通道
    • 4.3 输入图片为正方形,卷积核为正方形,多卷积核,多通道
  • 5.

1. 图片识别问题简介以及经典数据集

1.1 图片识别问题简介

视觉是人类认识世界非常重要的一种知觉。对于人来说,通过视觉来识别手写体数字、识别图片中的物体或者找出图片中人脸的轮廓都是非常简单的任务。但是这对于计算机来说不是一件简单的事情。

图片识别问题希望借助计算机中的程序来处理、分析和理解图片中的内容,使得计算机可以从图片中识别各种不同模式的目标和对象。比如前面的MNIST联系就是通过计算机来识别图片中的手写体数字。

1.2 经典数据集

MNIST数据集:TensorFlow入门数据集

CIFAR :CIFAR数据集是一个影响力很大的图像分类数据集。分为CIFAR-10和CIFAR-100两个问题,它们都是图像字典项目(Visual Dictionary)中800万张图片中的一个子集。CIFAR数据集中的图片是32*32的彩色图片。

ImageNet:
无论是MNIST还是CIFAR数据集,相比真实环境有两个最大的问题:

  1. 现实生活中的图片分辨率要远高于32*32,而且图像的分辨率也不会是固定的。
  2. 现实生活中的物体类别很多,无论是10中还是100种都远远不够,而且一张图片中不会只出现一个种类的物体。

为了更加贴近真实环境下的图像识别问题,由斯坦福大学的李飞飞教授带头整理的ImageNet很大程度地解决了这两个问题。

ImageNet是一个基于WordNet的大型图像数据库。

目标:抽取一个32323的图片的特征,再将提取的特征喂入到全连接网络。

  • 卷积可以认为是一种有效提取图像特征的方法。
  • 一般会用一个正方形的卷积核,遍历图片上的每个像素点。图片内的每个像素点,乘以卷积核上相对应的点的权重,求和,在加上偏置。

1. 单通道图片求卷积

1.1 基本的图片求卷积

现在对于一个551的图片,用一个331的卷积核求卷积。

如图所示,计算机会将一张551图片转换为一个55的矩阵,矩阵中的每个值代表其像素点的灰度。现在用一个33的矩阵对其求卷积。
每次求卷积的过程为拿着卷积核在原始图片举证上求卷积。如图中所示,就是
1∗(−1)+0∗0+2∗1+5∗1+4∗0+2∗1+3∗(−1)+4∗0+5∗1+1=11*(-1)+0*0+2*1+5*1+4*0+2*1+3*(-1)+4*0+5*1+1=1 1∗(−1)+0∗0+2∗1+5∗1+4∗0+2∗1+3∗(−1)+4∗0+5∗1+1=1
其总体大概过程如图
图片来源于

可以看我们是拿卷积核在原始图片上“滑动”求卷积。
在这里,影响输出矩阵的规格的因素有,原始图片大小,卷积核大小,滑动的步长。

一张图片经过一次卷积操作输出的边长 = ( 输入图片的边长 - 卷积核 + 1 ) /步长(向上取整)

比如上图中,输出边长 = ( 5 - 3 +1 ) / 1 = 3

1.2 填充的图片求卷积

有时候,需要在图片的周围进行填充(有全零填充和其他填充),如下图所示:

那么输出的边长就等于 = 输入长度 / 步长 = 5 / 1 = 5(向上取整)
在TensorFlow中,用参数padding = ‘SAME’(填充) 或者 padding = ‘VALID’(未填充) 表示

总的来说,卷积是讲一个矩阵进行信息提取(特征抽取)的作用。参数为卷积核参数3 * 3 = 9个

1.3 TensorFlow计算卷积

tf.nn.conv2d(
输入描述: 一次喂入图片数, 图片分辨率(两位),通道数
输出描述: 卷积核分辨率(两位), 通道数,核的个数
核滑动步长,第一个和第四个固定为1。第二三个分别为行步长和列步长。
pading = ‘VALID’
)


# eg
tf.nn.conv2d([batch, 5, 5, 1],[3, 3, 1, 16],[1, 1, 1, 1],padding = 'VALID'
)

2. 三通道图片求卷积

在一般情况下,我们遇到的图片都是彩色图片。在计算机中,他们都是三通道图片(三基色原理,RGB红绿蓝)。
所以我们的图片矩阵变成了5 * 5 * 3。此时我们的卷积核变成了3 * 3 * 3 。


# eg
tf.nn.conv2d([batch, 5, 5, 3],[3, 3, 3, 16],[1, 1, 1, 1],padding = 'SAME'
)

3. 池化层

池化的作用:

  • 减少特征的数量
  • 最大值池化可以提取图片纹理,均值池化可保留背景特征

4. 小结

从计算的角度来看:卷积操作就是矩阵操作。

4.1 输入图片为正方形,卷积核为正方形,单卷积核,单通道

不填充
输出的矩阵边长=输入边长−卷积核边长+1步长输出的矩阵边长 =\frac{输入边长 - 卷积核边长 + 1}{步长} 输出的矩阵边长=步长输入边长−卷积核边长+1​

填充
输出的矩阵边长=输入边长步长输出的矩阵边长 =\frac{输入边长 }{步长} 输出的矩阵边长=步长输入边长​
在这里有个疑惑,比如卷积核边长为三,填充一层,也就是输入边长+2。输出边长满足上述两个公式。
假如卷积核边长为5。那么是填充一层还是两层?

4.2 输入图片为正方形,卷积核为正方形,单卷积核,三通道

边长与单通道类似

输出通道数可以为1,每个对应的通道数相乘后相加。
可以为3,每个对应的通道数相乘后,相互独立。
也可以为9,输入的每个通道数与卷积核的通道数相乘,再相加。

4.3 输入图片为正方形,卷积核为正方形,多卷积核,多通道

边长与单通道类似

输出通道数
= 卷积核个数,每个对应的通道数相乘后相加。
= 卷积核个数3, 每个对应的通道数相乘后,相互独立。
= 卷积核个数
9,输入的每个通道数与卷积核的通道数相乘,再相加。

5.

TensorFlow学习笔记之五(卷积神经网络)相关推荐

  1. tensorflow学习笔记七----------卷积神经网络

    卷积神经网络比神经网络稍微复杂一些,因为其多了一个卷积层(convolutional layer)和池化层(pooling layer). 使用mnist数据集,n个数据,每个数据的像素为28*28* ...

  2. 深度学习笔记:卷积神经网络的可视化--卷积核本征模式

    目录 1. 前言 2. 代码实验 2.1 加载模型 2.2 构造返回中间层激活输出的模型 2.3 目标函数 2.4 通过随机梯度上升最大化损失 2.5 生成滤波器模式可视化图像 2.6 将多维数组变换 ...

  3. 霹雳吧啦wz学习笔记1_卷积神经网络

    霹雳吧啦wz学习笔记1_卷积神经网络 全连接层: 全连接层就是由许许多多的神经元共同连接而得来的 卷积层: 卷积就是一个滑动窗口在我们的特征图上进行滑动并计算 卷积的目的:进行图像特征提取 卷积核的c ...

  4. 深度学习入门之PyTorch学习笔记:卷积神经网络

    深度学习入门之PyTorch学习笔记 绪论 1 深度学习介绍 2 深度学习框架 3 多层全连接网络 4 卷积神经网络 4.1 主要任务及起源 4.2 卷积神经网络的原理和结构 4.2.1 卷积层 1. ...

  5. [TensorFlow 学习笔记-04]卷积函数之tf.nn.conv2d

    [版权说明] TensorFlow 学习笔记参考: 李嘉璇 著 TensorFlow技术解析与实战 黄文坚 唐源 著 TensorFlow实战郑泽宇  顾思宇 著 TensorFlow实战Google ...

  6. 深度学习笔记:卷积神经网络的Tensorflow实现

    文章出处:深度学习笔记11:利用numpy搭建一个卷积神经网络 免费视频课程:Hellobi Live | 从数据分析师到机器学习(深度学习)工程师的进阶之路 在上一讲中,我们学习了如何利用 nump ...

  7. 吴恩达深度学习笔记- lesson4 卷积神经网络

    文章目录 Week 1 卷积神经网络基础 4.1.1 计算机视觉(Computer vision) 4.1.2 边缘检测示例(Edge detection example) 4.1.3 更多边缘检测内 ...

  8. 【TensorFlow实战笔记】卷积神经网络CNN实战-cifar10数据集(tensorboard可视化)

    IDE:pycharm Python: Python3.6 OS: win10 tf : CPU版本 代码可在github中下载,欢迎star,谢谢 CNN-CIFAR-10 一.CIFAR10数据集 ...

  9. 深度学习笔记:卷积神经网络的可视化--特征图

    目录 1. 前言 2. 模型的训练 3. 特征图可视化 3.1 加载保存的模型¶ 3.2 图像预处理:将图像转换为张量 3.3 例化一个模型用于返回各层激活输出(即feature map) 3.5 各 ...

  10. 学习笔记 | 深度卷积神经网络在计算机视觉中的应用

    图像识别是一种利用计算机对图像进行处理.分析和理解,以识别各种不同模式的目标和对象的技术,是计算机视觉领域的一个主要研究方向,在以图像为主体的智能化数据采集与处理中具有十分重要 的作用和影响.目前图像 ...

最新文章

  1. pytorch之expand,gather,squeeze,sum,contiguous,softmax,max,argmax
  2. python slice是共享内存吗_在共享内存中使用numpy数组进行多处理
  3. Oracle Study之--Oracle 11gR2通过RMAN克隆数据库
  4. 使用 file_get_contents 获取网站信息报错failed to open stream: HTTP request failed!
  5. ThinkPHP5最新URL访问:PATH_INFO和兼容模式
  6. c获取当前程序的路径_漏洞挖掘|使用AFL Fuzzing网络程序
  7. 有关send()和recv()函数的理解
  8. 发那科程序全部输出_走,去看看发那科机器人全新的自动化解决方案!
  9. STM32F072RB 实作笔记(一)- Keil 安装
  10. 小程序简介和开发工具
  11. matplotlib绘图并导出eps矢量图和svg矢量图
  12. python处理FITS文件 2:astropy.io.fits介绍及打开FITS文件
  13. 驾考: 车内如何看左轮和右轮的位置 LTS
  14. dev.env.js和prod.env.js
  15. 超详细的fiddler教程,从小白到精通(六)❤️
  16. 关于MFC程序中隐藏任务栏图标的问题
  17. 练习2-4:重新编写函数squeeze(s1,s2),将字符串s1中的任何字符与字符串时s2中的字符匹配的字符都删除
  18. 计算机中的物理知识点总结,有关初中物理电磁波章节知识点总结
  19. SKY65162-70LF射频功率放大器
  20. Matlab音频变速不变调、变调不变速(Phase Vocoder)

热门文章

  1. python矩阵行秩函数_为什么矩阵行秩等于列秩?
  2. equals变量在前面和后面的区别,equals已知(存在实际值)的变量在前的好处
  3. matlab 轴旋转图像,求助,二维图像如何绕轴旋转成为三维图像
  4. 软件工程导论 银行储蓄系统_独家:重庆农商行客户存款被盗刷 银行却责怪客户用卡不规范...
  5. 宋体字体是什么_Win10 系统替换 macOS 苹方字体 - 瞬间提升文字清晰
  6. 两个多元正态分布的KL散度、巴氏距离和W距离
  7. 直播 | 彩云科技CEO袁行远:NLP与冒险游戏研究一览
  8. java实验3 2020.4.6
  9. centos7下使用yum安装pip
  10. nn.LayerNorm的参数