什么是图像分类?
图像分类的核心任务是从预定义的一类图像中为图像分配标签. 分析输入图像并返回标签对图像进行分类. 标签始终来自一组预定义的可能类别.
比如预定义的标签为:
categories = {cat, dog, panda}
image.PNG
分类系统还可以通过概率为图像分配多个标签. 比如狗: 95%; 猫: 4%; 熊猫: 1%. 更重要的是, W*H 像素输入图像有三个通道, Red,Green 和 Blue, 分析 W*H*3 = N 像素图像, 并弄清楚如何正确分类图像的内容.
image.PNG
在图像分类中, 我们的数据集是图像的集合. 因此, 每个图像都是数据点.
image.PNG
左边猫, 右边狗, 电脑看到的是像素矩阵. 实际上, 计算机并不知道图像中有动物.
image.PNG
上图可描述如下:
• 空间: 天空位于图像的顶部, 沙 / 海洋位于底部.
• 颜色: 天空是深蓝色, 海水浅蓝色, 而沙子则是
棕褐色.
• 纹理: 天空具有相对均匀的图案, 而沙子非常粗糙.
需要应用特征提取来量化图像的内容. 特征提取是获取输入图像, 应用算法和获得特征向量的过程. 可使用 HOG,LBP 或其他传统图像量化方法. 也可应用深度学习来自动学习.
image.PNG
视角: 方向 / 旋转等
大小
变形
遮挡
照明
背景
类内变异
对内容做出假设: 图像以及容忍的变化. 最终目标是什么? 我们想要建立什么?
如果采用过于广泛的方法, 例如 "我想对厨房的每个对象进行分类和检测, 除非你有多年构建图像分类器的经验, 否则不太可能表现良好. 但是, 如果你构建问题并使其范围缩小, 例如" 我想要识别只是炉子和冰箱 ", 那么你的系统更可能是准确和有效. 尽管深度学习和卷积神经网络强大, 你仍然应该尽可能地保持项目的范围. ImageNet 的图像分类的事实标准的基准数据集: 计算算法由我们在日常生活中遇到的 1,000 个对象组成.
学习类型
常见的监督学习算法包括逻辑回归 (Logistic Regression), 支持向量机(SVM Support Vector Machine) 随机森林 (Random Forest) 和人工神经网络(Artificial Neural Network).
image.PNG
无监督学习 (有时称为自学式学习) 没有与输入数据相关联的标签, 因此我们无法更正我们的模型预测.
用于无监督学习的经典机器学习算法包括主成分分析 (PCA Principle Component Analysis) 和 k 均值聚类 ( k-means clustering). 对于神经网络, 还有自动编码器(Autoencoders), 自组织映射(Self-Organizing Map: SOM) 和自适应共振理论(Adaptive Resonance Theory).
image.PNG
半监督学习算法将采用已知的数据, 分析它们, 并尝试标记每个未标记的数据点. 半监督学习在计算机视觉中特别有用, 我们根本没有时间或资源来标记每个个人形象. 方法有标签传播 (label spreading), 标签累积(label propagation), 梯形网络(ladder network) 和共同学习 / 共同培训(co-learning/co-training).
image.PNG
深度学习的流程
思维方式的转变
0,1,1,2,3,5,8,13,21,34 ......
当然, 我们也可以使用(在极其未经优化的)Python 函数中定义此模式
递归:
- >>> def fib(n):
- ... if n == 0:
- ... return 0
- ... elif n == 1:
- ... return 1
- ... else:
- ... return fib(n-1) + fib(n-2)
- ...
- >>> fib(7)
- 13
- >>> fib(13)
- 233
- >>> fib(35
深度学习和图像分类没有定义函数这么简单. 没有确定的规则, 而是采用数据驱动的方法归类.
每个类别看起来像然后教我们的算法识别之间的差异
训练数据集包括:
1. 图像
2. 图像的标签 / 类别(即狗, 猫, 熊猫等)
image.PNG
步骤#1: 收集数据集
图像本身以及与每个图像相关联的标签. 例如: categories = dog,cat,panda. 此外, 每个类别的图像数量应大致相同(即每个类别的相同数量的例子).
步骤 2: 拆分数据集
现在我们有了初始数据集, 我们需要将它分成两部分:
1. 训练集
2. 测试集
image.PNG
神经网络有需要调整, 例如, 学习率, 衰减, 正则化等, 称为超参数. 注意训练集, 调整超参数的验证集和测试集一定要严格分开.
步骤 3: 训练您的网络
网络了解如何识别标记数据中的每个类别. 当模型出错时, 如何从这个错误中学习并改进自己. 一般来说, 我们应用一种梯度下降的方法.
步骤#4: 评估测试
除了正确性(ground-truth 标签), 还有聚合报告, 如精度, recall 和 f-measure, 用于量化整个网络的性能.
在传统的, 基于特征的图像分类方法中, 在步骤#2 和步骤#3 之间有特征提取. 采用 HOG,LBP 等算法, 基于我们想要编码的图像的特定分量 (即形状, 颜色, 纹理) 量化图像的内容, 然后继续训练我们的分类器并对其进行评估.
在构建卷积神经网络时, 我们实际上可以跳过特征提取. 这是因为 CNN 是端到端的模型. 但训练 CNN 是非常重要的过程.
来源: http://www.jianshu.com/p/273ec3b1b988