搜集、阅读、学习的关于机器学习——深度神经网络、卷积神经网络,图像识别的资料

===================================================================================================

在探索中进步!

阅读的我在这里写上见解,还没来得及读的,先放上文章标题、链接

===================================================================================================

一、图像预处理

为什么CNN需要固定输入图像的尺寸(CNN图像尺寸输入限制问题)
https://blog.csdn.net/u010801994/article/details/81482885

OpenCV学习笔记:resize函数改变图像的大小
https://blog.csdn.net/woainishifu/article/details/53260546

二、建立模型

1、帮助理解DNN——卷积神经网络CNN究竟是怎样一步一步工作的?

作者:zhwhong
链接:https://www.jianshu.com/p/fe428f0b32c1
来源:简书

理解:
根据图像的feature来对图像进行识别。
每一个feature就像是一个小图(就是一个比较小的有值的二维数组,源图像矩阵的一个子集)。不同的Feature匹配图像中不同的特征。在字母"X"的例子中,那些由对角线和交叉线组成的features基本上能够识别出大多数"X"所具有的重要特征。

卷积层

关于卷积,我的理解是两个可积函数f(x),g(x)。对f(m)*g(x-m)对m求积分,可得函数h(x),则函数h(x)称为,函数f与g的卷积。

特征(feature)的矩阵,相当于一个窗口,对源图像矩阵的每一个元素进行匹配计算,这个匹配过程被称为卷积操作。同时也是CNN名字的由来。

设特征矩阵为m1,匹配的源图像矩阵的元素An(以该元素为中心,与m1等大的矩阵m2),对m1、m2进行矩阵乘运算后得到新矩阵m,对矩阵m中的全部元素进行求和,最后除以矩阵内元素的个数,即可得到该像素点An是否匹配的结果。然后重复上述过程,即可得到一个与源图像等大的特征矩阵M1
对每个特征都进行上面的操作,得到每个特征的特征矩阵M1M2…Mn(n为特征的个数)
求特征矩阵的这一层被称为卷积层,我想是因为这一层里进行了大量的卷积操作

池化层——常用的池化矩阵大小为2*2,4个元素,最后只留下一个,缩小了4倍

标志位设为max-pooling,取输入图像中2*2大小的块中的最大值,作为结果的像素值

CNN中使用的另一个有效的工具被称为“池化(Pooling)”。池化可以将一幅大的图像缩小,同时又保留其中的重要信息。池化背后的数学顶多也就是小学二年级水平。它就是将输入图像进行缩小,减少像素信息,只保留重要信息。通常情况下,池化都是22大小,比如对于max-pooling来说,就是取输入图像中22大小的块中的最大值,作为结果的像素值,相当于将原始图像缩小了4倍。(注:同理,对于average-pooling来说,就是取2*2大小块的平均值作为结果的像素值。)
这篇文章讲的确实很透彻。

对卷积层中得到的所有的特征矩阵M1M2…Mn(n为特征的个数)进行池化操作,缩小矩阵,保留主要信息,得到池化特征矩阵PM1PM2…PMn

因为最大池化(max-pooling)保留了每一个小块内的最大值,所以它相当于保留了这一块最佳的匹配结果(因为值越接近1表示匹配越好)。这也就意味着它不会具体关注窗口内到底是哪一个地方匹配了,而只关注是不是有某个地方匹配上了。这也就能够看出,CNN能够发现图像中是否具有某种特征,而不用在意到底在哪里具有这种特征。这也就能够帮助解决之前提到的计算机逐一像素匹配的死板做法。

当对所有的feature map执行池化操作之后,相当于一系列输入的大图变成了一系列小图,通过池化操作,能显著降低计算量。

沉积层:

关于激活函数,我目前学习过的阶跃函数、双曲正切函数(z)=2σ(2z)-1、ReLU函数都可作为激活函数
https://blog.csdn.net/az9996/article/details/90382045
这一篇更专业
http://cs231n.github.io/neural-networks-1/
这里用了ReLU函数作为阶跃函数,作用是对于输入的负值,输出全为0,对于正值,原样输出

讲这些层组合在一起就得到了DNN

全连接层(Fully connected layers)

针对每一个池化特征矩阵得到的结果进行投票,得票数高的就是源图像所属的类别

这一层的作用是进行投票

全连接层也可以有多个

上面的顺序被称为前向传播

反向传播 (Backpropagation)

原文这一部分略过,没有讲,可以看看我的
这一块我有过学习
链接:https://blog.csdn.net/az9996/article/details/90382045#_74

这一篇更专业
https://www.jianshu.com/p/408ab8177a53

opencv基于深度学习的人脸检测
https://blog.csdn.net/minstyrain/article/details/78907425

运用CNN对ImageNet进行图像分类 (这一篇是专业的论文,难)
https://blog.csdn.net/lk274857347/article/details/53514364

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值