论文提出的GID框架能够自动选择可辨别目标用于知识蒸馏,而且综合了feature-based、relation-based和response-based知识,全方位蒸馏,适用于不同的检测框架中。从实验结果来看,效果十分不错,值得一看

来源:晓飞的算法工程笔记 公众号

论文: General Instance Distillation for Object Detection

Introduction


 在目标检测应用场景中,模型的轻量化和准确率是同样重要的,往往需要在速度和准确率之间权衡。知识蒸馏(Knowledge Distillation)是解决上述问题的一个有效方法,将大模型学习到的特征提取规则(知识)转移到小模型中,提升小模型的准确率,再将小模型用于实际场景中,达到模型压缩的目的。

 目前的知识蒸馏方法大都针对分类任务,目标检测由于正负样本极度不平衡,直接将现有的方法应用到检测中一般都收益甚微。而目前提出的针对目标检测任务的知识蒸馏方法大都对知识进行了特定的约束,比如控制蒸馏的正负样本比例或只蒸馏GT相关的区域。此外,这些方法大都不能同时应用于多种目标检测框架中。为此,论文希望找到通用的知识蒸馏方法,不仅能应用于各种检测框架,还能转移尽可能多的知识,同时不用关心正负样本。

 为了达到上述目的,论文结合response-based知识、feature-based知识和relation-based知识,提出了基于可辨别目标的蒸馏方法GID(general instances Distillation),主要优点有以下:

  • 可以对单图中的多个实例间的关系进行建模并用于蒸馏中。尽管已经有研究表明实例间的关系信息在检测中的重要性,但还没有研究将其应用的知识蒸馏中。
  • 避免手动设置正负样本比例或只选择GT相关区域进行蒸馏。虽然GT相关区域包含最多信息,但背景也可能包含对student的泛化能力学习有帮助的信息。论文通过实验发现自动选择的可辨别实例(discriminative instance)对迁移学习有明显的提升作用,这些显著实例也称为通用实例(General Instance, GIs),因为不需要关心其正负。
  • 对不同检测框架通用,GIs是根据student和teacher的输出进行选择的,与网络的内部结构无关。

  总结起来,论文的主要贡献如下:

  • 定义通用实例(GIs)作为蒸馏目标,能够高效地提升检测模型的蒸馏效果。
  • 基于GI,首次将relation-based知识引入到知识蒸馏中,并与response-based知识和feature-based知识合作,使得student能超越teacher。
  • 在MSCOCO和PASCAL VOC数据集上验证不同检测框架下的有效性,均达到SOTA。

General Instance Distillation


 有研究提出GT附近的特征区域包含有助于知识蒸馏训练的丰富信息,而论文发现不仅GT附近的区域,即使属于背景的区域,只要是可辨别区域(discriminative patch)都对知识蒸馏有帮助。基于上面的发现,论文设计了通用实例选择模块(general instance selection module, GISM),用于从teacher和student的输出中选择关键实例进行蒸馏。其次,为了更好地利用teacher的信息,论文综合使用了feature-based、relation-based和response-based知识用于蒸馏。

General Instance Selection Module

 在检测模型中,预测结果能够指出信息最丰富的区域,而teacher和student的丰富区域的差异恰恰就是性能的差异。为了量化每个结果的差异,选择可辨别实例用于蒸馏,论文提出了两个指标:GI score和GI box,在每次迭代中动态计算。为了减少计算消耗,通过计算分类分数的L1 score作为GI score,而GI box则直接选择分类分数更高的box。

 整个GI的选择过程如图2所示,对于实例\(r\),其score和box的选择定义为:

 \(P_{GI}\)和\(B_{GI}\)分别为GI score和GI box。对于one-stage检测器,\(P_t\)和\(P_s\)为teacher和student的分类分数,而对于two-stage检测器则为RPN的objectness分数,\(B_t\)和\(B_s\)同理。\(R\)为预测框数目,\(C\)为类别数。由于论文将teacher和student的detection head设置成完全一样的,所以预测框也是可以根据位置一一对应的。

 需要注意的是,高GI score的实例可能重合度比较高,导致蒸馏损失翻倍。为解决这一问题,使用NMS来去重,递归选择重复实例中GI score最高的实例。在实际使用中,NMS的IoU为0.3,最终每张图片只选择top-K个实例。

