CNN主要用来做计算机视觉
图像和模板按位相乘,相加
数值越大,说明模板和图像越吻合
通过模板 3 X 3
检测图像 256 X 256的形状
每一个数值:
原始图像该位置符合模板的强度
这种操作就卷积:
把一个模板往图像上套
256 * 256 套一个 3 * 3 --------- 254 * 254
256 - 3 + 1
工业界:
进来的是256 卷积完之后 出来的也是256
->方法:在周边填0 256 -> 257
识别圆?
- 设计一个圆形模板: 模板要设置的比较大,模板和形状要匹配
- 把圆拆成更小的形状
原拆成4种弧线,根据小形状的位置确定圆
S 也能用4种弧线表示,只是相对位置不一样
一张图片,通过多种不同的模板,可以得到不同的channel
3 * 3 * 4 的卷积 (4个channel)
256 * 256 * 4 ------- 3 * 3 * 4
一种立方体, 对应一种基本形状组合
越深, 形状越复杂
一般来说,处理的都是彩色图
彩色图由RGB组成 红绿蓝 0到255
黑白 n * n * 1
彩色 n * n * 3
原始图片,不停的被卷积, 形状越来越复杂
参数量和“图像” 大小无关,但是会影响运算量
因此需要把这些图像尺寸变小, 不影响识别效果,而且可以减少运算量
一般会在卷积之后,加一个池化层,用于缩小图像面积。一般用max
主流方法:池化区域 不相交
相交尺寸算的很麻烦
池化没参数,就是取极值
提取的形状越来越复杂,图像越来越小
卷积的参数决定了提取出来的形状
flatten: 把每个图像扯成一个向量
向量- > softmax —类别
用梯度下降法,训练各个卷积的参数
卷积所提取出来的形状跟分类任务有关:
区分是牛还是马,提出来的形状侧重于牛角形和马脸形
你的卷积模板,是依赖与你的任务的
梯度下降法,自动学这些参数。
深度学习做卷积的时候,一般来说在卷积之后会过一个激活函数。 activation = 'relu’
卷积-----激活函数relu
图像分类:
输入图像-------若干 卷积池化层---------flatten------softmax
项目中:
- 卷积池化层的个数: 个数越多,表面提取形状越复杂。每一层都是对上一层图像的组合。
(形状的复杂度) - 每一层的channel数 :越多, 提取的基本形状越多
(形状的个数)
一般来说:
频道越做越多, 尺寸越做越小
原因:图像越往上越复杂的