CV困境如何破:训练样本有限、2D视觉平面 VS 3D真实场景...-阿里云开发者社区

开发者社区> 开发者小助手-bz8> 正文

CV困境如何破:训练样本有限、2D视觉平面 VS 3D真实场景...

简介: 本文介绍了计算机视觉在实际场景和实际任务中存在的三种困境,以案例详细说明,并给出了潜在的解决方案。
+关注继续查看

有一天,伯克利研究院来了一位生态学家。他希望可以运用现代计算机视觉技术,基于他所拍摄的野生动物照片做一个动物识别系统。这听起来就是一个基本的图像分类问题,所以研究员们当时很自信,然而实际结果证明这个问题并没有想象中那么简单,如图 1 所示。


那位生态学家提供的数据库是极端长尾且开放式的。通常当训练数据不足时,我们首先想到的是有没有可能获取更多的尾部类别数据,而忽略那些会在测试集中出现的开放类别。遗憾的是,*收集更多数据无法解决那位生态学家的问题*。因为对于那些珍稀动物,这些生态学家可能要花相当长的时间才会在野外拍摄到,尤其一些濒危动物,甚至需要等待几年时间。


同时,新的动物物种不断出现,旧的物种正在消失。在这样一个动态变化的系统中,类别的总数永远无法固定。并且从动物保护的意义上说,识别新发现的稀有动物会更有价值。如果我们的系统只是可以识别常见动物,那这个系统永远都不会有什么实用价值。这就是计算机视觉甚至是人工智能所面临的现实问题。


微信图片_20211201202825.jpg