Feature-based Distillation

 FPN结合了主干网络的不同层特征,能够显著提升检测模型对多尺度目标的鲁棒性。于是,论文打算将FPN加入到蒸馏中,根据GI box的尺寸选择对应的FPN层特征。

 由于每个FPN层的目标特征大小不同,直接进行pixel-wise蒸馏会导致模型更倾向于大目标。于是论文转而采用ROIAlign将不同大小的特征输出为相同大小再进行蒸馏,如图a所示。feature-based蒸馏损失计算如下:

 \(K\)为GISM选择的GI数目,\(t_i\)和\(s_i\)为ROIAlign处理后的FPN特征,\(f_{adapt}\)用于将\(s_i\)缩放到\(t_i\)的相同大小。

Relation-based Distillation

 物体间的关系信息是分类任务进行蒸馏的关键,但还没在检测任务蒸馏中进行尝试。同一场景中的物体,不管是前景还是背景,都是高度相关的,这对student网络的收敛有很大帮助。

 为了挖掘GIs中的关系知识,使用欧式距离来度量实例间的距离,然后用L1距离来传递知识。如图a所示。relation蒸馏损失计算如下:

 \(\mathbb{K}^2=\{(i,j)|i\ne j, 1\le i,j\le K\}\),\(\phi\)为归一化因子,\(l\)为smooth L1损失。

Response-based Distillation

 知识蒸馏的关键主要是来自teacher的response-based知识的约束,这里的response-based知识指的是模型的最终输出。但因为检测输出往往存在正负样本不平衡或过多负样本的情况,如果直接将detection head的所有输出进行蒸馏,这种情况带来的噪声反而会损害student的性能。

 有研究提出只蒸馏detection head的正样本,但这种方法忽略了可辨别的负样本的作用。为此,论文设计了distillation mask,将分类分支和回归分支的输出与GIs挂钩,比只选择正样本要高效。

 不同检测模型的输出是不同的,论文定义了一个通用的方法来进行detection head的蒸馏,如图b所示。首先,基于GIs的distillation mask计算为:

 函数\(F\)是标签指定算法,输入为GI box,当匹配时,输出1,否则输出0。函数\(F\)对不同的模型的定义是不同的,对于RetinaNet,使用anchor和GIs间的IoU决定是否匹配,而对于FCOS则所有中心点在GIs外的输出都是0。

 然后,response-based损失计算如下:

 \(R\)为所有与选择的GIs匹配的输出,teacher和student对应的输出其中一个匹配即可。\(y_t\)和\(y_s\)为分类分支输出,\(r_t\)和\(r_s\)为回归分支输出,\(L_{cls}\)和\(L_{reg}\)为分类损失函数和回归损失函数。需要注意的是,为了简便,对于two-stage检测器只蒸馏RPN输出。

Overall loss function

 模型的训练是端到端的,student的整体损失函数为:

 \(L_{GT}\)为模型原本的损失函数,\(\lambda\)为调节超参数。

Experiment


 在VOC上对比蒸馏效果。

 在COCO上对比蒸馏效果。

 选择的GI box可视化,前面为5000迭的选择,后面为90000迭的选择。绿色代表GT,红色为正样本,黄色为中间(非正非负)样本,青色为负样本。

Conclusion


 论文提出的GID框架能够自动选择可辨别目标用于知识蒸馏,而且综合了feature-based、relation-based和response-based知识,全方位蒸馏,适用于不同的检测框架中。从实验结果来看,效果十分不错,值得一看。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

