社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

传统CV和深度学习方法的比较

新机器视觉 • 6 月前 • 79 次点击  

来自《Deep Learning vs. Traditional Computer Vision》

摘要:

深度学习推动了数字图像处理领域的极限。但是,这并不是说传统计算机视觉技术已经过时了。本文将分析每种方法的优缺点。本文的目的是促进有关是否应保留经典计算机视觉技术知识的讨论。本文还将探讨如何将计算机视觉的两个方面结合起来。评论了几种最近的混合方法论,这些方法论证明了改善计算机视觉性能和解决不适合深度学习的问题的能力。例如,将传统的计算机视觉技术与深度学习相结合在新兴领域(例如全景视觉和3D视觉)中很流行,而对于这些领域,深度学习模型尚未完全优化。

1. 介绍

深度学习被使用在数字图像处理中,解决困难问题,比如图像着色,分类,分割和检测。CNN使用大量数据和大量的计算资源来实现预测的性能,一些被认为无法解决的问题实现了超过人类的精度的解决方案。

是不是深度学习就可以解决所有问题呢?是不是它就比传统计算机视觉方法好呢?但是深度学习无法解决所有的问题,在一些问题上,具备全部特征的传统技术仍是更好的方案。此外,深度学习可以和传统算法结合,以克服深度学习带来的计算力,时间,特点,输入的质量等方面的挑战。

这篇论文会提供对比在DL统治计算机视觉之前的传统方法和深度学习的比较。这篇论文会总结传统算法,一些可以作为DL有力的补集,去完成DL不能解决的问题。这篇论文然后会总结一些最近的结合DL和CV的研究,如3D感知,或者说3D点云物体定位,物体检测,语义分割等。最后,使得3D深度学习获得在2D上一样成功的可能发展方向将会被讨论。

2. DL和传统计算机视觉的比较

2.1 什么是深度学习?

要获得对DL的深刻理解,我们需要去考虑描述分析和预测分析。

描述分析:涉及到定义了一个可理解的数学模型,模型描述了我们希望观察到的现象。模型包括了对过程收集数据,形成对模式(pattern)的假设,通过比较描述模型的结果和真实的结果验证假设。但是总是有风险,因为对某些复杂的,隐藏或者非直觉性的理解不到位,科学家和工程师会忽略了某些变量,使其没有包含进模型中。

预测分析:包括发现一些规则,这些规则支持一种现象,形成一个预测模型可以最小化真实结果和预测结果之间的误差,当考虑到所有可能的影响因素时。

2.2 深度学习的优势

DL的快速发展和设备能力(包括计算能力,内存容量,功率消耗,图像传感器分辨率和光学)的提高使得基于视觉的应用快速传播。和传统CV比较,DL有更好的精度,并且需要更少的专家分析和调参,同时可以利用如今容易获得的大量的视频数据。同时,DL有很好的灵活性,因为CNN模型和框架可以使用新的自定义数据重新训练,相比较于更局限领域的传统的图像处理技术。

在DL出现前,传统的CV方法时通过特征提取,比如目标检测时,通过对图像的特征描述向量检索,如果很大一部分特征时重复的,则一副图像就分类含有一种特殊的物体。传统CV的难点在于必须选择哪一种特征时最重要的在每张图片中。这很大程度上依赖于工程师的判断和长时间的调试的误差处理,来决定哪一个特征可以区分不同类型的物体。同时,特征的定义也需要工程师调参得到。

DL引入了端对端(end-to-end)学习,即机器只是获得了已经被标记上物体类型的图像数据集。因此,DL模型再给定数据上被训练,其中神经网络得以找到背后的模式,自动找到最具有描述性和明显的特征。传统的提取手动特征的专业知识已经被通过迭代在DL架构的知识和专业性代替。如下图所示。

CNN使用核,也叫做滤波器,在整幅图中检测特征。CNN空间上在一个给定图片上卷积这个核,去确认要检测的特征是否存在。卷积操作通过计算滤波器和给定滤波器覆盖区域的点积实现。

