AI产品经理基础(二)-计算机视觉模型
CNN是啥
CNN即卷积神经网络,通常用来处理计算机视觉方面的任务
虽然之前介绍过通用神经网络,但是为什么还要用CNN来处理图像呢? 因为通用结构在在处理很多任务上缺乏’技巧‘,就很难找到收敛点。特别是随着网络层数增加,模型越来越复杂,难以收敛甚至不收敛。就需要人为设计一些结构,相当于加入人类的先验知识,减轻模型不必要的计算负担,从而更好得使代价函数收敛。
CNN对图片的处理是一小块一小块得,其实在图像任务中,单个像素点对任务来说没有任何意义,但是一小块区域是有视觉意义的,这就是一种先验知识的设计。
CNN结构
CNN通用结构的第一层输入层:通常输入图片是RGB三个维度的像素矩阵A0;
卷积层:将图片矩阵一小块儿一小块儿得经过n个过滤器进行处理,这n个过滤器缩小了图片矩阵的大小并且提取了边缘特证得到n个二维矩阵(有的是垂直边缘、有的是平行边缘、还有各个角度的边缘),每个矩阵对应一个过滤器,然后再加上b得到Z1,这实际上就是通用结构中的线性处理Z=W*X+b 其中W就是过滤器,b是偏置,然后再将Z1进行非线性处理;这个过程就是一次卷积
池化层:将卷积处理后的矩阵再次进行某种缩放,通过减少了矩阵大小节省计算而且这种缩放基本不会造成信息得丢失。
经过多个卷积以及池化处理后,图片矩阵矩阵会越来越深,不同深度表征者、图片的各种特征;最终处理为(n,1)维矩阵,然后将这样的矩阵丢入全连接神经网络(通用结构),最后连接一个输出层,就可一对图片进行分类、检测等视觉任务。
抽象得看卷积过程就是相当与对图片输入进行了处理,相较于直接将毫无意义的像素数据直接灌入通用神经网络,明显通过卷积处理的图片输入更有视觉意义,附带了一些特征,从而模型具有了更好的效果。
由于视觉任务的卷积层对于图片特征处理是通用的,就是说通过任务A得到的隐层的参数网络同样适用于任务B,这些卷积层特征处理(低维特征,比如边缘、局部信息)是相似的,完全可以用迁移学习直接套用。只需要将最后几层进行替换即可。
另外同样得,模型刻画总是不完美得,随着层数加深会存在梯度消失(特征)得现象,所以科研工作者会应用残差网络等手段优化模型。
CNN在识别什么
第一层 第二层第三层
尽管神经网络内部的机制对于人们来讲仍然黑箱化的,但通过将CNN前几层中的数据可视化,我们会发现卷积网络对特征的提取的部分规律:从边缘特征,到局部特征,然后慢慢出现完整的实体。
业务应用
识别与目标检测
应用CNN的YOLO算法可以对图片进行分析,输出目标位置以及类别。所以在识别是什么以及在哪里的图像任务已经有不错的模型效果。这样的应用在幼儿教育或者户外会有潜在的应用场景。
人脸识别
通过计算机识别人脸在产业界已经完美超越人类了
人脸识别本质上是一种相似性计算,通常经过CNN处理后,在连接输出层前,数据是一个高维矩阵,这个矩阵是原始图像经过神经网络处理的结果,所以可以蕴涵图片的特征,即图片的数字编码,如果想要对比两张图是不是本人,只需要比对编码信息即可。但并不是说编码一样,而是需要将其灌入一层神经网络+分类激活函数sigmoid进行训练,最后根据阈值(置信)就会输出是否本人的判断。
在人脸识别上一般有两种场景:
1对1:一些APP登录可以使用人脸就是典型的1对1,因为知道你是谁,直接抓取现场图片与数据库中的本人编码信息比对。
以及1对n:还有一些门禁系统,不用告诉系统你是谁,而是拿到你的现场图片直接遍历所有数据库分析相似性。这种运算当然比较大,所以在商城的支付宝人脸付款仍然要输入账号ID才能识别,毕竟海量用户比对到猴年马月,所以这种1对n更适合门禁、罪犯甄别、高级客户等比对量较少的场景
风格迁移
前几年市面出现过比较优秀的图片处理APP,可以将你的照片转化出某种风格。了解这种功能实现机制能够利于我们对模型特征处理的理解
风格迁移
比如说我们要实现上述转化任务。这个任务的可以分解为两个任务
1、在内容上我们保留图片C
2、在风格上我们使用图片S
在CNN神经网络中我们提到图片在卷积网络中的编码,那么在内容上我们就可以通过保证编码的相似不就是内容的相似吗?
但是风格在神经网络中如何表征?
某一隐藏层
以上图为例,这是某个隐藏层的处理结果。这里有九个过滤器将相似的特征总结出来。
如果说我们把特征相似定义为内容,那么可以把特征之间的关系相似定义为风格;
比如第二个筛选器中出现很多纹理,第四个筛选器出现的颜色,如果说某种条状纹理通常具备橙色,这种相关性就是风格的表征。将某隐藏层的过滤器结果两两相乘得到的就是不同特征之间的相关性矩阵,即风格矩阵。
那么我们将初始化矩阵图片G输入入神经网络,通过训练使得G的特征矩阵逼近图C,风格矩阵逼近图S。最终模型收敛后得到的矩阵G就是我们的目标图片