思谋学术(知识蒸馏在工业缺陷检测轻量模型中的

nba赛程 2022-11-28 18:59www.1689878.comnba排名


前言

作为一种十分实用的提升轻量级模型精度的训练技巧,知识蒸馏最早在2015年被Hinton等人提出,核心思想是使用大模型作为“教师”模型,来指导小模型(即“学生”模型)的训练,从而提升小模型的精度。现阶段在学术领域,知识蒸馏已经有了很多研究成果,然而如何将这些前沿成果应用在实际的工业项目中,也是所有企业需要考虑的问题。


思谋科技(SmartMore)是一家行业领先的全链条前沿科技公司,致力于研发新一代AI技术,打造软硬件一体化产品,推动传统行业数字化、智能化转型升级。思谋科技由香港中文大学终身教授、IEEE院士贾佳亚创立,核心团队深耕计算机视觉领域20余年。


在知识蒸馏这一领域中,思谋科技不仅在CVPR 2021和ICCV 2021上发表了多篇论文成果,更是将在针对工业场景搭建的计算机视觉算法平台SMAP(SMoreAI Platform)中构建了一个知识蒸馏工具,将知识蒸馏实际应用到产业项目中。


9月2日,在思谋科技工业视觉AI专场第1讲:工业缺陷检测轻量模型专场中,思谋科技高级算法研究员陈鹏光以《知识蒸馏在工业缺陷检测轻量模型中的应用》为主题,对思谋科技在知识蒸馏的前沿研究和工业应用上的探索进行了深入讲解。

讲师介绍

陈鹏光,思谋科技高级算法研究员


香港中文大学计算机科学与工程学院在读博士,本科毕业于南京大学计算机科学与技术系;主要研究领域包括目标检测、语义分割、AutoML、知识蒸馏、自监督学习等;曾在国际顶级会议发表数篇学术论文;目前在思谋科技负责算法平台的搭建,熟悉各个不同的计算机视觉领域,对于模型的优化算法有较深研究。


主题:知识蒸馏在工业缺陷检测轻量模型中的应用

提纲:

1、知识蒸馏的背景及其代表性工作
2、思谋发表于CVPR2021和ICCV2021的研究成果

3、思谋计算机视觉领域算法平台SMAP及知识蒸馏工具

4、知识蒸馏在缺陷检测轻量模型实现中的作用

讲解实录

大家好,我是今天的讲师,来自思谋科技的陈鹏光,很高兴在这里和大家分享一些研究中的心得。我们今天的主题是《知识蒸馏在工业缺陷检测轻量模型中的应用》。今天的内容主要分为以下四个部分。


01

知识蒸馏的背景及其代表性工作


神经网络的一种趋势是越高的精度就需要越大的计算量,更大的神经网络可以带来更高的精度,但同时也会带来一系列的问题。比如说当项目的速度要求比较高,或者说我们需要把模型部署到终端时,高计算量会带来很多的问题,如何在保证速度的前提下提升模型的精度?一直以来都是研究领域的一个热点问题。


这其中包括了多种解决方案,比如可以设计更优秀的网络结构,或者利用网络剪枝、网络量化以及知识蒸馏,而我们今天主要要关注的就是知识蒸馏这个方法。这个方法有很多优势,像可以适用于各种不同的任务,而且它和其他前面几种方式其实都是兼容的,是一种非常好的网络训练技巧。


接下来我们简单介绍知识蒸馏的流程,如果没有特殊说明,下面我们都以图片分类这个任务为例。首先介绍下一个神经网络的训练过程,一张图片经过神经网络的处理得到一些结果,和ground truth的label做loss,然后再进行反向传播更新。知识蒸馏的流程也很简单,首先我们需要单独训练一个大网络作为教师网络,假设这个就是我们训练好的教师网络。接下来我们需要训练学生网络,通常来说,我们学生网络就是要用到的那个轻量级模型,在训练轻量级模型的过程中,它不仅仅学习ground truth的label,同时还会学习教师模型的预测结果。相当于是说学生模型同时在教师模型的预测结果,和ground truth label下的监督下进行训练。


02

思谋发表于CVPR2021和ICCV2021的研究成果


首先上图是我们在CVPR2021的一篇工作,翻译成中文大概是“一种基于温故而知新的知识蒸馏方法”。我们先回顾一下人类是怎么做一道数学题的,大家肯定都做过数学题,一般来说一道题你可能会分为几步,比如说第一步、第二步、第三步算了什么,最后这个问题被解决了。其实我们也可以把神经网络处理一张图片想成类似的一个过程,比如说这个图片经过第一步得到一些中间层的特征,这些特征再经过第二步、第三步、第四步从而得到最终的结果。一般来说我们这里面每一步就是指的是网络的每一个阶段,或者说是每一个stage,这样我们可以把之前的一些知识蒸馏方法理解成学生在解决这个问题的时候,比如在做第一步的时候,他会去看一下教师模型是怎么做的,然后他去学习教师模型的做法。在做第二步的时候,也去看一下教室模型第二步是怎么做的,以此类推,他在做每一步的时候,都可以去学习一下教师模型当前是怎么做的,从而可以取得一个更好的效果,也就是说我们会学习教师模型当前的一个做法。


其实复习这个概念应该是在我们学习中经常会遇到的,就是说你在做后面的步骤的时候。比如说我在做第三步的时候,我可能想一想我第一步是怎么做的,去看一下,可能对于接下来怎么做会有一个更好的启发。我们就想是不是在神经网络的学习过程中,也会存在一个类似于这样的现象,所以我们就尝试让这个学生模型去学习教师模型前面几步是怎么做的。比如说在学生模型做第四步的时候,他不仅学习教师模型第四步的做法,他还会去复习教师模型在前三步的时候是怎样做的,通过复习这样一个过程,就可以得到一些之前可能你落下来的知识,从而可以得到一个比只学习当前这一步更好的效果。


大家都知道计算机视觉从某种程度上来说是一个实验学科,所以我们做了一些实验去验证我们之前的一些想法。上图是之前的知识蒸馏的一个简单的流程示意图,左边是教师网络,右边是学生网络,学生网络和Ground Truth label做一个loss结果是69.1。接下来,我们尝试用不同层的教师网络和学生网络之间的蒸馏的结果,然后记录在左上角的表格中。首先我们尝试用相同的层去做蒸馏,它的结果是汇总为左上到右下对角线的3个值,我们可以看到,如果你选取一些比较合适的层,它能够得到一些最好的结果;接下来我们尝试用不同层的之间的一些蒸馏,看看会取得怎样的一个效果。结果为左下角的3个值,在这些实践过程中我们发现,你在学生网络在做第三步的时候,如果你去复习第一步的一些做法,其实也是会有提升的,大家可以从上面的表格里面看出来,就是说用学生网络的第三层,去学习教师网络的第一层,其实它也是能够提升的。


既然表格下半部分已填完,现在尝试下上半部分它的结果是怎样的。比如说如果在学生网络做第一步的时候,就让他去学习教师网络第三步的解法会怎样?结果表现为表中右上角的3个值,我们会发现这样做不但不会有提升,反而会有害,这其实从直观上来说也很好理解。就是说你做事情的时候不能好高骛远,你在做第一步的时候就去想着第三步怎么做,其实是会有害处的,这个和我们很多人生中的一些事情也是相通的。我们在做后面事情的时候,去复习一些前面的知识会有好处,但是你在前面做事情的时候,就去想着后面一步要怎么做,反而会有害处。

所以,结合之前做的那些小实验,我们设计了如上图所示的一个结构图,就是说学生网络在做第三步的时候,我不仅学习第三步的做法,还要去复习前两步是怎么做的。


经过一系列的优化,我们根据之前所说的复习机制,得到了这样一种的蒸馏结构。大家如果想去深入的理解具体的一些表达形式和一些计算方法,可以去看我们的论文,包括我们的代码也是都已经公开了的。

接下来介绍我们在ICCV 2021的工作:Deep Structured Instance Graph for Distilling Object Detectors,即基于一个知识图结构的检测器的证明,大概示意图如上图所示。这里我们做的一个工作,是一种针对性的蒸馏方式。大家可以看到我们之前的蒸馏方法其实是做了分类、检测和实例分割三个任务,但我们大家都知道目标检测是一个非常重要的任务,在各个领域都会有很多的应用。所以说我们接下来考虑针对这种最重要的一个任务,针对性的设计一种蒸馏方式,这种蒸馏方式只针对于目标检测这个任务。


在我们之前,也有一些针对检测器做蒸馏的论文,但是之前这些方法他们的设计里面还存在着很多问题,我们这里主要提出来两点,第一个是特征的不平衡问题,不平衡的问题主要是指前景特征和背景特征的不平衡;第二个问题在于它缺少了一种instance level的一个relation,目标之间的一种关系。之前的一些方法,像分类上,其实都是点对点的蒸馏,因为在分类上没有instance这个概念。但在目标检测这个任务上,我们更关注的是instance这个概念,就是一些物体,这些物体之间的关系其实在我们做检测的时候是很关键的。


针对这两个问题,我们就提出了一些改进的方案。首先对于前景和背景应该怎么选?其实我们很巧妙的就选用了RPN网络,他们所提出的一些proposal,作为我们要检测的区域,每一个proposal其实就对应了一个点。接下来,既然它缺少了一个instance level的关系,我们就在我们图结构里面把这个关系给它形式化的model出来。我们设计了一种前景之间的关系,同时我们也设计了一些前景和背景之间的关系,因为前景和背景的目标其实是不一样的,所以我们会区别的对待前景点和背景点。这些关系就形成了我们这个图里面的一些边,而这个点的设计和边的设计共同结合在一起,就是我们最开始题目里面所说的知识图结构。

我们比较详细的说一下点和边的设计,首先是这个点的设计,在之前已经提到了,即使用proposal区域作为我们的点,这些区域它其实在训练过程中,它是不断的被网络所学习的,也是不断的在变化的,它代表了网络所关注的一个重点。它比起我们之前所说的那些一些人工的设计基于前景区域的一些mask,其实是要更加合适的,因为它天然的就代表了网络的一个关注点。接下来是一个边的设计,这个图里面它边的含义就是两个点之间的一个相似度,就是similarity的一个函数,怎么衡量相似度呢?其实我们非常简单的选择了一种简单又高效的余弦相似度的一个形式。最终的蒸馏就是在教师模型和学生模型的知识图之间进行的。更见具体的一些细节信息欢迎大家去阅读我们的论文。

03

思谋计算机视觉领域算法平台SMAP及知识蒸馏工具


接下来我们来到了第三个部分,介绍一下我们公司所使用的一个缺陷检测算法平台,以及其中所用到的知识蒸馏的一些工具。



我们公司的算法平台是简称SMAP,即SmartMore AI platform的意思,它的设计核心是一种面向交付的算法平台。和网上的一些开源算法库是不同的,主要有四个特点,第一个特点是工具化,希望它能够快速的被不同的工程师给利用起来,一个工程师所实现的一些功能,也可以快速的在不同的工程师之间进行迁移,它本身就可以作为一种知识沉淀、知识传播的一个载体。


第二个是平台化,这个主要是指我们建立了不同任务之间的一个联系。大家都知道对于计算机视觉来说有分类、分割、检测,还有各种各样关键点什么各种任务,我们是把这些所有的不同的任务都放在了统一的一个平台上。这样做的好处是在于一些工具的设计和使用可以在不同的任务之间进行共享,比如说我们的知识蒸馏,其实你写一遍之后就可以在分类、分割、检测等各种任务上就可以进行复用。


第三个是范式化,我们希望在各种各样繁杂的项目中找到一个范式,实现模型的自动化生产。在新的任务来的时候,我们就可以快速的完成迭代与交付。


最后一个是产品化,我们的平台是可以完全和工程侧进行打通的,通过一些配置文件就可以自动化的把SDK给组装起来,得到可以直接去部署和推理的SDK,同时我们也会把内部使用的算法平台和提供给客户的产品完全打通,可以更快、更简洁的把我们最新的技术传递给客户。


接下来我们详细介绍一下我们蒸馏代码库的一些优势。这个优势在这里主要总结了5方面:全面、高性能、应用、拓展性和针对性。

首先第一点是全面。对于一些开源的代码库来说,其实它很难做到真覆盖各种计算机数学任务,它们通常都是只针对一种认证任务进行蒸馏,但是我们的蒸馏工具,它可以实现多个任务共同的一个覆盖。就是说无论我们有什么样的任务,即使你新加一个任务,它也可以直接使用我们之前的蒸馏这样一个工具;全面的第二个方面指的是它包含了多种蒸馏函数;全面的第三点是指我们可以在多个位置进行蒸馏。通过这些不同的组合,我们最终可以产生数十种蒸馏方式,可以涵盖各种各样的项目中所遇到的各种各样的情况。


第二个优势是高性能了,我们可以利用不同的蒸馏算法,在各种标准任务上都取得一个最前沿的结果。


第三个优势是易用,这个和我们之前讲的SMAP的4个设计理念就非常相关了。就是说我们的工具是一种配置文件驱动的工具,算法工程师在使用的时候,他不需要修改任何的代码,只需要定义一份合理的配置文件,就可以得到想要的效果。让我们的算法工程师用起来很方便,不需要去阅读代码,也不需要去修改代码,只需要通过修改配置文件就可以达成这样一个效果。

第四个优势在于拓展性很强,这一点同样得益于我们的平台的设计。拓展性这里也是从三个方面来说,第一个是说对于新的蒸馏算法的兼容性下,算法研究员可以很容易地去添加新的蒸馏方式;第二个拓展性强指的是对于新的应用场景拓展性强,就说如果你有新增的任务,你不需要修改蒸馏的代码就可以直接用;最后一个兼容性强指的就是说和其他工具的兼容性强,其实这个之前也有提到,它可以无缝地和SMAP的工具相结合。比如说我可以把蒸馏和网络结构搜索一起用,或者说让蒸馏和HPO启用,让我们的超参数优化系统自动地去选择最优的一种蒸馏方式等。


第五个优势是针对性强,这个就是说我们会针对工业场景中经常出现的一些情况进行对应的一个改进。在这里举了一个改进的例子,工业场景的图片它和自然场景是有非常大的一个区别的,针对工业界中经常出现的问题,我们提出了一种针对于工业场景的一种蒸馏方式,即基于信息熵的一种蒸馏方法,我们可以利用不同区域的一个信息熵,来调整蒸馏算法的一些实现,从而可以在工业场景中去取得一个更好的效果。这些方法它在自然场景中不一定合适,但是针对于我们所经常出现的工业场景的图片,是可以取得非常好的一个效果。


以上就是我们算法平台以及知识蒸馏模块的介绍。利用这个算法平台,我们就可以做到很多别人做不到的事情。比如说我们可以在很短的时间内就完成POC的模型,提升工作效率,也可以利用我们的各种工具来提升模型的一个精度等等。


04

知识蒸馏在缺陷检测轻量模型实现中的作用


最后我们拿一些实际项目的例子简单介绍下,知识蒸馏在我们实际项目中的一个作用。首先以一个全球知名手机品牌的无线充电线圈的缺陷检测,这款手机估计很多在场的朋友也都是在用的,其中它的一个元器件检测就是我们在做的,目前是已经交付落地。在其中我们是做了超过30种高难度缺陷的检测,也得到了非常好的一个检出率。最后总的检出率是超过了99.8%,人力成本削减达到了80%。在其中我们就用到了知识蒸馏的一些技巧,可以把检出率提升两个点左右。这个就是一些更加具体的中间结果,是经过了脱敏处理的,是像素级的准确率,不是最终衡量标准,可以更好的看出我们的蒸馏方法的一些优势。


大家可以看到用大模型通常会比小模型要来的更好一些,然后不同缺陷之间,其实它们的经度的差异也很大,比如说对于这个缺陷来说,它可能就出现的比较少,或者说它的面积比较小,精度就会比较低,然后有的缺陷可能出现的多一些,它的精度就会比较高。我们可以使用一些传统的方式去进行蒸馏,最终确实是会有提升的。但是我们用我们自己所设计的这一套算法可以得到一个更加有效的提升效果。


最后跟大家分享的是一个芯片工艺分析的项目。芯片是非常小的,我们是需要检测里面的电路结构,这个任务他们之前的一些做法是靠人的手工去磨,磨了一层之后再使用电子显微镜去成像,成像之后可以得到灰度颜色不一样的电路图,然后再去做结构化。这种情况下当你的需求量大了之后,比如说当你的需求量到了百万千万这个级别之后,就不能再靠人工去做这样的事情,所以说它非常有迫切的自动化的需求。这个听起来简单,但其实要处理的问题很多,比如说可能会遇到一些成像模糊或者说制成不同,它的28纳米和14纳米成像出来都是不一样的,或者说是有一些噪声等等。然后思谋针对这样一个任务,推出了对应的全站解决方案,并且实现了一种结构自动结构化检测。最后的检出率非常高,是远远超出了我们标准,达到了99.99%,处理效率提高了96%。在这个过程中我们也有用到知识蒸馏的思想,使我们的检出率大概也是有了1到2个点的提升。

Copyright © 2016-2025 www.1689878.com 体育知识网 版权所有 Power by

足球|篮球|NBA|奥运|网球|高尔夫|田径|游泳|排球|赛车|比赛|亚运会