wsxk / wsxk.github.io

MIT License
5 stars 0 forks source link

CNN #136

Open wsxk opened 1 year ago

wsxk commented 1 year ago

https://wsxk.github.io/CNN/

CNN(Convolutional Neural Network)

  1. 每个neuron看图片的一个部分
  2. Parameter shaving
  Convolutional Layer
  3. Polling
  Whole CNN
  CNN的缺陷

CNN(Convolutional Neural Network) CNN(卷积神经网络)是深度学习的其中一种model。 介绍它从一个例子开始。 我们要对一张固定大小(以100 100为例) ,其他大小的图片(例如500500)在放入前需要进行裁剪(变成100 100)再继续处理。

彩色图片一般都是RGB,所以图片一共有3100*100个参数。

按照先前学过的Deep Learning的方法,使用全连接。

那么这个模型的参数就相当大了。训练起来很耗时,而且全连接造成参数过多,容易过拟合。 那么如何化简,提高效率,还能提高精度呢?

  1. 每个neuron看图片的一个部分 基于人类对图片的观察,人类从图片中的特征(比如鸟嘴,鸟眼)等等,判断出图片里描绘的是鸟。

所以让一个neuron只看图片里的一部分就行了 常规做法如下图所示。

从图中可以看出,一个图片的位置由多个neurons共同查看。并且各个监控的特征区域有重叠部分,这也是为了提高精度。

  1. Parameter shaving 基于人类对图片的观察,一个特征(比如鸟嘴,鸟眼)会出现在一个图片的各个位置。所以每个特征的neuron采用的是相同的权重。

Convolutional Layer 卷积层如下图所示

  1. Polling 这也是基于人类的观察,一张鸟图,即使缩小了,你也能看出它是鸟

这就是所谓的Polling的由来。 如下图所示。

在你用Convolutional Layer得到了一个结果,你可以任意做裁剪(比如上图中就是4个特征中需选取最大的特征保留)结果如下图所示

Whole CNN

值得一提的是,其实POOLING可用可不用

CNN的缺陷 同样是100*100的图片,如果放大后,CNN可能识别不出同一个狗。 为了解决这个问题,我们需要做的是训练时,把一张图片做放大/缩小/旋转后,再放进训练集中进行训练