概述
图像识别目标
让计算机将语义概念相似的图像划分为同一个类别
图像识别面临挑战
语义鸿沟现象
-
图像底层视觉特征和高级语义概念之间的鸿沟
- 不相似的视觉特征,相同的于一概念(不同视角、不同光照、不同大小)
- 相似的视觉特性,不同的语义概念
-
在深度学习之前,总是想认为设置不同的特征、尺度来更全面地表达图像。
-
深度学习回避了这个问题,很多层的神经网络,可以表示不同层的信息,完成特征的表达,比人为的设置特征更强,更精确。
图像识别基本框架
测量空间 -> 特征空间 -> 类别空间
传统方法与深度学习方法的区别
-
传统方法:设计特征
-
深度学习:学习特征
传统图像识别技术
早期图像识别技术(1990-2003)
流程:特征提取(颜色、边缘) → 索引技术 → 相关反馈 → 重排序
注: 但早期做的还是比较少,因为计算机存储、算力都达不到。
全局特征提取
图片被表示成向量。
用全局的视觉底层特性统计量表示图像。
- 颜色
- 形状
- 纹理
流程
原图片 → 向量空间映射 → 向量表示(相似度高的图片在空间中所标识的点更为接近)
特征变换
提高特征的表示性能
-
空间变换
- 相以的物体 → 距离近
- 不相似的物体 → 距离远
-
manifold learning / embedding
- 映射为低维空间下的向量表示,常用方法如 PCA、MDS、ISOMAP、LLE、Laplacian Eigenmap
-
简单特征变换
- 中心化
- 归一化
索引技术
- 穷举搜索
- 效率太低,时间复杂度太高
- 改进方式
- 牺牲精度,寻找近似的最近邻居
- 常用方法
- KD-Tree,LSH(Locality Sensitive Hashing)
相关反馈
反馈类型
- Explicit feedback:反馈正例或者负例
- Implicit feedback:根据可观察的行为推断用户意图
重排序
根据相关反馈,重新计算权重、距离值,做一个重新的排序。
早期图像识别的问题
全局特征丢掉了图像细节
例:全局的颜色直方图就会丢掉位置信息。
解决方法:把一张图片分为好多块,每一块来做颜色直方图,从而一定程度上代表了位置信息,也就有了后面的 中期图像识别技术。
中期图像识别技术(2003-2012)
特征提取 → 向量化 → 索引技术 → 后处理
文本搜索的经典模型 — 词袋模型(Bag - of - Words)
提取文档的关键词,看搜索的文本与关键词的匹配度。
图像也可以使用类似(Bag - of - Words),即视觉词袋。
特征提取
局部特征(Local Feature):图像区块(patch)的向量
可以用来表示:位置信息 + 视觉内容信息
-
图像中的哪个区块 - 区块坐标:
- 特征检测子(Feature Detector)
- 检测图像区块中心位置( interest points )
- 局部检测子:Harris, DoG, SURF, Harris - Affine, Hessian - Affine, and MSER……
-
把图像区块表示为向量:
- 特征描述子(Feature Descriptor)
- 描述区块的视觉内容
- 局部描述子:SIFT, PCA - SIFT, GLOH, Shape Context, ORB, COGE……
向量化
视觉词典的生成
将 图像向量 对应到 特征空间 ,再根据 特征聚类 形成 视觉关键词。
局部特征 → 视觉关键字
-
局部特征转化为视觉关键词(即特征量化,Feature Quantization )
- 对每一个局部特征,查找其在视觉词典里距高最近的视觉关键词,把局部特征的向量转化为该视觉关键词在词典中的序号。
-
常用特征量化技术
- Hierarchical 1- NN(最近邻)
- KD - tree
基于视觉关键词的图像表示
图像 → (特征提取) → 局部特征 → (特征量化) → 视觉词袋 → 视觉关键词数量直方图
索引技术
-
倒排索引
-
排序:根据不同的视觉单词,对检索到的图片加权 → tf - IDF 加权( Term frequency - inverse document frequency )
后处理
-
查询拓展:原有査询项含有更多的局部特征,再进行扩展查询。
-
其它后处理技术:局部几何验证( Local Geometric Verification ),乘积量化( Product Quantization )等等。
总结
早、中期的图像识别技术特点:通过人工设置的底层、中层的特征,来进行图像检索,特点,特征都是人工设置的。
优势:人工设置的特征指向性更清晰。
劣势:受限比较多,特征有时仅能代表局部的图片。
深度学习与图像识别
通过深度学习,使计算机自己确定特征,使得到的
深度学习在图像领域的应用
-
图片检索
-
识别异常肿瘤或者癌细胞
-
图片描述
-
图片着色
为什么使用深度学习
- 传统方法:人工特征提取+分类器
- 深度学习:手工地选取特征是一件非常费力、启发式(需要专业知识)的方法,能不能选取好很大程度上靠经验和运气,而且它的调节需要大量的时间。深度学习便避免了这项缺陷。
模拟人脑视觉机制
神经 - 中枢 - 大脑
- 从原始信号摄入(瞳孔摄入像素 Pixels ) → 初步处理(大脑皮层某些细胞发现边缘和方向)→抽象(大脑判定,眼前的物体的形状,是圆形的)→ 进一步抽象(大脑进步判定该物体是人脸)
- 从原始信号,做低级抽象,逐新向高级抽象迭代.
- 测量空间(表象)→ 特征空间(概念)
如何使用深度学习
使用机器学习(深度学习)的目的:寻找一个函数。
学习过程
- 确定函数集合——建立模型、网络结构(人)
- 如何评价好坏——损失函数(人)
- 调出最好的函数——参数学习(机器)
注:
现在很多网络都有一个骨干网络,先通过骨干网络的训练得到一些参数,再通过自己的数据集进行训练调整,得到最终的实际网络(可以用于当数据集中数量比较少的时候)。
使用步骤
选择什么样的网络结构?
-
神经元
-
神经网络
-
激活函数
- 同一个神经网络中为了简化,激活函数应该都是一样的
- 为什么引入激活函数?
- 为了増强网络的表达能力,我们需要激活函数来将线性函数 ->非线性函数。
- 非线性的激活函数需要有连续性。因为连续非线性激活函数可以可导的,所以可以用最优化的方法来求解。
-
前馈神经网络
-
输入层
-
隐藏层(隐藏层数越多意味着网络越深)
-
输出层
-