卷积神经网络——卷积神经网络基础

背景:计算机视觉是一个包含很广泛的领域,包含了日常生活中所有可视化的1维,2维,3维数据,例如心跳脉冲的检测(1维),目标检测、人脸识别(2维),3维场景重建、虚拟现实(3维)等,但是处理这些数据时往往需要巨大的内存需求(下面会详细的说明),普通的神经网络无法满足,因此卷积神经网络应运而生。

首先图片是计算机视觉中最重要的也是发展最快的领域,下面就从图片入手深入的讲解卷积神经网络。

图片介绍:人类可以看到的不同的颜色是因为人的眼睛就像一个三色接收器的体系,而大多数的颜色可以通过红、绿、蓝三色按照不同的比例合成产生。为什么是三种颜色,不是七种颜色?这里我们就不得不提一个耳熟能详的名字——牛顿(How old are you怎么老是你),牛顿通过三菱镜首先发明了自然光可以分解为不同颜色的七彩色光,伟人的思想往往是与众不同的,他们往往不会止步不前,继续思考 他在想既然自然光可以分解,那么七彩色光是不是也可以被分解或者合成呢? 

顺着这个思路他又经过了无数个昼夜不停的实验和计算,(至于怎么实验的感兴趣的可以自己搜索)终于真理又让他发明了,在七彩色光中只有红、绿、蓝三种颜色不能够再继续分解,不能分解也就是原子的这点和事务的特性一样,所以称其为三原色,其它的光可以通过这三种光来组合叠加和相减算出来。

三原色在应用于实际生活中时既可以相加,也可以相减,采用相加的方式成为RGB颜色模型(红、绿、蓝)和CMY模式(品红、青色、淡黄),也是用的最多的一种,相减为CMYK模型,他们分别用于绘图和印刷领域。 如今在我们电脑上大部分的图片都是以jpg、jpeg(有损压缩,体积小)或者png(无损压缩)格式存储的,其中它们都支持RGB、CMYK和灰度模式。通常情况下,RGB每个颜色各有256级亮度,用数字表示为从0、1、2...直到255。 按照计算,256级的RGB色彩总共能组合出约1678万种色彩,即256×256×256=16777216。 通常也被简称为1600万色或千万色。也称为24位色(2的24次方)。这24位色还有一种较为怪异的称呼是8位通道色,为什么这样称呼呢? 这里的所谓通道,实际上就是指三种色光各自的亮度范围,我们知道其范围是256,256是2的8次方,就称为8位通道色。 

一张图片在屏幕上面如果无限缩小会看到是由无数个点组成的,其实任何事物都是由无限到有限来组成,无数个点会组成一个平面,当点和点之间的间距足够小时我们的肉眼是分不出来的,我们看到的就是一个图像,当无限个图像从我们眼前闪过就会形成视频电影,他们都是一个道理,好比几何中的点组成线、线组成面、面组成立体空间,当分析到这一层次图像识别就显着处理简单了,只要让计算机计算组成图片的无数个点的特征就可以识别出来相似图片,当然这也依赖于强大的运算能力,因为像素高的大图是非常大的,如常见笔记本电脑像素,有1366*768个像素点,数量级别在百万级,况且以RGB模式来说有三个通道颜色 将会更大。

ok,啰啰嗦嗦这么多(小白一个大家多多见谅),回到正题。

图像处理面临的挑战:如果我们对一张图片进行深度学习,图片的格式是(64,64,3)的RGB格式(3是通道数也就是红绿蓝),我们为了方便计算将需要将其flatten得到一维数据64\times64\times3=12288,所以输入层特征向量x的维度也就是12288。但是64\times64的图片实在太小,如果要操作更大的清晰度更高的图片,比如1366*768的图片,特征向量X^(^1^)的维度就达到了惊人的3147264(大约三百万),对于全连接的神经网络来说如果第一层hidden layer的hidden units数量是1000,也就是权值矩阵W^[^1^]的大小就需要达到1000\times3百万(大约30亿个参数)。在参数如此巨大的情况下,难以获得足够的数据来防止神经网络发生过拟合和竞争需求,要处理包含30亿参数的神经网络,巨大的内存需求让人不太能接受。所以就需要使用卷积神经网络来减少参数。

要学习卷积神经网络就要知道卷积神经网络每层都做了什么,下面就由浅入深的理解卷积神经网络是如何运算的。

边缘检测示例:卷积运算是卷积神经网络最基本的组成部分,使用边缘检测作为入门样例。下面就来看看卷积是如何进行运算的。下图展示了卷积神经网络如何一层一层的检测到完整的物体

首先神经网络的前几层找到了像图片1这样的边缘或者线,然后后面的几层有可能检测到物体的部分区域,更靠后的一些层可能检测到完整的物体,这个人脸识别例子中首先检测到图片的边缘,然后的检测到更复杂的形状和模式比如眼睛鼻子,之后检测到人脸的大部分轮廓。就像素描中由简单的一笔一划最后完成复杂的图画。那神经网络又是如何做到这一切的?

让我们举个更加直观的例子,给了这样一张图片,让电脑去搞清楚这张照片里有什么物体,你可能做的第一件事是检测图片中的垂直边缘。比如说,在这张图片中的栏杆(红线)就对应垂直线,与此同时,这些行人的轮廓线某种程度上也是垂线,这些线是垂直边缘检测器的输出。同样,你可能也想检测水平边缘,比如说这些栏杆(绿线)就是很明显的水平线,它们也能被检测到,所以如何在图像中检测这些边缘?

例如在一个6\times6的灰度图像(灰度图像是6

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值