python计算机视觉深度学习3图像分类基础

本文教程目录

什么是图像分类?

图像分类的核心任务是从预定义的一类图像中为图像分配标签。分析输入图像并返回标签对图像进行分类。标签始终来自一组预定义的可能类别。

比如预定义的标签为:

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是非常重要的过程。

参考资料

links