史上最简单、实际、通俗易懂的PyTorch实战系列教程!(新手友好、小白请进、建议收藏)
看过斯坦福大学的cs231n课的同学都知道,计算机视觉被深度学习救活了,现在这个领域深度来做比传统的效果好,或者传统+深度来做。
上面的图是ImageNet竞赛的TOP5的错误率,从2012年开始,深度在CV领域就开始大展拳脚,错误率每一年都在下降,2016年之后人工智能的视觉都超过人类了,所以在之后ImageNet竞赛就没有再举办,变成数据科学竞赛kaggle了。
卷积神经网络(CNN)一般用在:
1、检测任务
2、分类与检索
3、超分辨率重构(把图像变清晰)
4、医学任务、OCR等
5、无人驾驶
6、人脸识别
还有很多应用领域…
左边是传统的网络(nn),右边是卷积神经网络(cnn)。
通过图可以看出来多维度了。
重点介绍卷积和池化。
输入是32x32x3的image,卷积核是5x5x3的,蓝色的就是在卷积的过程,绿色的就是卷积后的感受野,也就是卷积后计算出来的(特征)结果。蓝色正方形的大数字就是图像原来的像素值(对应下面第二张图的最左边的蓝色正方形图),深蓝色小正方形就是卷积核,右下角小数字就是卷积核的W,右边绿色正方形就是卷积后的结果(对应下面第二张图的最右边的绿色正方形图)。
输入的图片是三通道(RGB),卷积也是卷积三通道的,一个通道一个通道卷积,卷积后三个通道结果加在一起才是真张RGB图像的卷积。 上图介绍的了输入一张 7x7x3 的图像(通过padding外围加了一圈0),R、G、B通道是7x7x1,三个通道就是7x7x3的。Filter卷积核都是 3x3x3 的,图上是内卷积计算的,就是对应计算相乘相加,结果就等于右边那个output volume的第一个,举个例子:Filter W0计算第一个感受野(感受野就是左边那个7x7用蓝色圈出来3x3的正方形,它会移动(平移),移动一格就是步长为1):
R:1x0 + 1x0 + 1x0 +(-1x0 +(-1x1 + 0x1 + (-1)x0 + 1x1 + 0 x1 = 0;
G: (-1)x0 + (-1)x0 +1x0 +(-1)x0 + 1x0 + 0x1 + (-1)x0 + 1x2 + 0x2 = 2;
B: 1x0 + 0x0 + (-1)x0 + 0x0 + 0x2 + 0x2 + 1x0 + (-1)x0 + (-1)x0 = 0;
b 是 bias偏置项,这里设为1。
RGB:(0+2+0)+ b = 3(就是下面绿色正方形的第一个3,其他同理可得) 上面这张图就是用了两个不同的卷积核,得到的两个不同的feature map特征图。 6个堆积在一起就是6层。
多通道卷积。
卷积计算得到特征图过程。
做一次卷积是不够的,得卷积后再对卷积的结果做卷积,多次卷积提取到不同的特征,各有不同感兴趣的特征,比如纹理,颜色,边缘等等。
一般做图像任务选步长为1就好,文本分类选的步长就比较多。
卷积核尺寸一般 3x3。
池化:选“人大代表” 或者说 “压缩” 或者说 “下采样”
池化一般有:
① max pooling(选最大值)
最大池化可以提取特征纹理
② average pooling(平均池化)
平均池化可以保留背景信息
1、局部感受野(每个神经元仅与输入神经元的一块区域连接,这一块局部区域叫感受野)
2、权重共享(卷积核是共享的)
3、池化(下采样,减少参数,防止过拟合)