CVPR 2022|达摩院开源低成本大规模分类框架FFC

简介: CVPR 2022|达摩院开源低成本大规模分类框架FFC

本文主要介绍了超大规模分类框架的现有解决方案,以及低成本分类框架 FFC 的相应原理及 trick 介绍。



论文链接:https://arxiv.org/pdf/2105.10375.pdf


应用 & 代码:



背景


图像分类是当前 AI 最为成功的实际应用技术之一,已经融入了人们的日常生活。被广泛应用于计算机视觉的大部分任务中,比如图像分类、图像搜索、OCR、内容审核、识别认证等领域。目前已形成一个普遍共识:“当数据集越大 ID 越多时,只要训练得当,相应分类任务的效果就会越好”。但是当面对千万 ID 甚至上亿 ID 时,当下流行的 DL 框架,很难低成本的直接进行如此超大规模的分类训练。


解决该问题最直观的方式是通过集群的方式消耗更多的显卡资源,但即便如此,海量 ID 下的分类问题,依然会有如下几个问题:


1.)成本问题:分布式训练框架 + 海量数据情况下,内存开销、多机通信、数据存储与加载都会消耗更多的资源。

2.)长尾问题:实际场景中,当数据集达到上亿 ID 时,往往其绝大部分 ID 内的图片样本数量会很少,数据长尾分布非常明显,直接训练难以获得较好效果。


本文余下章节将重点介绍超大规模分类框架现有解决方案,以及低成本分类框架 FFC 的相应原理及 trick 介绍。


方法


在介绍方法之前,本文首先回顾了当前超大规模分类存在的主要挑战点:


挑战点 1:成本居高不下


ID 数目越大分类器显存需求越大,如下示意图所示:


显存越大所需机器卡数越多,成本也就越高,相应多机协同的硬件基础设施成本也越高。与此同时,当分类 ID 数目达到极超大规模的时候,主要计算量将浪费在最后一层分类器上,骨架网络消耗的时间可忽略不计。


挑战点 2:长尾学习困难


在实际场景下,上亿 ID 中的绝大部分 ID 内的图片样本数量会很少,长尾数据分布非常明显,直接训练难以收敛。如果按照同等权重训练,则长尾样本会被淹没学习不充分。此时,一般采用 imbalanced sample,在这个研究课题上,有非常多的方法可以借鉴,采取怎样的方式融入到简易超大规模分类框架上较为合适呢?


带着上述两个挑战点,首先来看下现有可行的方案有哪些,是否能很好的解决上述两个挑战。


可行方法 1:度量学习



可行方法 2:PFC 框架



可行方法 3:VFC 框架



本论文方法:FFC 框架


大规模分类采用 FC 训练时损失函数如下:


在每一次反传过程中,所有的类中心都会更新:


但 FC 太大了,直观的思路是合理地选择一定比例的类中心,即如下 Vj 为 1 部分:



由上述动机,引出了如下初步的方案:



首先,为了解决长尾带来的影响,本文引入两个 loaders,分别是基于 id 采样的 id_loader 和基于样本采样的 instance_loader,有了这两个 loader。在每个 epoch 当中,样本多的类和样本少的(few-shot)类能够有机会被训练到。


其次,在训练开始之前,先将一部分样本送入 id group,这里假设放入 10% id 的样本进入 group。这时候 gallery 用的是随机参数。


然后,训练开始时,batch 样本挨个进入 probe net。然后对于每个 batch 里面的样本就有两种情况:1.)group 中存在此样本同样 id 的特征,2.)group 中不存在同类样本的特征。对于这两种情况,分别称之为 existing id 和 fresh id。对于 existing 的样本,用特征和 group 里面的特征做内积,计算与标签的交叉熵损失函数,后回传。对于 fresh 的样本,与 group 里面的样本进行最小化余弦相似度。


最后,对 group 里面特征更新,采取新类中心替换,依据现有类中心加权的原则。对于 gallery net,采用 moving average 策略把 probe 里面的参数渐渐更新进去。


本论文方法:trick 介绍


1.)引入的 ID Group,其 size 是个可调参数,一般默认为 3 万。

2.)为达到稳定训练,参考 moco 类方法,引入 moving average,相应收敛情况分别为:


实验结果


1. 双 Loader 消融实验



2. SOTA 方法效果对比



3. 显存与样本吞吐对比


相关文章
|
存储 定位技术 数据库
如何使用Qchan搭建更好保护个人隐私的本地图床并在公网可访问
如何使用Qchan搭建更好保护个人隐私的本地图床并在公网可访问
324 0
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之新建项目的元数据的sql报错,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
233 0
|
Arthas Prometheus 监控
监控堆外使用JVM工具
监控堆外使用JVM工具
545 7
|
NoSQL 安全 PHP
hyperf-wise-locksmith,一个高效的PHP分布式锁方案
`hyperf-wise-locksmith` 是 Hyperf 框架下的互斥锁库,支持文件锁、分布式锁、红锁及协程锁,有效防止分布式环境下的竞争条件。本文介绍了其安装、特性和应用场景,如在线支付系统的余额扣减,确保操作的原子性。
296 4
|
Java 程序员 数据库连接
JAVA理财管理系统(JAVA 毕业设计)
JAVA理财管理系统(JAVA 毕业设计)
240 0
JAVA理财管理系统(JAVA 毕业设计)
|
存储 Linux 网络架构
如何在Linux上添加路由?
【4月更文挑战第8天】
735 2
如何在Linux上添加路由?
|
存储 安全 Java
ArrayList的基本操作【集合容器知识回顾 ②】
这篇文章详细介绍了ArrayList的基本操作,包括创建对象、添加和删除元素、获取和更新元素、遍历、判断元素存在性、集合的空值检查、批量操作、转换为数组、截取子集合、查找元素索引、克隆拷贝、清空集合以及容量管理等,同时指出了使用ArrayList时的注意事项,如线程安全性、容量管理、删除元素的性能、遍历时的修改、空值处理和性能优化。
ArrayList的基本操作【集合容器知识回顾 ②】
|
前端开发 数据挖掘
R语言POT超阈值模型在洪水风险频率分析中的应用研究
R语言POT超阈值模型在洪水风险频率分析中的应用研究
R语言POT超阈值模型在洪水风险频率分析中的应用研究
|
机器学习/深度学习 传感器 算法
【滤波器设计】基于matlab实现数字滤波器和均衡器设计
【滤波器设计】基于matlab实现数字滤波器和均衡器设计
|
SQL 存储 人工智能
华为大佬的“百万级”MySQL笔记,基础+优化+架构一键搞定
前言 MySQL不用多说,大家都知道它是目前最为活跃热门的开源数据库,由于成本低,操作简易的特点,所以在互联网企业中被广泛使用,即使是头部的BATJ。由此可见,想要在互联网行业混得风生水起,或者说想要进入BATJ等一线互联网公司,那么熟练掌握MySQL必定是一块必要的敲门砖。 对于MySQL的使用,可能很多刚开始工作的开发人员还是挺陌生的,但要想学习又不知道从何开始,技术的落后自然会让人感到焦虑。实际上,学习MySQL,找对方法就能轻松搞定。 今天,特将华为大佬整理的“百万级”MySQL笔记分享给你们,从基础到优化再到架构,带你轻松上手,一键搞定。