为了促进权重的学习,卷积层输出相加添加一个偏置项,然后输入到一个非线性激活函数,如Sigmoid,TanH,ReLU。基于数据和不同的分类任务,激活函数选择有所不同。

为了加速训练过程和减少内存消耗,卷积层后面经常添加池化层来去除输入特征的多余(Redundancy)。如图2,一般来说,深层神经网络也许会有多对卷积层和池化层。最后,一个全连接层展开之前层体积,为一个特征向量,然后输出层计算得分(置信度或者可能性。)。输出结果一个回归函数,比如softMax,其映射所有值到一个向量,其总和为1。

但是DL仍然是一个CV的工具。最常见的neural networkCNN中的卷积,就是在图像处理技术中广泛使用的技术。

2.3 传统机器学习的优势

传统的机器学习分类算法使用特征描述子,再结合SVM,KNN等机器学习分类算法解决CV问题。

DL有时候矫枉过正,传统算法可以解决一个问题以更简单,更少的代码。传统的算法很简单,只是颜色阈值或者像素技术,但是他们可以非常通用,在各种图像上表现相同。可以对比的是,DL学习到的特征只能基于训练集,不能再除训练集以外的图像中表现很好。所以,SIFT等算法经常用在图像拼接和3D网格重建中。还有例子,比如分别两个不同颜色的物体,DL需要构造训练集,然而简单的颜色阈值就可以实现。一些问题可以通过简单和更快的技术,而不是DL。

如果一个DNN在训练集以外表现很差?如果训练集很小,机器可能会过拟合训练数据,不能通用化这个任务。在这种情况时,DL模型被批评为黑匣子。传统CV有着完全的透明性,可以判断算法是否在训练环境外。工程师具备对于问题的见解,可以转换算法,如果失败,可以调整参数在更大的图片集中表现出更好的参数。

如今,传统算法可以被使用,当问题被简化到可以布置到低消耗的控制器或者通过加强特征限制问题对于DL的使用。之后我们会讨论一些传统的技术,如何使用来提高网络训练。最后,还有很多问题在CV中:机器人技术 , 增强现实,自动全景拼接,虚拟现实,3D建模,运动估计,视频稳像,运动捕捉,视频处理,场景理解,这些问题无法使用DL轻松的解决,但是可以从传统CV中获得帮助。

3.传统计算机视觉的挑战。

3.1 混合手动调整方法和DL获得更好的表现

这里在传统CV和基于学习的方法之间有清晰的权衡。传统计算机视觉是完善的,透明的,对于表现和功率效率优化过的,尽管DL以大数量计算资源的代价提供更好的精度和通用性

混合方法结合传统CV和深度学习方法,提供了两种方法的优点。这种结合在需要快速处理的高性能系统中很实用。

机器学习和深度网络的融合已经变得非常流行,因为这样可以产生更好的模型。混合视觉处理实施可以引入性能优点,可以实现在多累积操作中130X-1000X倍的减少,大约10X的帧率的提高,想比较于单纯的DL。进一步的说,这种混合系统只需要一般的内存容量,只需要更低的CPU资源。

3.2 克服DL的挑战

DL也存在挑战。最新的DL方法可以实现更好的精度,但是这种提升需要以百万次更多的数学操作和对于处理能力的要求增加。

使用DL的视觉处理结果也依靠于图像分辨率。在物体分类实现足够的性能,需要一个高分辨率的图像和视频,也导致了需要处理的数据增加。图像分辨率对于远处物体检测和分类的一些应用非常重要。使用sift或者光流的帧减少技术(frame reduction),可以首先识别感兴趣区域,减少训练需要的处理时间和数据量。

DL需要大数据。当大的数据集或者高的计算能力不可获得时,传统的方法可以参与进来。训练DNN需要很长的时间。需要很多次迭代,不同的参数获得的误差完全不一样。最常见的技术,用于减小训练时间的是迁移学习。传统的CV技术,比如离散傅里叶变换,证明可以用来使用加速卷积。

