最近还在处理人脸附件(眼镜,刘海,口罩,帽子)的multi-label分类。给自己普及一下常识性问题:

1)什么是multi-label分类?

multi-label分类,常见一张图片中可以存在多个目标,如猫,狗,人。这样这张图片就有三个标签;

2)multi-label分类和multi-class 分类?

multi-class 分类,就是将多种类别的图片进行类别分类,与multi-label 分类样本相比较,multi-class 分类使用的每一张图片中只有1个类别,若图片中出现了其他类别,就要使用multi-label进行分类了;

3)对multi-label分类的评价指标有哪些?

  • Mean average Precision(MAP):对每个类别取得的precision取平均,就是ap值PR曲线下的面积,多个类别的ap取均值;
  • 0-1 exact match :图片中所有标签都预测正确的图片才算作预测正确的图片:

N:代表所有的图片数量,1代表一个指示函数,若预测与ground truth结果相等,则指示函数返回为1,否则为0;

  • Macro-F1:所有类别的F1-score的平均值:

C:所有类别数;:第c类的precision;:第c类的recall;

  • Micro-F1:

注意:Micro-F1主要受样本量多的类别影响;而Macro-F1对样本量较小的类别影响敏感;

  • per-class precision:

C:所有类别数;代表第c类预测正确的数量;代表预测得到的第c类的数量;

  • per-class recall:

C:所有类别数;代表第c类预测正确的数量;代表第c类的所有样本数量;

  • overall precision:

C:所有类别数;代表第c类预测正确的数量;代表预测得到的第c类的数量;

  • overall recall:

C:所有类别数;代表第c类预测正确的数量;代表第c类的所有样本数量;

若对上面的内容有疑问,可以查看西瓜书P30页,上面的公式来源《Learning a Deep ConvNet for Multi-label Classification with Partial Labels》,下载可参考:【multi-label】Learning a Deep ConvNet for Multi-label Classification with Partial Labels_猫猫与橙子的博客-CSDN博客

4)学习算法?

3种策略

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

一阶策略常用方法:VGG,ResNet101,这是标准的CNN模型,不考虑任何标签依赖性,属于一阶策略;

高阶策略常用方法:

  • label embedding:label embedding不是一整个网络,而是网络中用于处理标签之间联系的网络一部分。

(a) one hot encoding

神经网络分析
    假设我们的词汇只有4个,girl, woman, boy, man,下面就思考用两种不同的表达方式会有什么区别。
    One hot representation
    尽管我们知道他们彼此的关系,但是计算机并不知道。在神经网络的输入层中,每个单词都会被看作一个节点。 而我们知道训练神经网络就是要学习每个连接线的权重。如果只看第一层的权重,下面的情况需要确定4×3个连接线的关系,因为每个维度都彼此独立,girl的数据不会对其他单词的训练产生任何帮助,训练所需要的数据量,基本就固定在那里了。

    我们这里手动的寻找这四个单词之间的关系 f 。可以用两个节点去表示四个单词。每个节点取不同值时的意义如下表。 那么girl就可以被编码成向量[0,1],man可以被编码成[1,1](第一个维度是gender,第二个维度是age)。

那么这时再来看神经网络需要学习的连接线的权重就缩小到了2×3。同时,当送入girl为输入的训练数据时,因为它是由两个节点编码的。那么与girl共享相同连接的其他输入例子也可以被训练到(如可以帮助到与其共享female的woman,和child的boy的训练)。

    总得来说,label embedding也就是要达到第二个神经网络所表示的结果,降低训练所需要的数据量。
         label embedding就是要从数据中自动学习到输入空间到Distributed representation空间的 映射f 。

(b) CNN+RNN(CNN-LSTM)

网络框架主要分为cnn和rnn两个部分,cnn负责提取图片中的语义信息,rnn负责建立image/label关系和label dependency的模型。

在识别不同的object的时候,RNN会将attention转移到不同的地方,如下图:

本文两个类别,“zebra” and “elephant”,在预测zebra时,我们发现网络将attention集中到zebra那块。这是一个考虑全局级别的标签依赖性,属于高阶策略。

(c)RLSD

RLSD 在CNN-RNN的基础上,加入了区域潜在语义依赖关系,考虑到图像的位置信息和标签之间的相关性,对算法进行进一步优化。

(d)HCP

HCP的基本思想是,首先提取图像中的候选区域(基本上是上百个),然后对每个候选区域进行分类,最后使用 cross-hypothesis max-pooling 将图像中所有的候选区域分类结果进行融合,得到整个图像的多类别标签,其中也利用到了attention机制,如下图:

attention机制:像car,person,horse权重大,注意力比较高。这样做的好处是我们在训练图片时不需要加入位置信息,该算发会框出很多个框,自动调节相关标签的框权值更大,达到减弱噪音的目的。

两种方法(基于如何将多标签分类与当前算法结合起来)

  • 改造数据适应算法:常用的比如将多标签问题转化为一个多类问题,即一张图有多个标签,将标签标注相同的图片作为一个类别,这样就将这个问题转化为单一的多类问题。缺点:当数据量类别量过多,数据就分布在[0,2^(n-1)]空间内,这样得到的某些类别的数据量会很稀疏,所以该方法不适用于类别太多的数据集。
  • 改造算法适应数据:常用比如正常输出q维数据,将其中softmax回归改为sigmoid函数,最终将f(.)大于阈值的结果输出出来。

5)multi-label分类的难点有哪些?

6)目前存在的问题?

