您当前的位置:首页 > 新闻中心 > 公司新闻
新闻中心
公司新闻

AI上计算机视觉

作者:admin      发布时间:2023-11-20

  简介:结合中国计算机大会(CNCC)大会观感和自己的研究方向,在中国计算机学会(CCF)西电学生分会做了题为《AI上计算机视觉》的报告,以目标导向思路分析了人工智能与计算机视觉的挑战、任务、研究对象、工作及方法,用多元思维模型阐述了对深度学习的理解,创新地提出用“本、领”的概念来描述深度网络的性能,希望能帮助大家用更多的角度理解如何用深度学习做视觉,并针对视觉面临的新挑战一起拓展科研思路~

  B站链接:《AI上计算机视觉》-谈谈深度网络的本领-CCF西电学生分会CNCC2021观后感分享会_哔哩哔哩_bilibili

  我是人工智能学院的周钰轩,很荣幸能有这次分享的机会。我的题目是《AI上计算机视觉》,我会讲讲人工智能和计算机视觉的故事,希望大家在听完我的分享以后,都能爱上计算机视觉。

  首先,我们先来明晰两个概念,人工智能和计算机视觉。这两者并不是简单的包含和被包含的关系,因为它们各自有各自研究的重点和思考的角度。即使不用人工智能,用传统的数字图像处理方法,也可以实现一些简单的视觉任务。而人工智能的闯入为计算机视觉注入了新鲜的活力,让视觉的能力得以腾飞。所以我们可以这样理解,人工智能面向的主要是一系列基础方法,它们形成了一个学科领域;而计算机视觉更多的面向的是应用任务,它指示着一系列亟待我们解决的挑战。

  而我们的世界不是按照领域来划分的,而是围绕挑战组织起来的。我们只有紧紧地围绕着计算机视觉的挑战,才有可能把琐碎而凌乱的方法和知识拧成一股绳。

  面对挑战所带给我们所需要解决的问题,它的需求是市场给予的,它的奠基是时代赋予的(比如有丰富的数据、算力和理论依据等等)。而问题到了我们手里以后,我们可控的部分就是去分析它的挑战、任务,明确研究的对象,并且想一想该做什么样的工作、找什么样的方法。接下来,我也会按照“挑战、任务、对象和工作方法”这个思路流程来逐一地展开论述,剖析一下计算机视觉的脉络。

  首先,我们的生产生活给我们带来了哪些视觉类的挑战?其实任何一个视觉应用场景都是一个挑战。譬如,纸币的面值识别,你要教会计算机给纸币的图像做分类吧。遥感地物定位、人体骨架关键点定位,你得让计算机检测出目标物体在视野当中的位置信息吧。医学影像分析,你得分割出轮廓,识别出哪块是骨头、哪块是器官吧。你想找到确诊病人去过的所有场所,你得让计算机从监控记录中检索出所有跟这个人有关的截图吧,等等。这些都是我们所面临的活生生的挑战,它们总的来说就是三大方面的挑战,一类是教会计算机如何去看的挑战、一类是教会计算机如何去画的挑战(就如一些重建任务)、还有一类是教会计算机产生通感的挑战(就是一种多模态的应用,就像小时候学过的一篇课文里的一句话:“我嗅到了紫色的芳香”)。

  了解了我们所面临的挑战,那么下面就来定义一下我们为了解决这样的挑战所应该完成的任务。对于我们这些玩计算机的人来说,我们的任务自然是用计算机来解决视觉问题,也就是将现实中的视觉问题用数学模型来描述,转换为用计算机可操作的机器学习求解问题。

  比如,分类问题、回归问题、聚类问题等等。而这些问题显得十分抽象,因为机器学习是在对一群高维空间当中的点做处理的。而我们视觉所处理的图片,和这些高维空间当中的点有什么关系呢?这是问题的核心所在,搞清楚图片和高维空间当中的点的关系,是建立一个合格的数学模型的基础。

  于是我们就该明确研究对象了。在高维空间当中的一个点,其实就是一个高维向量。高维向量的每个维度都代表着一个特定的属性信息。因此,一个高维的向量就是一个良好的“抽象语义”表征,它有多少维度,就会蕴含多少丰富的语义信息在里面。而我们的图像数据,在计算机当中是以数字阵列的形式存储的。于是我们就看清了计算机产生视觉认知的本质,那就是将光强数值阵列转变成抽象语义表征的这样一个过程。因此,只要输入数据的结构是一个四四方方的整齐的阵列,就都可以看成是一个计算机视觉的问题,无论是RGB三通道彩色图片、红外热图单通道图片、还是遥感中用到的高光谱,都是视觉问题。

  天下无巧不成书,人工智能里的机器学习里的深度学习方法,就很擅长将低级的数值张量通过各种变换映射成高级的表征向量,于是我们就有了当今最火爆的工作和方法,那就是——基于深度学习的计算机视觉。这项工作其实就是在建立端到端的从数字图像到数字语义的映射模型,使图像数据经若干步计算及数学变换后产生可计算辨识的高级表征,从而充分地表达正确的视觉认知结果。而这个映射模型的参数,是可以通过可行的优化算法减小输出误差来习得的。这个映射模型可以是神经网络,也可以是别的,只要能完成这种映射就行。而且我们的工作是希望这个映射模型是简单、有效的,这里的“简单”的指的是让它运作起来所需要的前提假设更少,从而它就能够普适于更多的应用场景。

  至此,人工智能就闯入了计算机视觉界,两者对彼此都产生了深远的影响。对于计算机视觉界来说,深度神经网络使视觉任务可以“端到端”地进行,不再依赖复杂繁琐的人为特征工程。对于人工智能界来说,他们看到计算机视觉竞赛中屡屡刷榜的都是各类深度学习算法,于是“有监督学习”范式的有效性被突显出来,一度成为人工智能的主流研究内容。

  虽然说深度学习的主体是神经网络,但是如果只把深度学习看成是神经网络的话,就有些肤浅了。巴菲特的搭档,著名投资人查理·芒格就说:“在手握锤子的人看来,世界就是一颗钉子。”如果只拥有单一的思维模型,那就难免会犯一些片面理解的错误,难以全面和深入。因此我们需要用多元思维模型结合交叉学科来看待深度学习算法。

  在学通信、信号处理的人看来,世界就是一个信号与系统。而这个映射模型,就是当中的一组滤波器。

  在学数学的人看来,深度学习就是一个映射函数,把输入从一个样本空间当中的一个点,映射到另一个样本空间中的一个点上去。

  在学矩阵论的人看来,深度学习就是在做特征向量的变换。广义地讲,向量、向量组都属于张量。就像嚼口香糖一样,张量的形状在映射中被不断地改变,也许它总的信息量没有改变,但它所表示出来的含义的侧重点发生了改变。

  在学优化算法的人看来,深度学习就是在一个庞大的搜索空间当中去寻找最优解的过程。在一个映射模型当中,每一个可以学习的权重都是一个可搜索的值,每个可搜索的值都是一个轴,它们交织在一起就构成了一个庞大的搜索空间。有多少可学的参数,搜索空间就有多大。

  在学概率统计的人看来,映射模型就是一个条件概率,或者说是一个转移概率。把输入x当作一个事件的发生,当我们知道x发生了,根据条件概率所指示的关系就能推出此时y也同时发生的可能性有多大。

  在学逻辑学的人看来,这个映射模型就是一个规则库、知识库,通过我们已经获得的知识来知因推果或者知果溯因的这样一个过程。所以我们才常常说“推理”这个词,如网络的“推理精度、推理速度、推理性能”这些概念。

  下面为了叙述方便,我就姑且用“网络”这个词来代替“映射模型”,但我们一定要知道映射模型不一定必须是神经网络;当然也要承认,神经网络的确是一种非常好的映射模型。

  从深度学习的视角来看,我是怎么理解“人工智能”的呢?“人工”,就是数据的标注。“智能”,就是建立一个映射系统,而这个映射系统它是可以自适应拟合的,这种拟合能力就是网络的智能所在。这里,“标注”,就是构建对网络的监督信号,监督着网络去学什么东西。“拟合”又可以拆分成两个字,“拟”指的是建模搜索空间,搜索空间足够大,表征能力足够强,覆盖范围足够广,才有可能覆盖到这个问题的最优解上去。“合”指的是推导求解能力,仅仅覆盖到最优解是不够的,还得真的能搜索到这个最优解上去才行,所以需要有效的去逐步逼近最优解的能力。我们经常讲,要评估一个网络的“性能”,但我希望我的这个分享能给大家带来一个崭新的看问题的灵感,把这个“性能”这个词换成“本领”,评估一个网络的“本领”有多强。本领又能拆成两个字,“本”就是“本事”,“领”就是领悟。“本事”对应的就是网络的拟合能力,有多大搜索空间,有多大转得动的脑容量,就有多大的本事。“领悟”指的就是你要“领”着网络去“悟”,所以你标注的形式,就直接决定了网络能学到哪种能力;你标注的质量,就决定了网络能学多好;你标注的数量,也决定了网络能走多远。所以当我们想去提升一个网络的智能水平,就可以考虑从“本”和“领”这两个方面来入手,来不断升级网络的本领。

  理解了这个网络的“本领”这个概念,深度学习的流水线就可以深入人心了。首先,人工地去建立数据标注对儿,一边是原始数据(对于视觉任务,原始数据就是图像),另一边是图像所对应某种语义形式的真实标签。然后,建立一个自适应的映射模型,让输入的低级数值张量映射成高级表征向量,得到映射输出,再让这些输出去逼近理想的真实标签,逼近过程中所产生的误差作为监督信号,传播回来,来指导映射模型去自适应,最终得到一个性能优良、本领高强的映射器,这样就完成了深度学习。

  在深度学习当中,映射系统无疑是最神奇的部分,值得我们细细品味。整体上讲,映射系统完成的任务先后是提取特征和输出答案。根据网络不同环节所面向的侧重点,我们又可以把网络分为骨干网络、颈部网络和头部网络。在做设计的时候,分别对网络的不同阶段进行设计,思路就会非常清晰。

  首先讲一下骨干网络——特征提取器。其实骨干网络可以设计成各种各样的形式,无论设计成什么结构其实都行,只要网络能完成相应的映射、搜索空间足够大、特征向量的表征能力足够强(也就是说,特征向量的维度要够多,但也不要有太多的冗余)、同时还训得动,就行。据目前的发展来看,在计算机视觉的挑战上,多层感知机(MLP)、卷积神经网络(CNN)和Transformer,这三大基本结构是很有效的。那它们为什么有效呢?作为“炼丹师”,我们需要结合一些哲学思想来理解它们。这也是我在听过本次CNCC大会后最受启发的一个内容。熊辉教授在讲座中,把特征提取的工作原理与易经的智慧紧密地联系在了一起。易经有三易,谓“不易”、“简易”和“变易”,其中“不易”和“简易”就是特征提取器的精髓。“不易”,即不随时间或场景变化的理。“简易”,就是去粗取精。

  举个例子,从微观的视角可以很生动地呈现“不易”之道。一个正立的X,稍微做一些平移、旋转、膨胀等,很多位置上的像素值就都发生了变化,这个差异可不小。但它依然有不变的部分,比如局部依然保留着的一些结构(如图中方框处),就是不变的因素。把这些提炼出来、统计出来,作为特征,就能获得一种“不易之道”,就算有万千扰动,都能抓准它的核心含义。

  “简易”的过程,以卷积神经网络为例,它的pooling层在逐步地做下采样。pool这个英文单词除了能翻译成“池化”,翻译成“汇集”其实更准确。汇集,就是只用一个统计特性来代表这一大片像素,从而凸显最有代表性的特征,而滤除了其它的波动。类比人事管理,就像收集大家意见的过程,一个组出一个代表,然后汇集起来,一个班出一个代表,再汇集,一个年级出一个代表,然后全校的管理层才能更方便地找出并抓住主要矛盾,做出更好的决策。所以,在“简易”的过程中,不断地捕获不易、提取不易,最终抓住了“不易”,也就是我们想要的具有良好表示能力的核心特征。这就是中国古老的易经穿越时空给我们现代的科技工作者带来的感动和启迪。

  第二个部分是颈部网络——特征融合器。骨干网络已经提取出某些高级语义特征向量了,颈部就是对这些高级语义进行一些融合汇集,从而产生更完备的表达,按照融合的方式可大致分为叠加颈、拼接颈、相关颈。叠加颈就是将高级表征向量直接按位相加。拼接颈旨在将若干个高级表征向量沿通道方向做堆叠,就像叠扑克牌一样,然后再将拼接起来的这个整体一起拿来做一个线性变换,就整合起来了。相关颈就是对若干个高级特征向量进行相关性的计算,并按照它们的相关程度来加权汇总。

  最后一个部分是头部网络,它直接对标相应的机器学习任务,如分类任务、回归任务、度量任务等。此时就是在对高级语义特征向量进行处理,用目标函数来规划问题。到了这个阶段,高级语义特征向量有什么妙用呢?一是表征学习要用到它,通过分类任务的监督信号,可学到“可计算辨识的”高维特征向量。该向量在高维空间中就是一个点。通常同类图像样本所映射出来的点都自然地凑在一起,而异类样本的映射点则分布在不同的区域中。二是度量学习要用到它,相当于加了一个更强的正则项作为约束,可使同类样本映射出来的点在高维空间里彼此靠近,异类样本相互远离。形成“簇”状分布。屏幕右下角是AlexNet论文中一个附加的实验结果,实验者将网络倒数第二层的高维向量取出,可视化那些在高维空间中,彼此距离相近的点所对应的原图,惊喜地发现,同类图片果然都在一起。因此可以看出,网络所提取出来的这个高级特征向量,是真的能很好地表征图像所拥有的信息。这也生动地说明了深度学习的特征提取能力是极强的。

  至此,传统的有监督、判别式学习范式的深度学习,就已经基本介绍得差不多了,它的确“本领”大,工业界只要有足够的算力和人力,通过扩大模型、多标数据,就能不断地提高它的本领。然而它还是有能力的天花板的。当前,基于深度学习的计算机视觉,又面临了哪些新的挑战呢?一是跨域测试的性能会严重下降,部署场景中的泛化性能差。二是由于隐私的保护,所以能获取到的样本很少;另外,人工做数据标注是一件十分费时费力的事情,因此标注出来的东西也很少,或者标注出来的不够精细。三是标注工作者也会犯一些错误,比如可能偷工减料、可能粗心大意,另外人自身也有人类能力的上限,有时我们凭自己的肉眼也无法分辨一些东西,所以就会产生漏标、错标等现象,导致标注质量不够纯正。对这些实用性挑战背后的技术性挑战亦可作简要分析,一是仅靠判别式学习范式不能满足真实部署场景中所需的泛化性能。二是仅靠有监督学习范式无法在缺乏标注的数据集上进行训练。三是模型的鲁棒性不够好,对数据及标注的噪声过于敏感。

  这样的挑战能转化成什么样的任务呢?我们新的任务可能是需要研究新的学习范式、加入人为先验知识,或者做一些仿生学来模拟人类的视觉认知。我们可以发展启发式的机器学习方法、挖掘新样式的监督信号、构建一些代理任务等等。还有就是结合信息论、认知科学、脑科学、心理学等一些交叉学科来升级我们的数学模型。

  下面仅以跨域测试性能下降的挑战为例,做个分析。在行人重识别技术中,所面临的一个重大的难题就是跨数据集的测试精度会严重下降。具体现象是,在源域的训练集上训练至收敛,作用在源域的测试集上,检索精度很高;而在目标域落地时,网络做实际推理的检索结果很差,出现了许多例检索错误。虽然检索错的人物的穿着、姿势都极其相似,但这并不能成为网络犯错的借口。可以发现,源域数据集和目标域数据集之间,数据特征的分布是有偏差的,直观地看,两个数据集彼此的街景、季节、人物整体穿着、光照、色泽、分辨率等都有所不同。域之间的偏差给网络的跨域推理带来了严峻挑战。

  为解决这个挑战,需要做什么任务呢?一是使深度网络模型能够“跨域自适应”,来提高其跨域泛化性能。二是学习“跨域不变性”,提取出“域无关”的有效表征(即提炼“不易”的思想)。

  接下来就该明确研究对象,即源域和目标域。域,由数据特征和特征分布组成。源域是已有知识的域,有标签,在此训练。目标域是要进行学习和适配的域,无标签,在此落地。有标签的源域和无标签的目标域拥有相同的特征,但是特征分布不同,我们需要设计方法巧妙利用源域来标定目标域。

  相关的工作和方法也有很多,如辅助属性法,就是将图片识别成若干文字描述作为中介,而文字描述肯定是一种具有跨域不变性的属性。还有风格迁移法,诸如冬夏街景转换,将源域图像的风格转换成目标域图像的风格,来缩小域间偏差。以及伪标签法,将源域上训练得到的“知识”迁移到目标域上,让网络在目标域上推理而初步生成若干伪标签,并经过多次迭代来逐步精炼这些标签,最终达到适配目标域的效果。

  接下来再做一些视野拓展。刚才提到,当我们想要提高网络的能力时,我们可以从“本事”和“领悟”入手。本事方面,跟建模有关。根据建模特点,归纳出两大学习范式,分别是判别式学习和生成式学习。判别式学习,就像是刷历年真题,只有见多才能识广。而生成式学习,就像是要当出题考官,需要先参透世界的普适规律,然后再根据从实际现场获得的条件约束信息对症下药,这个的学习成本是非常大的。从哲学视角来看,判别式学习好比是白手起家点滴积累而得到某物,它是从“得到”的角度来看待学习的过程的;而生成式学习则是通过从整个宇宙中舍去其他东西而剩下某物,它是从“失去”的角度来看待学习过程的。两者结果是一样的,但是过程是不同的,显然后者的段位更高。就像是来到一所大学念书,有的人是通过不断刷题、不断考试、不断申请,而终于得到了这个大学的录取通知书;而有的人则是通过舍弃去其他学校的可能性而最终选择和确定了来这所大学的结果,显然后者本事更大。生成式学习已经有许多有力的模型了,比如自回归模型、自编码模型、生成对抗网络(GAN)等。其中,深度学习三巨头之一Yann LeCun评价生成对抗网络GAN时说:“GAN为创建无监督学习模型提供了强有力的算法框架,沿着这条路走下去,有机会能开发出更智慧的AI。”

  说到“监督”,那就和“领悟”相关了。根据监督信号,归纳出两大学习范式,一是有监督,就像是填鸭式教学;二是无监督,就如同做自习功课。像半监督、弱监督、自监督等,只要有缺少标签、需要加工监督信号的情形,都含有无监督学习的机制。其中,半监督与弱监督是常易混淆的概念:“半”与“全”是从标签数量维度界定的,而“弱”与“强”是从标签细粒度维度划分的。如果有多个监督信号,比如待优化的目标函数中含有好几项(也包括正则项),那么从监督信号的角度看,可视其为“多监督”。另外,我为鲁棒学习造个词叫“歪监督”,因为从监督信号的角度来看,鲁棒学习面临着有杂质的监督信号,有些许“不正”的标签——不正为“歪”,所以叫歪监督。

  下面重点突出一下闪闪发光的自监督学习范式。自监督学习是一个值得关注、十分有前景的方向,它蕴含着许多宝贵的哲学思想。孟子说:“行有不得,反求诸己。”老子说:“知人者智,自知者明。”自监督学习旨在建立代理任务,让网络通过代理任务中所构造的监督信号学习和挖掘数据间的内部结构和规律。构建代理任务就像王阳明的“格物致知”,自己去找些角度和思考体系来细细品味、分析、辨识所研究的对象。根据代理任务的不同,又可以归纳出两大自监督范式,一个是对比式自监督学习;一个是生成式自监督学习。

  对比式自监督学习的主要流程是,将一张图片做很多种增强变换来扩充样本,但这些新生成的扩充样本依然对应着原本的高级语义标签。这样一来,对于同类样本,不同的样式对应着同一高级语义信息,都围绕着某种“不易之道”,让网络在变化的现象当中学到不变的本质特征。如荀子说的:“千举万变,其道一也。” 对比式自监督学习的代表工作有SimCLR——《A Simple Framework for Contrastive Learning of Visual Representations》。

  生成式自监督学习的主要流程就像是在做完形填空,挡住一大部分像素,让网络学习如何还原出原图。这给网络的学习带来了巨大的内驱力,逼着编码器网络必须学出表征能力极强的隐层特征,因为只有建立起更高级更深刻的认知才能指导后级解码器网络完成细节的重建。而这个具有很强表征能力的隐层特征就可以为后续具体任务的微调提供强有力的知识基础。生成式学习的重要思想就如费曼所说的一样:“凡我不能创造的,我都不能理解。”生成式自监督学习的代表工作有何恺明提出的MAE——《Masked Autoencoders Are Scalable Vision Learners》。

  最后来回顾一下本讲的重点。可能刚才我讲的东西有些凌乱,其余内容大家没有记住都没有关系,只有这张深度学习流水线的图和“深度学习本领论”,是我唯一希望大家最后能带回家的。对于构建一个深度学习系统,首先我们有数据的标注,最左端是原始数据,最右端是真实标签,是一一对应的映射对儿。然后我们构建一个可以自适应的映射模型,将低级数值张量映射成高级表征向量,再做最终的适配以逼近真值标签。在这个逼近的过程中产生一个监督信号,反过来不断优化模型自适应映射的效果。这个模型的搜索空间有多大、脑容量有多少,就决定了它的“本事”;而怎么去监督他,就是怎么“领”它去“悟”。我们如果想提升一个网络的能力,就可以从提升它的“本领”这个思路来入手。

  最后的最后就是一些学习资料的推荐,这些B站UP主是十分值得加关注的。借机打个小广告,我在Gitee上共享了一个开源项目,是面向计算机视觉初学者的动手教程,内容是基于深度学习的图像分类任务,代码易上手,可读性强。如果在座的同学之前没有玩过计算机视觉但对计算机视觉感兴趣的话可以用我的入门教程来体验一下上手的成就感。如果遇到任何问题,欢迎找我交流,期待亲的watch、fork、star一键三连。

  非常感谢大家耐心的聆听!也非常感谢CCF西电学生分会对这次分享活动的精心组织!