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

作者: python测试开发 | 来源:发表于2018-10-05 22:27 被阅读90次

    什么是图像分类?

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

    比如预定义的标签为:

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

    参考资料

    相关文章

      网友评论

        本文标题:python计算机视觉深度学习工具3图像分类基础

        本文链接:https://www.haomeiwen.com/subject/ktlcaftx.html