前言:

      卷积神经网络 是 计算机视觉里面应用非常广泛的一个模型。

      卷积神经网络 成功案例 人脸识别,指纹识别等应用.

      卷积的本质是图像的特征提取, 在冈萨雷士版本《数字图像处理》处理有专门的章节讲解

各种卷积核,在通讯原理里面,卷积主要用于数字信号调制成模拟信号,信号采样。

   卷积神经网络的特征提取思想跟 传统的数字图像 处理里面的SURF,SIFT 算法很像。

目录:

      1: 图片表示

      2:  80年代DNN 问题   what's wrong with Linear

      3:  感受野 Receptive Field

      4:  卷积核


一  图片表示

     我们常处理的图片分为RGB 图片和 黑白图片。

1.1  黑白图片

      MINIST手写数字识别 

    28*28 的Martix,矩阵里面的元素 取值范围 0-255, 代表对应位置的像素点的灰度值。

可以通过图像二值化算法把该值变换为0-1范围内 

pytorch保存的卷积核形状 NCHW_卷积核

1.2 彩色图片

  如常用的RGB 图像

  如果忽略alpha 通道,剩余3个通道 R, G,B

pytorch保存的卷积核形状 NCHW_人工智能_02

Python 有Image 库可以操作该图像,具体如下示例

pytorch保存的卷积核形状 NCHW_深度学习_03

pytorch保存的卷积核形状 NCHW_深度学习_04

# -*- coding: utf-8 -*-
"""
Created on Fri May  5 16:37:52 2023

@author: chengxf2
"""

from PIL import Image

img = Image.open("D:\\AI\\img\\1.jpg")

#返回两个元素,宽和高。im.size ⇒ (width, height)
width, height = img.size[0],img.size[1]
im2 = Image.new("RGB",img.size, "white")

for h in range(height):
    for w in range(width):
        #返回给定位置的像素
         pix = img.getpixel((w,h))
         #修改给定位置的像素
         r,g,b = pix[0],pix[1],pix[2]
         if r>125 and r-20>g and r-20>b:
             im2.putpixel((w,h),(r,0,0))

im2.show()

二 80年代DNN 问题   what's wrong with Linear

   问题: 参数量太大

  这里重点介绍一下CNN 诞生的原因

 以MNITST 手写数字识别,输入数据为28*28=784的一张图像

常用如下的DNN结构,进行识别处理(下图少画了一个隐藏层)

pytorch保存的卷积核形状 NCHW_cnn_05

pytorch保存的卷积核形状 NCHW_人工智能_06

        DNN 处理的问题:

        计需要参数量太大,按照DNN结构

pytorch保存的卷积核形状 NCHW_人工智能_07

      则需要的权重系数个数

     

pytorch保存的卷积核形状 NCHW_cnn_08

    

pytorch保存的卷积核形状 NCHW_深度学习_09

   

pytorch保存的卷积核形状 NCHW_人工智能_10

   

pytorch保存的卷积核形状 NCHW_人工智能_11

  

pytorch保存的卷积核形状 NCHW_深度学习_12

  则需要的参数量为

  

pytorch保存的卷积核形状 NCHW_cnn_13

   如果每个参数用4字节的浮点数存储,则

 需要内存  

pytorch保存的卷积核形状 NCHW_人工智能_14

 在80年代,处理器只有几十KB,这个网络参数无法装入内存中.

后来为了解决该问题,提出了感受野的概念(卷积),降低了网络

运行的参数量


三 感受野 Receptive Field

pytorch保存的卷积核形状 NCHW_卷积核_15

 

如上图 有很多物品,小男孩一眼关注到的是局部蛋糕,

然后才会慢慢看到其它的物品。

基于上述思想,为了解决参数量过大问题(早期) 后来提出了一种基于权值共享的感受野概念,比如LeNet-5

比如原来DNN 网络: 输入层到隐藏层 

pytorch保存的卷积核形状 NCHW_cnn_08

 这里面隐藏层256,使用共同的3*3卷积核(权值系数),

则只需要 

pytorch保存的卷积核形状 NCHW_卷积_17

,极大的降低了参数量

如下图,对于隐藏层每个节点

全连接层 权限系数个数为784

卷积层    权值系数个数为9个

 

pytorch保存的卷积核形状 NCHW_深度学习_18


四  卷积操作(Convolution Operation)

  卷积定义:

     设 f(x), g(x) 是R1上的两个可积分函数,作积分

       

pytorch保存的卷积核形状 NCHW_人工智能_19

传统数字图像的卷积核里面的权重系数是固定不变的,但是在深度学习里面

卷积核里面的权重系数是通过训练学习得到的.

如下图

  

pytorch保存的卷积核形状 NCHW_cnn_20

   

卷积运算

  

pytorch保存的卷积核形状 NCHW_人工智能_21

 例2 

pytorch保存的卷积核形状 NCHW_cnn_22

 


pytorch保存的卷积核形状 NCHW_cnn_23

 函数看作卷积核  

pytorch保存的卷积核形状 NCHW_cnn_24

 看作图像向左移位,则卷积后矩阵里面

的元素,就是每次移位t 步后,卷积核和图像重叠的面积.