Multi-Label Classification
首先分清一下multiclass和multilabel:

  • 多类分类(Multiclass classification): 表示分类任务中有多个类别, 且假设每个样本都被设置了一个且仅有一个标签。比如从100个分类中击中一个。
  • 多标签分类(Multilabel classification): 给每个样本一系列的目标标签,即表示的是样本各属性而不是相互排斥的。比如图片中有很多的概念如天空海洋人等等,需要预测出一个概念集合。

Challenge
多标签任务的难度主要集中在以下问题:

  • 标签数量较大且基本会呈现长尾形态。
  • 短视频内容标签的标准很难统一,标签系统可变,且往往类标之间相互依赖并不独立。
  • absence标签占比较高,即标注的标签并不能完美覆盖所有概念面。
  • 标签往往较短语义少,理解困难。

Solution
现有的方法应对multi的预测主要有2大路线:

  • 改造数据适应算法:将多个类别合并成单个类别。
  • 改造算法适应数据:控制激活函数阈值得到结果。

而一般研究最多的应对relation会有3种策略:

  • 一阶策略:忽略和其它标签的相关性,比如把多标签分解成多个独立的二分类问题。
  • 二阶策略:考虑标签之间的成对关联,比如为相关标签和不相关标签排序。
  • 高阶策略:考虑多个标签之间的关联,比如对每个标签考虑所有其它标签的影响。

接下来博主主要会整理一些比较重要的论文。


[arxiv2016] Multi-label Image Classification with Regional Latent Semantic Dependencies
早期的backbone基本都是先对图像进行理解,然后通过一个label预测器得到结果。这篇文章就是属于比较经典的架构了,模型如上图,为了预测小物体,作者提出了一个区域潜在语义依赖模型(RLSD),基本就是先利用目标检测RPN得到多个依赖标签的局部区域,然后把这写区域region送到LSTM去发掘区域层次上潜在的语义依赖,最后用maxpooling得到预测结果。


[CVPR2019] Multi-Label Image Recognition with Graph Convolutional Networks
前面提到的挑战中的一点就是标签之间的关系如何挖掘,上一篇文章是尝试用LSTM来捕捉,但当GCN火爆起来的时候,Graph的结构就是十分适合建模标签之间的关系了。这篇文章就是利用GCN在多个标签之间传播信息,从而学习每个图像标签的相互依赖关系。

模型架构如上图,上半部分和通用的架构类似都是用图像特征(ResNet-101)到标签预测的pipeline,重点就是下半部分的标签关系学习,分为两点1怎么构图、2怎么优化标签节点表示:

  • 构图。使用数据驱动的方法建立相关矩阵,即在数据集中挖掘标签的共现模式来定义标签之间的相关性,且共现的概率矩阵之间是有向的(人出现了但他不一定在打棒球,但是棒球出现了而人出现的概率就会比较高,所以两者的共现性并不平等)。但是这样会出现两个问题:1共现也是长尾分布,而且一些罕见的共现可能是噪声,2训练和测试中共现分布并不一致,会影响泛化能力。所以作者使用阈值τ来过滤有噪声的边,并且控制邻居的影响以免出现过度平滑,直接看代码就很清晰了:
#得到共现矩阵
def gen_A(num_classes, t, adj_file):import pickle# 这里load的是共现矩阵result = pickle.load(open(adj_file, 'rb'))_adj = result['adj'] #每个标签出现时,其他标签也出现的次数统计_nums = result['nums'] #而这个是每个标签分别出现的次数_nums = _nums[:, np.newaxis]_adj = _adj / _nums #标准化一下# 用阈值来控制,只有大于阈值的共现对会认为Graph是有边的_adj[_adj < t] = 0_adj[_adj >= t] = 1#sum(0, keepdims=True)求数组每一行的和,其他位置为1#0.25控制邻居对其产生的影响,以防止后面过平滑_adj = _adj * 0.25 / (_adj.sum(0, keepdims=True) + 1e-6)#然后加入自环_adj = _adj + np.identity(num_classes, np.int)return _adj
  • 优化。然后使用多层GCN进行特征优化,再参与到模型的上半部分就行了。

code:https://github.com/Megvii-Nanjing/ML-GCN


[CIKM2020] Fast Graph Convolution Network Based Multi-label Image Recognition via Cross-modal Fusion
这篇文章仍然是图像特征+label共现图,然后GCN可以得到特征,然后做融合,最后做标签预测。但是这篇文章考虑更多的是跨模态融合方面,因为比较label是文本模式,图像是视觉模式,他们天生就会有这种表达上的差异,即上图的MFB fusion module用来有效地融合图像表示和标签共现嵌入。