GID:旷视提出全方位的检测模型知识蒸馏 | CVPR 2021的更多相关文章

  1. 最近被旷视的YOLOX刷屏了!

    目录 论文主要信息 文章概要 背景 YOLOX-DarkNet53 实现细节 YOLOv3 baseline Decoupled head 实验 思路 story Strong data augmen ...

  2. 旷视研究院Detection组负责人

    http://www.skicyyu.org/ https://zhuanlan.zhihu.com/p/61910297 俞刚,旷视研究院Detection组负责人.2014年博士毕业于新加坡南洋理 ...

  3. ECCV 2018 | 旷视科技提出GridFace:通过学习局部单应变换实现人脸校正

    全球计算机视觉三大顶会之一 ECCV 2018(European Conference on Computer Vision)即将于 9 月 8 -14 日在德国慕尼黑拉开帷幕,旷视科技有多篇论文被此 ...

  4. ECCV 2018 | 旷视科技提出统一感知解析网络UPerNet,优化场景理解

    全球计算机视觉三大顶会之一 ECCV 2018(European Conference on Computer Vision)即将于 9 月 8 -14 日在德国慕尼黑拉开帷幕.届时,旷视首席科学家孙 ...

  5. 旷视等Oral论文提出GeoNet:基于测地距离的点云分析深度网络

    基于网格曲面的几何拓扑信息可以为物体语义分析和几何建模提供较强的线索,但是,如此重要的连接性信息在点云中是缺失的.为此,旷视西雅图研究院首次提出一种全新的深度学习网络,称之为 GeoNet,可建模点云 ...

  6. 谷歌大脑提出:基于NAS的目标检测模型NAS-FPN,超越Mask R-CNN

    谷歌大脑提出:基于NAS的目标检测模型NAS-FPN,超越Mask R-CNN 朱晓霞发表于目标检测和深度学习订阅 235 广告关闭 11.11 智慧上云 云服务器企业新用户优先购,享双11同等价格 ...

  7. 入职9月,旷视孙剑106分钟讲述CV创业科研的5大区别

    雷锋网按:本文为旷视科技首席科学家孙剑日前在 CCF-ADL上做的题为<如何在大公司和创业公司做好计算机视觉研究>的分享,主要介绍了近期计算机视觉的发展现状,ResNet基本原理和设计,旷 ...

  8. 旷视MegEngine核心技术升级

    旷视MegEngine核心技术升级 7 月 11 日,旷视研究院在 2020 WAIC · 开发者日「深度学习框架与技术生态论坛」上围绕 6 月底发布的天元深度学习框架(MegEngine)Beta ...

  9. 旷视6号员工范浩强:高二开始实习,“兼职”读姚班,25岁在CVPR斩获第四个世界第一...

    初来乍到,这个人说话容易让人觉得"狂". "我们将比赛结果提交上去,果不其然,是第一名的成绩."当他说出这句话的时候,表情没有一丝波澜,仿佛一切顺理成章. 他说 ...

  10. 《为大量出现的KPI流快速部署异常检测模型》 笔记

    以下我为这篇<Rapid Deployment of Anomaly Detection Models for Large Number of Emerging KPI Streams>做 ...

随机推荐

  1. 【Unity3D】空间和变换

    1 空间 1.1 左右手坐标系及其法则 1.1.1 左右手坐标系 左手坐标系与右手坐标系 ​ Unity 局部空间.世界空间.裁剪空间.屏幕空间都采用左手坐标系,只有观察空间采用右手坐标系. ​ 左右 ...

  2. HTML前置知识

    1.概念 HTML:超文本标记语言 (英语:Hypertext Markup Language,简称:HTML ) 创建网页的标准标记语言 后缀:html,htm(两者没有区别) html语法对大小写 ...

  3. 文心一言 VS 讯飞星火 VS chatgpt (200)-- 算法导论15.2 4题

    四.用go语言,对输入链长度为 n 的矩阵链乘法问题,描述其子问题图:它包含多少个顶点?包含多少条边?这些边分别连接哪些顶点? 文心一言: 矩阵链乘法问题是一个经典的动态规划问题,其中给定一个矩阵链, ...

  4. 通过结巴分词 sklearn判断语句和例句集合最相近的句子

    ` import jieba from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pair ...

  5. pikachu SQL-inject insert/update注入

    insert 注入 (修改信息处是update注入,和此处同理) 注册页面,用户处输入 1' 发现报错信息 You have an error in your SQL syntax; check th ...

  6. @staticmethod/@classmethod/实例方法/@abstractmethod

    from abc import ABCMeta, abstractmethod # 定义一个抽象类 class Person(metaclass=ABCMeta): name = "泰山&q ...

  7. Ubuntu18.04搭建Vue开发环境

    更新软件源列表 sudo apt update nodejs安装 sudo apt install nodejs nodejs -v #查看版本 npm安装 sudo apt install npm ...

  8. 在矩池云使用Llama2-7B的方法

    今天给大家分享如何在矩池云服务器使用 Llama2-7b模型. 硬件要求 矩池云已经配置好了 Llama 2 Web UI 环境,显存需要大于 8G,可以选择 A4000.P100.3090 以及更高 ...

  9. 【Azure APIM】解决APIM Self-hosted Gateway在AKS上,最开始访问时候遇见的404问题

    问题描述 根据APIM官方文档,创建Self-hosted 网关在AKS中( 使用 YAML 将自承载网关部署到 Kubernetes :https://docs.azure.cn/zh-cn/api ...

  10. 【Azure 应用服务】使用命令行创建 webapp 应用出现命令语法不正确错误

    问题描述 根据Azure App Service 入门文档 "快速入门:在 Linux 上的 Azure 应用服务中创建 Python 应用" 在创建App Service应用时候 ...