keras卷积处理rgb输入_从零开始深度学习(二) 卷积神经网络基础

594698c8a17adb0e8c7c9cffef1e85d3.png

一. 前言

卷积神经网络 (Convolutional neural network, CNN) 可以说是目前应用最为广泛的一种神经网络结构。它是在前向神经网络的基础上进行了一些改动,用来适应输入数据维度较高的情况。它主要是应用于与图片相关的任务,比如说目标检测,实例分割,风格迁移,强化学习等。这一篇文章我们先介绍一下卷积神经网络的基本知识。

6ac985b47c2abfa1ebd34d756dd7345f.png
目标检测

0ea8c69ca7ea8763e73fa595f148b390.png
语意分割

22bb6015778ebb700eb018c135eb1358.png
风格迁移

abdeb6a55022b71bb4c03e2bdaa239dc.png
强化学习flappy bird游戏

二. 为什么卷积神经网络?

首先,考虑既然有了前向神经网络,为什么要提出卷积神经网络呢?这里把全连接的前向神经网络图再摆出来一次:

bbd0617b1113a4f07900a87a93e003e0.png
图1. 前向神经网络

前向神经网络的输入是一个一维的向量,那么如果输入是一个图片可怎么办呢

在计算机的世界中,图片就是被存储成一个数字矩阵,数字的大小代表着我们视觉上的图片颜色。如下图所示,左边的矩阵可视化之后就是右边的图片,数字的范围是0-255,数字越大则表示图片的灰度越深。这是一个单通道的图片,而要组成一个彩色图片需要RGB (红绿蓝) 三个通道,即为三个矩阵concat在一起。

2577b8b1888c1004535968c433771557.png
图1. 单通道图片矩阵

假设输入是一个大小为

的图片,即为输入一个
的张量 (tensor),
是图片的长和宽,
是通道数。要想输入这个图片,有两种方式:
  1. 一种是把它压缩成
    的向量,再输入到上面这个前向神经网络中。
  2. 另一种就是把第一层的一维输入变成二维, (包含通道数) 的图片作为输入,下一层的每一个neuron只与前面一层的一小部分连接。这样就可以有效的保留二维信息。

按照第一种方式,假设隐含层的神经元个数是

, 那么权重矩阵
大小是
。训练这么大的一个矩阵
就会非常的
费时费力,而且可能会由于参数过多产生 过拟合的现象。因此,一个很自然的想法就是可以去掉一部分连线,
的每个神经元只与前面的一小部分神经元有联系。

卷积神经网络就是按照上面第二种方式来做的。而且每一层不再是一个一维向量,而是一个三维的张量(

),这更加符合图片的特性。

三. 卷积神经网络结构

这里介绍一下卷积神经网络的结构。以下图这个简单的10分类卷积神经网络为例:

2444cb0a2007dd03ecba1aed43d76ade.png
图2. 卷积神经网络举例

先解释一下这个图。第一层输入图片的尺寸是

(这里的3表示3通道),经过
卷积操作之后,得到第二层的尺寸为
; 再经过一个
下采样,尺寸变成了一半
; 再依次经过
卷积和一个 下采样,尺寸变成了
;然后是两个
全连接操作,尺寸依次变为
的一维向量(这个
的向量是对
输入图片信息的高度浓缩);最后对
的向量进行一个softmax,输出
的 0-1 binary vector表示结果被分为10类中的哪一类。

搭建卷积神经网络的一般部件(module)有:卷积层(convolutional layer),下采样层(downsampling),上采样层(upsampling layer),全连接层(fully connected layer),池化层(pooling layer),批量正则化(batchnorm),dropout layer等。图 2 其实就已经包含了大部分必须的部件(上一段加粗的部分)。

限于篇幅,这一篇文章只是希望大家能够对神经网络有一个基础的认识,而在下一篇文章我们再详细介绍这些关键的module。之后就可以按照自己的意愿搭建属于自己的神经网络啦~

三. 总结

虽然CNN包含很多的内容,但是如果要自己造一个简单的卷积神经网络是不难的,就对上面这些部件进行合理的组合而已。现在基于 Python 已经有很多关于神经网络的开源平台,比如说 Google的Tensorflow,Facebook的Pytorch,还有很好上手的Keras。之前分别使用过这些平台,它们都已经是非常模块化,简单几行命令就可以定义一个神经网络。在之后的文章我们会详细介绍神经网络编程

不管是前向神经网络还是卷积神经网络,他们本质上就是特征提取,通过有监督的训练,使得网络可以从较高维的原始数据中提取与目标最相关的低维特征(向量)。由于图片的高维特征,使得前向神经网络不能很好的处理它,因此发展出来卷积神经网络。

下一篇文章我们一一详细介绍卷积层(convolutional layer),池化层(pooling layer),上采样层(upsampling layer),全连接层(fully connected layer),池化层(pooling layer),批量正则化(batchnorm),dropout layer

文中图片均来源于网络。

欢迎扫描二维码,关注微信公众号“统计学习”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值