该模块分为两方面:1Hadmard product,2 group sum-pooling

  • Hadmard product。增加了不同模态向量之间的相互作用。
  • Group sum-pooling。减少过拟合和参数爆炸,加快了收敛速度。

其实也算是多模态融合里面一个放到今天相对比较常规的做法了,更多融合方法可以参考博主整理过的文章,传送门:多模态融合 。


[ICCV2019] Learning Semantic-Specific Graph Representation for Multi-Label Image Recognition
这篇文章的motivation是,由于缺乏对局部目标的监督和语义指导,现有的方法无法准确知道语义区域和它们的相互作用,也没有明确地对标签共现进行建模,所以提出了一个语义图表示学习(SSGRL)框架。

该框架由两个关键模块组成:1)语义解耦模块,包含类别语义来指导特定语义表示的学习.2)语义交互模块,将这些表示与基于统计标签共现的图相关联,并通过图传播机制探索它们之间的交互。

  • 语义解耦。首先将其输入到一个全卷积的网络中,. 然后用语义引导的注意力机制对于每个类别给区域加注意力权重,以学习特定于语义的表示,即表示关注于该label类别的视觉语义区域。
  • 语义交互。构图方式差不多,统计标签共现先验知识,然后图神经网络采用门控循环更新机制去图传播消息,学习上下文的节点级特征。博主自己的理解是它把原来LSTM一支的输出做到图传播中去了,每次的输出都会重新算加权重算传播,可以让语义的学习更加充分。


[AAAI2020] Cross-Modality Attention with Semantic Graph Embedding for Multi-Label Classification
这篇文章主要是考虑到语义标签与图像内容之间的关联,以往的工作并没有对齐图像空间和标签语义之间的依赖关系。所以提出跨模态注意力(Cross-modality Attention, CMA)去充分考虑这一点。

模型架构如上图,比较突出的部分个人觉得是两个,对标签特征学习的ASGE模块和跨模态注意力对齐这里。

  • 邻近相似度图表示(ASGE)。以前的工作都是基于联合的共现概率来构图的,这种方式容易受到类别失衡的影响。所以作者提出干脆直接学习label的嵌入就好,所以直接把Graph embedding的技术拿进来,博主也整理过了很多相关技术就不再赘述了。大概就是先one-hot,然后由图结构学习语义嵌入空间来得到label的表示。
  • 跨模态注意力。Cross就是视觉特征对label特征计算attention,这样可以直接根据图片的特征去获得标签所应该关注的区域。

最后再classification就行了,所以其实这里的融合和对齐部分是还可以多做点事情的。


[AAAI2020] Top-1 Solution of Multi-Moments in Time Challenge 2019
ICCV19 MMIT 多标签视频理解竞赛冠军方案。这一部分就主要是在视频理解上做很多的处理,最核心的部分就是时序交错网络,即不学习时间特征,而是通过交错过去到未来以及未来到过去的空间特征来融合时-空信息。

具体的做法是固定3/4 的 channel 特征,再将余下 1/4 的特征沿着 channel 维度分为 4 组,每组会应用不同的偏移量,其中2组正向,2组反向以保证信息在时序维度上的流动是对称的,有利于后续特征的融合。


Transformer-based dual relation graph for multi-label image recognition
补上ICCV21的文章,主要是处理图像中各种对象尺度、不一致的外观和混淆的类间关系。

即现有的大多数工作主要通过学习标签共现依赖关系从而增强特征的语义表达,而忽略了图像中多个物体间的空间依赖关系。对此,本文提出一种基于Transformer的双路互补关系学习框架来联合学习空间依赖与共现依赖,通过探索相关性的两个方面,即结构关系图和语义关系图来构建互补关系。模型图如上。

  • 针对空间依赖,提出跨尺度Transformer建模长距离空间上下文关联。即使用Transformer建模不同scale空间的上下文。
  • 针对共现依赖,提出类别感知约束和空间关联引导,基于图神经网络联合建模动态语义关联。即利用共性关系建模基于类别gcn和空间关系的增强。

最后联合这两种互补关系进行协同学习得到鲁棒的多标签预测结果。

