资讯专栏INFORMATION COLUMN

【DL-CV】计算机视觉前置了解

jk_v1 / 2654人阅读

摘要:虽说都是些量少易懂的知识点,却主角般地贯穿着整个学习过程,而且作为从小白到学习者思维转换的桥梁,其必要性是肯定的。所以对于从未接触过深度学习的小白,强烈推荐了解,非小白可跳过图像分类首先来了解在计算机视觉领域上的图像指的是什么。

【DL-CV】【深度学习-计算机视觉】系列简介及入门推荐<前篇----后篇>【DL-CV】线性分类器

在初次进入坑,接触高深的算法环节之前,有必要对计算机视觉的目标和实现有一个大概的了解。虽说都是些量少易懂的知识点,却主角般地贯穿着整个学习过程,而且作为从小白到学习者思维转换的桥梁,其必要性是肯定的。所以对于从未接触过深度学习的小白,强烈推荐了解,非小白可跳过

图像分类

首先来了解在计算机视觉领域上的图像指的是什么。——图像由像素组成,每个像素通过三原色(RGB)的明暗组合形成一种颜色,RGB各有256级亮度用数字0~255表示。最终图像就是一个由数字组成的三维数组Rw*h*c,三个维度分别是宽、高、颜色通道。

所谓的图像分类问题,则是在已有固定的分类标签集合中找出一个标签分配给输入的图像。这是计算机视觉领域的核心问题之一,并且有着各种各样的实际应用。计算机视觉领域中很多看似不同的问题(比如物体检测和分割),都可以被归结为图像分类问题,许多算法和原理都是为解决此问题服务的。

图像分类对人来说是简单至极的,但对于本质上只会算数的计算机来说,问题变得复杂起来。“把代表图像的一堆数字通过数学运算变成一个标签(通过计算获得视觉)” 光是这个过程就看似无法理解了,但实际上这是可行的,不少现有的模型能获得不错的结果,原理与实现之后会介绍,现在我们来谈谈计算机视觉算法在图像识别方面遇到的一些困难

视角变化(Viewpoint variation):同一个物体,摄像机可以从多个角度来展现。

大小变化(Scale variation):物体可视的大小通常是会变化的。

形变(Deformation):很多东西的形状并非一成不变,会有很大变化。

遮挡(Occlusion):目标物体可能被挡住。有时候只有物体的一小部分是可见的。

光照条件(Illumination conditions):在像素层面上,光照的影响非常大。

背景干扰(Background clutter):物体可能混入背景之中,使之难以被辨认。

类内差异(Intra-class variation):同一类物体的个体之间外形差异可能很大。

这些在人看来不太影响分类的变化,在计算机看来简直是天差地别,每一种变化都让输入的数字数组发生巨大变化。如何提高算法的健壮性,增强噪音抵抗力,在维持分类结论稳定的同时,保持对类间差异足够敏感,这些都是算法设计者要考虑的问题

数据驱动方法

关于详细的解释,可以参考这篇文章。这里只简单的说明一下,由于类别的多样性与同类的相似性,在算法中逐一指定参数实现某个类的区分是很不现实的(先不考虑能不能直接找出这堆参数),所以目前流行的算法更类似于人类学习的过程——给计算机很多已分类好的数据,然后实现学习算法,让计算机自己调整这堆参数,从而学习到每个类的区分。这种方法,就是数据驱动方法。

以此为基础,整个图像分类过程可以总结为三步:

输入: 输入是包含N个图像(3维数组)的集合,每个图像的标签是K种分类标签中的一种。这个集合称为训练集。

学习: 用训练集来学习每个类到底长什么样。一般该步骤叫做训练分类器或者学习一个模型。

评价: 让分类器来预测它未曾见过的图像(测试集)的分类标签,并以此来评价分类器的好坏。如果分类器预测的分类标签和图像真正的分类标签一致,那很棒。

关于数据来源,cs231n课程使用的是图像分类数据集CIFAR-10,这个数据集包含了60000张32X32的小图像。每张图像都有10种分类标签中的一种。这60000张图像被分为包含50000张图像的训练集和包含10000张图像的测试集。本系列也将基于此数据进行实践。

超参数及其调优

在构造分类器(算法)的时候,某些参数和函数的是必须要人为选择的,但是关于选择哪个才能获得最佳效果,不实践的话很难直接给出答案。类似这样的选择,就叫做超参数。这样一说,调优的方法就很明了了,把可能的选择都试一遍,选择准确率最高的一个就行了(通常作图分析取峰值)。

但要注意的是千万不能用测试集来进行调优,因为这会带来对测试集过拟合的风险(用测试集训练出来的分类器跑测试集当然表现好,都熟悉了
)。正确的做法是从训练集中分一部分(通常10%~50%)作为验证集用于调优,剩下的再作为训练集用于学习。

测试数据集只使用一次,即在训练完成后评价最终的模型时使用。
交叉验证

有时候训练集数量较少,分得的验证集更少,不利于超参数的调优,这时会用交叉验证的方法,尽可能榨干整个训练集。
原理是把训练集分成N份(通常3,5,10),循环着取其中一份作为验证集,其他作为训练集,共跑N次。对于每个超参数的N个结果取它们的平均值作为该参数的表现,所有平均值画线连接取峰值对应的参数即可。

通常在深度学习(大型模型)中不会用交叉验证,因为这会使计算量翻N倍。但对于小型数据集值得一试。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42201.html

相关文章

  • DL-CV算机视觉前置了解

    摘要:虽说都是些量少易懂的知识点,却主角般地贯穿着整个学习过程,而且作为从小白到学习者思维转换的桥梁,其必要性是肯定的。所以对于从未接触过深度学习的小白,强烈推荐了解,非小白可跳过图像分类首先来了解在计算机视觉领域上的图像指的是什么。 【DL-CV】【深度学习-计算机视觉】系列简介及入门推荐【DL-CV】线性分类器 在初次进入坑,接触高深的算法环节之前,有必要对计算机视觉的目标和实现有一个大...

    forrest23 评论0 收藏0
  • DL-CV】【深度学习-算机视觉】系列简介及入门推荐

    摘要:最后还是强调一下自学的重要性,深度学习及其分支都是一个大坑,知识量巨大,希望大家充分利用搜索引擎对已学知识点进行补充或解疑,观摩大佬们的代码,不要满足于这小小的系列 【DL-CV】计算机视觉前置了解 showImg(https://segmentfault.com/img/bVbeOwJ?w=1464&h=1000); 闲了就要找事做,不能被四公主和NS诱惑。所以在搞完了爬虫进入假期时...

    Drinkey 评论0 收藏0

发表评论

0条评论

jk_v1

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<