【OpenVI—论文解读系列】开源低成本大规模分类框架FFC CVPR论文深入解读

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

一、背景

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

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

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


二、方法

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


2.1 挑战点1:成本居高不下

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

2.2 长尾学习困难

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

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

2.3 可行方法1:度量学习

2.png

2.4 可行方法2:PFC框架

3.png

2.5 可行方法3:VFC框架

4.png

2.6 本论文方法:FFC框架

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

5.png

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

6.png

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

7.png

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

8.png

    首先,为了解决长尾带来的影响,我们引入两个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里面的参数渐渐更新进去。

2.7 本论文方法:FFC框架

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

9.png

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

10.png

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

11.png

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

12.png

     首先,为了解决长尾带来的影响,我们引入两个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里面的参数渐渐更新进去。

2.8 本论文方法:trick介绍

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

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

13.png


三、实验结果

3.1 双Loader消融实验

14.png

3.2 SOTA方法效果对比

15.png

3.3 显存与样本吞吐对比

16.png

四、更多体验

      想体验调用稳定、效果更好的API,详情见视觉开放智能平台(https://vision.aliyun.com/


相关文章
|
存储 搜索推荐 数据库
深入解析向量数据库:定义、原理和应用的全面指南
深入解析向量数据库:定义、原理和应用的全面指南
3355 0
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
410 0
|
机器学习/深度学习 自然语言处理
掩码语言模型(MLM)
【10月更文挑战第6天】掩码语言模型(MLM)
|
12月前
|
搜索推荐 关系型数据库 MySQL
mysql like查询优化
通过合理的索引设计、使用全文索引、优化查询结构以及考虑分片和分区表,可以显著提高MySQL中 `LIKE`查询的性能。针对不同的应用场景选择合适的优化策略,能够有效地提升数据库查询效率,减少查询时间。希望这些方法和技巧能帮助您优化MySQL数据库中的模糊查询。
1219 4
虚拟机安装Linux系统的网络配置
该博客文章提供了解决虚拟机中Linux系统网络问题的多种方法,包括重置网络服务、修改网络配置文件、使用不同网络模式等,以确保虚拟机能够成功连接到网络。
虚拟机安装Linux系统的网络配置
|
存储 缓存 NoSQL
MongoDB数据库的主要应用场景是什么?
【6月更文挑战第5天】MongoDB数据库的主要应用场景是什么?
1448 1
|
存储 关系型数据库 MySQL
MySQL information_schema 系统库介绍
当我们安装好 MySQL 数据库后,会发现数据库实例自带有 information_schema 系统库,你是否有去关注过这个系统库呢?是否有查询过此库中的表数据呢?又是否清楚此库存在的具体作用呢?带着这些疑问,我们一起来看本篇文章。
632 0
MySQL information_schema 系统库介绍
|
存储 数据可视化 Java
饼状图实例 Java
【2月更文挑战第6天】
247 1
|
Java 数据库连接 数据库
Mybatis系列(四)之Mybatis与Spring整合以及Aop整合pagehelper插件
Mybatis系列(四)之Mybatis与Spring整合以及Aop整合pagehelper插件
|
Kubernetes Cloud Native Java
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba

热门文章

最新文章

下一篇
开通oss服务