但是领域特殊更简单的任务一般不需要太多数据。在预处理过程中,传统CV方法用来增加训练样本。预处理步骤中可以变换数据,使得关系或者模式,在训练模型前能够更简单的描述。数据增强是一种常见的预处理任务,用于当训练数据很少的时候,包括实现随机旋转,位移,剪切,用来增加训练集。

 3.3 利用边缘计算

如果在边缘运行算法和神经网络推理,与基于云的方法比较,可以较少延迟,成本,云储存和处理需求及带宽需求。通过避免在网络上传输敏感或者可识别的数据,边缘计算同样可以满足私密和安全要求。

混合或者组合的方法,涉及传统CV和DL利用了边缘的异构计算能力。一种异构的计算架构,由CPU组合和微控制器核心处理器组成。DSP,fpga和AI加速设备可以分配不同的工作负载,实现最有效率的计算引擎。测试效果显示,挡在DSP和CPU上面执行DL推理时,对象检测的延迟减小了10倍。

多种混合CV方法已经证明了在边缘应用的优势。比如,脸部表情识别有一种新的特征损失,它添加了人工特征到训练的过程中,这是尝试去减小人工特征和学习得到特征之间的差别。使用混合的方法同样显示了其利用来自其它传感器数据的能力的优势。

3.4 不适合DL的问题

机器人,增强现实,自动全景拼接,虚拟现实,3D建模,运动抑制,视频稳定,运动捕捉,视频处理和场景理解,这些领域不能直接使用DL的方法,但是需要结合传统技术来解决。

DL方法在解决闭环(close end)问题时表现优秀,这些问题中潜在的信号可以被映射到一个限制的类别中,同时有足够的可以获得的数据,训练集和测试集的数量十分相似。但是当偏离以上假设时,就会导致问题,所以明确哪些问题是DL不擅长解决十分重要的。DL必须要得到其它技术的支持。

其中一个问题时DL算法学习视觉关系时局限的能力。比如识别一幅图像中的多个物体是否时同样或者不同的。一些文献证明了包括注意力和感知组是实现这种抽象视觉推理的关键计算组成。

同样的,ML模型很难处理具有先验的模型,意味着不是所有都可以从学习中获得,所以一些先验比如植入到模型中。比如3D视觉具有强的先验才能有效,比如基于图像的3D建模要求光滑性,轮廓和照明信息。

3.5 3D视觉

3D视觉系统已经变得更容易接触,因为3D卷积神经网络的极大发展。这个新出现的领域称为几何深度数学(Multiple Deep Learning),应用方向包括:视频分类,计算图形学,视觉和机器人技术。

       

输入的尺寸在内存上而言比传统RGB图像大得多,kernel卷积计算在3D空间中进行。因此,在分辨率上计算复杂度立方增长。3D CV难度在于引入了更多维度,带来了更多不确定性,比如离散采样,噪声扫描,遮挡和混乱的场景。

基于FFT的方法可以优化3D CNN可以减少计算量,但是以增加的内存需要为代价。WMFA(Winograd Minimal Filtering Algortihm)实现了两倍的加速,相比较于cuDNN,并且没有增加内存。

几何深度学习处理深度学习技术的到3D数据的扩展。3D数据可以分为欧几里得和非欧几里得。

       3D欧几里得有底层的网格结构,这允许全局参数化和像2D一样有常见的坐标系统。这使得2D深度学习样式可以同样使用在3D数据中,所以欧几里得更适合分析简单的网格物体,如椅子,平面。

       3D非欧几里得数据没有网格化结构,其中没有全局参数化。因此,扩展经典DL技术对于这种表示,是一种挑战的任务,仅仅最近被PointNet实现。

连续的形状信息,这种有用的信息总是在转换到体素表示时损失掉。

 

3.6 SLAM

视觉SLAM是SLAM的一个子集,其中视觉系统替代雷达作为组成场景地标定位。视觉SLAM具有摄影测量的优势,丰富视觉数据,低成本,轻便和低能源消耗,没有后处理中相关的繁重的计算工作。视觉SLAM包括环境感知,数据匹配,运动估计,场景更新和新地标定位。

建立一个视觉物体如何在不同的条件下出现,如3D旋转,尺度变换,光照变化,从那些代表的变换,会使用较强形式的迁移学习去实现零击或一击(zero-shot one-shot)学习。特征提取和数据表示方法对于减少ML训练样本是有用的。