Multi-Label Image Classification(多标签图像分类)相关推荐

  1. 多标签图像分类--HCP: A Flexible CNN Framework for Multi-Label Image Classification

    HCP: A Flexible CNN Framework for Multi-Label Image Classification PAMI 2016 本文提出了一个 CNN 网络 HCP 不需要真 ...

  2. 基于Keras的多标签图像分类

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 本篇记录一下自己项目中用到的keras相关的部分.由于本项目既有涉及multi-class(多 ...

  3. ap、mAP多标签图像分类任务的评价方法

    多标签图像分类(Multi-label Image Classification)任务中图片的标签不止一个,因此评价不能用普通单标签图像分类的标准,即mean  accuracy,该任务采用的是和信息 ...

  4. 独家 | 手把手教你用Python构建你的第一个多标签图像分类模型(附案例)

    翻译:吴金笛 校对:郑滋 本文约4600字,建议阅读12分钟. 本文明确了多标签图像分类的概念,并讲解了如何构建多标签图像分类模型. 介绍 你正在处理图像数据吗?我们可以使用计算机视觉算法来做很多事情 ...

  5. python如何训练模型生产_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)...

    你正在处理图像数据吗?我们可以使用计算机视觉算法来做很多事情: 对象检测 图像分割 图像翻译 对象跟踪(实时),还有更多-- 这让我思考--如果一个图像中有多个对象类别,我们该怎么办?制作一个图像分类 ...

  6. 【图像分类】基于Pascal VOC2012增强数据的多标签图像分类实战

    接着上一次的多标签分类综述,本文主要以Pascal VOC2012增强数据集进行多标签图像分类训练,详细介绍增强数据集制作.训练以及指标计算过程,并通过代码进行详细阐述,希望能为大家提供一定的帮助! ...

  7. python不同曲线设置标签_【图像分类】基于Pascal VOC2012增强数据的多标签图像分类实战...

    接着上一次的多标签分类综述,本文主要以Pascal VOC2012增强数据集进行多标签图像分类训练,详细介绍增强数据集制作.训练以及指标计算过程,并通过代码进行详细阐述,希望能为大家提供一定的帮助! ...

  8. 【医学+深度论文:F14】2018 Joint Optic Disc and Cup Segmentation Based on Multi Label Deep Network

    14 2018 T-MI (IEEE Transactions on Medical Imaging ) Joint Optic Disc and Cup Segmentation Based on ...

  9. 手把手教你用Python构建你的第一个多标签图像分类模型(附案例)

    原文链接: https://www.analyticsvidhya.com/blog/2019/04/build-first-multi-label-image-classification-mode ...

  10. python图像分类_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)...

    介绍 你正在处理图像数据吗?我们可以使用计算机视觉算法来做很多事情:对象检测 图像分割 图像翻译 对象跟踪(实时),还有更多-- 这让我思考--如果一个图像中有多个对象类别,我们该怎么办?制作一个图像 ...

最新文章

  1. Python 基础 - Day 2 Assignment - ShoppingCart 购物车程序
  2. js 动态校验开始结束时间
  3. uml+oopc嵌入式c语言开发精讲_当前火爆的嵌入式领域,为什么选择C语言作为开发语言?了解一下...
  4. QT的QDesignerWidgetBoxInterface类的使用
  5. CityEngine Web Scene如何在IIS下部署
  6. MySQL 内连接查询
  7. 万人马拉松,人脸识别系统如何又快又准完成校验?
  8. 加密算法在windows,linux下的检测办法[md5,sha1]
  9. 【优化预测】基于matlab鲸鱼算法优化LSTM预测【含Matlab源码 105期】
  10. Python PyQt5 教程
  11. vueminder ultimate 2020中文版(电脑桌面日历工具) v2020.07
  12. PMOS管原理与应用
  13. 手机app 与pc 软件测试区别,1,web测试,Android测试,Ios测试的共同点与
  14. 电脑桌面的文件突然不见了怎么办
  15. Unity插件篇:Pocket RPG Weapon Trails(武器拖尾特效)部分解读以及基本用法
  16. 淘宝买二级c语言题库可以嘛,大学计算机二级考试(C语言)试题在哪可以买?...
  17. 避免怀疑跳槽,程序员该怎么请假?
  18. 火狐浏览器,错误代码:SEC_ERROR_REUSED_ISSUER_AND_SERIAL
  19. excel求方差和标准差的函数_Excel标准差计算函数Stdev和StdevP的用法与区别,包含4个实例...
  20. 如何交换数据:10 分钟为 MQL5 创建 DLL

热门文章

  1. rsync:基本命令和用法
  2. define函数的用法
  3. 1.ShowWindow
  4. 网优5g前景_5G网络优化师前景怎么样?
  5. C++ accumulate
  6. idea连接oracle可插拔数据库报ORA-12505
  7. 如何分别是32位微型计算机,32位微型计算机中的32指的是啥
  8. Linux Socket编程
  9. python基础------文件读写操作、re、os和sys模块
  10. Python+Mysql实现教务管理系统