图 1 计算机视觉环境与真实世界 (https://bair.berkeley.edu/blog/2019/05/13/oltr/)


一. 模型泛化


1. 困境


深度学习是非常依赖于数据的,而不管对于什么任务,我们能获取到的训练样本都是有限的,且通常所获取样本的质量非常依赖于数据人员的专业性,即针对所要学习的任务什么样的样本最具有代表性,怎么保证样本的多样性等等,而在实际应用中,真实场景是一个无限的集合,充满着开放和未知,再丰富的训练集都难以涵盖无限的真实世界,因此保证模型的良好泛化至关重要。


另外,深度学习比较局限的一点在于,它认为真理存在于数据中频繁出现的地方,因此当样本类别不均衡时,样本较少的类别很容易被忽略。并且,深度学习通常只是模仿数据的内容,不会批判性理解,很难像人类一样产生主观感受。


2. 案例


现如今,人脸识别的应用是非常普及的,以一个公司的人脸识别门禁系统为例,通常系统的构建是以在公司内部采集人脸样本开始的,通常这个过程是需要算法人员协助进行的,因为你不能保证一个数据采集人员能够清楚得了解训练一个好的人脸识别模型需要采集什么样的人脸。


另外,尽管在采集过程中,我们模拟了各种场景、各种光线条件、各种姿态,但都难以涵盖真实应用场景,因此有时候为了保证系统精度,需要用户进行多种配合行为,某种程度上损失了用户体验。再者,当我们根据采集到的样本训练并上线了模型,每当公司加入一个新的员工都需要重新训练替换现有模型。


再比如,从前段时间 Google Allo 涉嫌歧视事件来看,深度学习每天接收的信息是未经筛选的,因为你很难严格控制每一个用户的言论,而深度学习就像一个毫无判断力的孩子,什么样的知识都照单全收,仅仅做到了客观而毫无公正可言,因此人工智能在超越人类这件事上还有很长的路要走。


3. 潜在解决方案


针对以上问题,除了[1][2]中提出的域适应方法外,[3]提出了一种开放长尾识别方法(OLTR),可以同时解决不平衡分类、小样本学习和开集识别问题,作者提出将图像映射到一个特征空间,这样,视觉概念之间可以基于学习到的度量相互关联,并且这种度量既认可了封闭世界分类又承认了开放世界的新颖性。其提出的动态元嵌入层结合了直接图像特征和关联的记忆特征,同时,特征范数表示了对已知类别的熟悉程度,如图 1 所示。


首先,通过聚集源自头部类别和尾部类别的知识获得了视觉记忆;然后将存储在内存中的视觉概念当作关联的记忆特征重新注入,以增强原来的直接特征。我们可以将其理解为利用诱导知识(即记忆特征)来帮助实现直接观察(即直接特征)。然后进一步学习了一个概念选择器来控制所要注入的记忆特征的数量和类型。由于头部类别知识已经获得了丰富的直接观察,所以它们只被注入了少量的记忆特征。相反,尾部类别获得的观察很少,于是记忆特征里的关联视觉概念就非常有用。最后,通过计算出获得视觉记忆的可达性,来调整开放类别的可信度。


微信图片_20211201202822.jpg

图 2: 开放长尾识别方法 (OLTR)


二.二维视觉平面与三维真实世界


1. 困境


计算机视觉接收的信息是投射到相机平面的,是经过压缩的,而真实世界是三维立体的,某种程度来看,其中的空间信息是缺失的。视觉信息是像素集合,且视觉任务通常采用卷积神经网络,主要关注边缘,而不是其他视觉特征,这个过程也是存在信息丢失的。因此基于这些信息,不管是识别或检测任务,都为算法带来了误差,而这种误差通常需要其他视觉之外的方式去弥补。


2. 案例


麻省理工学院的一个研究小组稍微调整了步枪的照片,就让谷歌的云端视觉分析服务 (Google Cloud Vision API) 误认为这是一架直升机。仅仅做了一些人眼无法识别的改动就造成了计算机的图片分类错误。目前很多基于视觉的算法都很容易受到对抗样本的攻击额,比如下面这个经典的例子:如图 2 所示给定一张熊猫的图像,给图片添加了微小的噪声扰乱,尽管人眼是很难区分的,但是模型却以非常高的概率将其误分类为长臂猿。


微信图片_20211201202817.jpg

图 3:对抗样本攻击


3. 潜在解决方案


[4]通过充分利用立体图像中的稀疏,密集,语义和几何信息,提出了一种用于自动驾驶的称为立体声 R-CNN 的三维物体检测方法。扩展了 Faster R-CNN 用于立体声输入,以同时检测和关联左右图像中的对象。通过在立体区域提议网络(RPN)之后添加额外分支以预测稀疏关键点,视点和对象维度,其与 2D 左右框组合以计算粗略的 3D 对象边界框。然后,通过使用左右 RoI 的基于区域的光度对准来恢复精确的 3D 边界框。


该方法不需要深度输入和 3D 位置,但是,效果优于所有现有的完全监督的基于图像的方法。在具有挑战性的 KITTI 数据集上的实验表明,该方法在 3D 检测和 3D 定位任务上的性能优于最先进的基于立体的方法约 30%AP。


[5]提出了一种抵御对抗样本的端到端图像压缩模型。对抗图像和原始图像之间的扰动非常小,但是在图像分类模型的高层表示空间,扰动被放大。作者使用 ComCNN 去除去除对抗性图像的冗余信息,再用 ResCNN 来重建清晰的图像,这样就抑制了对抗扰动的影响。


[6]提出了一种双重注意力网络(DANet),不同于以往通过多尺度特征融合捕获语境,基于自注意力机制将局部特征与其全局依赖关系相结合,在传统的基于空洞卷积的 FCN 上添加了两个注意力模块,分别对空间维度和通道维度的语义相互关联进行建模。位置注意力模块通过所有位置的特征加权总和选择性地聚集每个位置的特征。无论距离远近,相似的特征都会相互关联。


同时,通道注意力模块通过整合所有通道图中的相关特征,有选择地强调相互关联的通道图。最后将两个注意力模块的输出相加,以进一步改进特征表示,这有助于获得更精确的分割结果。


三. 99% == 0% \ 精度与速度


1. 困境


某些实际任务中,人工智能仍然无法超越人类,为符合实际场景精度要求,通常会组合多种算法来实现,这种情况下模型实时性无法保证,因此需要模型加速。


2. 案例


对于自动驾驶或者人脸支付这种精度要求比较高的应用场景,百分之零点一的误差都会导致生命和财产的损失,因此很多时候 99.0% 就意味着 0%,因此通常需要结合多种算法以达到要求。另外很多视觉应用都在向手机端或嵌入端转移,因此模型的高效也是非常重要的。尤其对于自动驾驶任务,如果检测算法无法达到 10fps,尤其在高速路场景中,前车碰撞预警不及时,将会带来极大的损失。

3. 潜在解决方案


[7]提出了一种训练卷积 l 神经网络的方法,由于网络中有很多多余的权重,在训练的时候把他们丢弃(pruning),接着训练剩下的网络,然后再把丢弃的参数找回来,可以极大的减少精度损失。并且作者指出,即使是一个参数很少(under-parameterized)的网络,模型也会存在冗余,因为训练过程通常是低效的。


因此作者提出一种简单的训练方式,先训练整个网络,然后根据一定标准裁掉 30% 的 filter,再训练剩下的网络,再把裁掉的 filter 拿回来,用于现有 filters 正交的方式初始化,迭代这个过程 N 次即得到最终模型。


[8]认为模型剪枝方法通常成本高昂,在实现 FLOPs 压缩时会导致准确度显著下降,而作者提出通过设计新的卷积核(kernel)来降低给定模型/架构的 FLOPs,同时无损准确度。文中作者也给出了大量实验,证明该方法的 FLOPs 比当前最佳的剪枝方法显著更低,同时还能维持基础模型/架构的准确度。


现有的剪枝算法通常利用范数(Lp-norm)来衡量 filters 的重要性,因此范数较小的 filter 可以被去掉而不影响网络性能。但该方法有两个前提,一是滤波器范数分布的标准差要大,二是最小的范数要足够小,但实际训练得到的网络并不总是满足以上条件,从而导致重要的 filter 被裁掉进而影响性能。


因此[9]提出了一种基于滤波器的几何中心(geometric median)的剪枝算法,来对神经网络进行压缩和加速。该方法从几何的角度出发,认为滤波器的几何中心含有所有滤波器共同的信息,因此临近几何中心的滤波器是可以被去掉的。这种新的剪枝方法,打破了以前的剪枝算法对滤波器范数的要求,提高了剪枝算法的适应性,因此取得了更好的性能。
本文作者韩放,北京化工大学研究生毕业,现在在一家物流公司做视觉方面的工作。


参考文献:[1]Rui Gong, Wen Li, Yuhua Chen, Luc Van Gool.DLOW: Domain Flow for Adaptation and Generalization.In arXiv:1812.05418,2018.[2]Fabio Maria Carlucci, Antonio D''Innocente, Silvia Bucci, Barbara Caputo, Tatiana Tommasi.Domain Generalization by Solving Jigsaw Puzzles.In arXiv:1903.06864,2019.[3]Ziwei Liu, Zhongqi Miao, Xiaohang Zhan, Jiayun Wang, Boqing Gong, Stella X. Yu.Large-Scale Long-Tailed Recognition in an Open World.In arXiv:1904.05160,2019.[4]Peiliang Li, Xiaozhi Chen, Shoji Shen.Stereo R-CNN based 3D Object Detection for Autonomous Driving.In arXiv:1902.09738,2019.[5]Xiaojun Jia, Xingxing Wei, Xiaochun Cao, Hassan Foroosh.ComDefend: An Efficient Image Compression Model to Defend Adversarial Examples.In arXiv:1811.12673,2018.[6]Jun Fu, Jing Liu, Haijie Tian, Yong Li, Yongjun Bao, Zhiwei Fang, Hanqing Lu.Dual Attention Network for Scene Segmentation.In arXiv:1809.02983,2018.[7]Aaditya Prakash, James Storer, Dinei Florencio, Cha Zhang.Rep:Improved Training of Convolutional Filters.In arXiv:1811.07275,2018.[8]Pravendra Singh, Vinay Kumar Verma, Piyush Rai, Vinay P. Namboodiri.HetConv: Heterogeneous Kernel-Based Convolutions for Deep CNNs.In arXiv:1903.04120,2019.[9]Yang He, Ping Liu, Ziwei Wang, Zhilan Hu, Yi Yang.Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration.In arXiv:1811.00250,2018.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
常量和变量_数据类型|学习笔记
快速学习常量和变量_数据类型
4 0
动态内存分配|学习笔记
快速学习动态内存分配
4 0
二维数组_基本概念|学习笔记
快速学习二维数组_基本概念
5 0
二维数组_内存结构|学习笔记
快速学习二维数组_内存结构
3 0
ResNet实战:tensorflow2.X版本,ResNet50图像分类任务(大数据集)
本例提取了猫狗大战数据集中的部分数据做数据集,演示tensorflow2.X版本如何使用Keras实现图像分类,分类的模型使用ResNet50。本文实现的算法有一下几个特点: 1、自定义了图片加载方式,更加灵活高效,不用将图片一次性加载到内存中,节省内存,适合大规模数据集。 2、加载模型的预训练权重,训练时间更短。 3、数据增强选用albumentations。
7 0
InceptionV3实战:tensorflow2.X版本,InceptionV3图像分类任务(大数据集)
本例提取了猫狗大战数据集中的部分数据做数据集,演示tensorflow2.X版本如何使用Keras实现图像分类,分类的模型使用InceptionV3。本文实现的算法有一下几个特点: 1、自定义了图片加载方式,更加灵活高效,不用将图片一次性加载到内存中,节省内存,适合大规模数据集。 2、加载模型的预训练权重,训练时间更短。 3、数据增强选用albumentations。
6 0
冬季实战营第一期:从零到一上手玩转云服务器体验步骤
冬季实战营第一期:从零到一上手玩转云服务器体验步骤
4 0
常量和变量_变量定义|学习笔记
快速学习常量和变量_变量定义
3 0
冬季实战营第一期:从零到一上手玩转云服务器学习报告
从零到一上手玩转云服务器,第一期学习报告
5 0
递归函数|学习笔记
快速学习递归函数
4 0
1654
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载