一种两步方法常常使用在基于图像的定位中,场景识别后做姿态估计。场景识别一般是计算每一幅图像的全局描述子,然后聚类局部描述子,使用bag of words的方法。然后每一幅的图像全局描述子,在词袋中搜索,最匹配的全局描述子提供了一个查询图像的大致的定位在参考地图中。在姿态估计中,查询图像精确的姿态通过一些算法,比如PnP和几何验证算法,实现更精确的计算。

基于图像的场景识别很大程度上依赖于提取图像特征描述子的能力。不幸的是,对于LiDAR扫描中,没有一个类似SIFT算法提取局部描述子。

另外一个方法,从RGBD数据中构建了多模态特征,而不是深度处理。对于深度处理部分,他们采用了有名的基于表面向量的colouration方法,因为这种方法已经被证明是有效和鲁棒的。另外一个方法是利用传统技术,如Force Histogram Decomposition,一种基于图的等级描述子,可以使得在结构子部分的空间关键和形状信息被特征化。

 

3.7 360度相机

360相机(也称为全向或球形或全景相机)是一种在水平面中具有360度视场,或者具有(大约)覆盖整个球体的视野的相机。全向摄像机在需要大视野覆盖的机器人等应用中很重要。360摄像机可以代替多台单眼摄像机,并消除盲点,这显然对全向无人地面飞行器(UGV)和无人飞行器(UAV)有利。由于球形摄像机的成像特性,每个图像都可以捕获场景的360°全景图,从而消除了对可用转向选择的限制。球形图像的主要挑战之一是由于超广角鱼眼镜头造成的镜筒变形,这使传统的人类视觉启发方法(例如车道检测和轨迹跟踪)的实现变得复杂。通常需要额外的预处理步骤,例如事先校准。 

全景拼接是另外一个开放的研究问题。实时拼接方法使用一组可变形的网格和最终图像,并使用鲁棒的像素着色器组合输入。另一种方法将几何推理(线和消失点)提供的准确性与DL技术(边缘和法线贴图)实现的更高水平的数据抽象和模式识别相结合,以提取结构并生成室内场景的布局假设。在稀疏结构的场景中,基于特征的图像对齐方法通常会因缺少独特的图像特征而失败。相反,可以应用直接图像对准方法,例如基于相位相关的方法。

3.8 数据集标记和加强

有很多对于CV和DL的结合的争论,最后总结到结论是我们需要重新评估我们从基于规则和数据驱动的方法。传统CV中,我们知道操作的意义,但是DL导致我们需要的只是更多的数据。这也许是进步,也可能是退步。

最基础的问题是,目前的研究中,对于特殊的应用中的先进的算法或者模型,没有更多足够的数据。将自定义的数据集和DL模型结合在一起回事未来需要研究论文的主题。所以许多研究者的输出不仅包括DL算法,也包括数据集或者收集数据的方法。数据标记会是DL工作流程的瓶颈,因为这需要大量的人工标记。主要是在语义分割应用中,每个像素都需要精确的标记。这里也有很多有用的工具用于半自动化这种过程。

最简单和最常用的方法来克服限制的数据集,减小模型的过拟合是通过人工扩大数据集,方法是使用保持标记的转换(label-preserving transformations)。比如使用裁剪,尺度变换,旋转图像来人工生成数据。数据增强过程需要非常少的计算并且可以在DL训练流水线内实现,从而不需要将转换后的图像存储在磁盘上。用于数据集扩充的传统算法方法包括主成分分析(PCA),添加噪声,在特征空间中的样本之间进行内插或外推以及根据分割注释对对象周围的视觉环境进行建模。

结论

           只知道CV的DL方法,会很大程度上限制CV工程师的解决方案类型。学习DL之前的CV技术,可以提供一些直觉方面的认识和掌握一些有用的工具。


 End 


声明:部分内容来源于网络,仅供读者学术交流之目的。文章版权归原作者所有。如有不妥,请联系删除。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/164684
 
79 次点击