目前多标签分类依然存在单标签分类,目标检测的问题,如遮挡,小物体识别。另外由于标签相对多存在的问题有要分类的可能性随类别呈指数性增长,rank,样本分布不均

从整体上来看,multi-label classification 由于涉及到多个标签,所以需要对图片和标签了解的信息量更多,意味着要分类的可能性呈指数型增长。

为了减少这种分类的可能性,需要考虑标签与标签,标签与图片之间的联系来降低信息量。

  • 第一 涉及到标签与标签之间的关系,也就是NLP里词语与词语之间的联系,这个是语义层次上的;
  • 第二 涉及到标签与图片之间的关系 ,就是标签与图片特征之间的联系,常用的是attention机制;

部分内容转载自:multi-label image classification:多标签图像分类总结 - youyou0 - 博客园

当前自己遇到的问题:

1)人脸附件数据的不均衡,特别是刘海数据,同时在添加数据的时候,一个类别的变化会引起其他类别数量变化的连锁反应;

关于图片的多标签分类(1)相关推荐

  1. HTML新增便签source语义,互联网的原理,常用标签,标签分类,HTML杂项,CSS

    一.互联网的原理 1.1 什么是上网 用客户端向服务器端请求数据 客户端: 设备:PC.手机.平板.智能手表.电视.无人设备 设备的软件:浏览器.播放器 服务器端设备: 服务器端Http服务器软件: ...

  2. 系统学习机器学习之总结(三)--多标签分类问题

    前沿 本篇记录一下自己项目中用到的keras相关的部分.由于本项目既有涉及multi-class(多类分类),也有涉及multi-label(多标记分类)的部分,multi-class分类网上已经很多 ...

  3. 机器学习之深度学习 二分类、多分类、多标签分类、多任务分类

    多任务学习可以运用到许多的场景. 首先,多任务学习可以学到多个任务的共享表示,这个共享表示具有较强的抽象能力,能够适应多个不同但相关的目标,通常可以使主任务获取更好的泛化能力. 此外,由于使用了共享表 ...

  4. Python基于深度学习多标签分类模型实现云状识别

    其实这个比赛早在19年的时候就结束,比赛名为<Understanding Clouds from Satellite Images>,原来的任务其实不仅要识别出来类型还要能够分割出来具体的 ...

  5. AAAI 2023 | 腾讯优图实验室16篇论文入选,含多标签分类、姿态估计、目标检测、HOI、小样本学习等研究方向...

    关注并星标 从此不迷路 计算机视觉研究院 转自腾讯优图 近日,AAAI 2023(Association for the Advancement of Artificial Intelligence) ...

  6. 【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss

    什么是多标签分类 图片中是否包含房子?你的回答就是有或者没有,这就是一个典型的二分类问题(一个问题两个选项,是或不是). 同样还是这幅照片,问题变成了:这幅照片是谁拍摄的?备选答案你,你的父亲,你的母 ...

  7. 多标签分类、BCELoss和BCEWithLogitsLoss用法

    他们都用于多类别多分类 BCELoss 在图片多标签分类时,如果3张图片分3类,会输出一个3*3的矩阵. 先用Sigmoid给这些值都搞到0~1之间: 假设Target是: 下面用BCELoss来验证 ...

  8. ###好好好####深度学习---多标签分类问题

    keras multi-label classification 多标签分类 问题:一个数据又多个标签,一个样本数据多个类别中的某几类:比如一个病人的数据有多个疾病,一个文本有多种题材,所以标签就是: ...

  9. html——标签分类

    标签分类 文件标签:构成html最基本的标签 html:html文档的根标签 head:头标签.用于指定html文档的一些属性.引入外部的资源 title:标题标签. body:体标签 文本标签:和文 ...

最新文章

  1. mfc 加密解密_[源码和文档分享]基于MFC实现的AES加密解密程序
  2. 第9步 spring 配置 springmvc配置
  3. matlab im2double
  4. 适合程序员的耳机_为什么很多程序员工作时都戴耳机?
  5. 已经没有再谈话再培养的飞秋必要了
  6. Python使用pycuda在GPU上并行处理批量判断素数
  7. 获取aplicationContext对象,从而获取任何注入的对象
  8. 历经外企、创业公司、大厂的程序员告诉你:第一份工作有多重要!
  9. SDN驱动云数据中心的发展
  10. springboot定时备份MYSQL_spring boot 定时备份数据库
  11. Mysql 常用函数集
  12. 《应用商务统计分析》前言
  13. 把数组排成最小的数(剑指offer第33题)
  14. 微信PC版多开的方法
  15. Java进阶-requestresponse (十一)
  16. 修改游戏存档之植物大战僵尸
  17. 修改webbrower中浏览器版本
  18. 算法(arithmetic)
  19. Java、Scala使用tan和arctan求斜率和倾斜角
  20. 右键新增文件/文件夹-打开方式

热门文章

  1. [InnoDB] #CORRUPT LOG RECORD FOUND#[MySQL InnoDB表空损坏,数据库无法启动]#
  2. 计算机网络专业以后装网线,一种便于安装的计算机网络用网线安装盒的制作方法...
  3. 图片旋转90度解决办法
  4. 4-ipv6基础知识之-邻居发现协议NDP
  5. readability: 英文文本数据可读性库
  6. 天池比赛如何使用docker提交
  7. Centos7.4使用recuse模式恢复虚机mbr分区表
  8. Deployer 部署项目
  9. loadrunner 12 --录制手机app脚本
  10. shell编程中空格的使用