上一章讲了如何制作数据集,接下来我们使用mmcls来实现多标签分类。

Config配置
mmcls是通过config来配置整个网络结构的。如下,我使用的是resnet18,因为数据中有5个属性,所以输出的num_classes=5。需要注意的是,head要选用head=dict(type=‘MultiLabelLinearClsHead’)。这是因为多标签分类,在进入loss前,应该用sigmoid激活,将pred的值归一化。如果使用softmax,会出现属性互斥的现象(因为pred在dim=1上,sum=1)。对于Multi-label问题,应该使用F.binary_cross_entropy_with_logits损失。

model = dict(type='ImageClassifier',backbone=dict(type='ResNet',depth=18,num_stages=4,out_indices=(3, ),style='pytorch'),neck=dict(type='GlobalAveragePooling'),head=dict(# type='LinearClsHead',type='MultiLabelLinearClsHead',num_classes=5,in_channels=512,# loss=dict(type='CrossEntropyLoss', loss_weight=1.0),# topk=(1, 5),))

自定义dataset
为了读取数据,并将label转变为loss可以计算的格式,我们需要重新定 def load_annotations(self):为了不增加类,定义了self.multi_label的flag来分离Multi-label与Multi-class。我们在txt中的label是一个num,比如你有5个属性类别,label可能是1,3,而BCE中label需要的格式是[1,0,1],因此我们需要转化一下。

def load_annotations(self):"""Load image paths and gt_labels."""if self.ann_file is None:samples = self._find_samples()elif isinstance(self.ann_file, str):lines = mmcv.list_from_file(self.ann_file, file_client_args=self.file_client_args)samples = [x.strip().rsplit(' ', 1) for x in lines]else:raise TypeError('ann_file must be a str or None')data_infos = []for filename, gt_label in samples:info = {'img_prefix': self.data_prefix}info['img_info'] = {'filename': filename}temp_label = np.zeros(len(self.CLASSES))if not self.multi_label:info['gt_label'] = np.array(gt_label, dtype=np.int64)else:##multi-label classifyif len(gt_label) == 1:temp_label[np.array(gt_label, dtype=np.int64)] = 1info['gt_label'] = temp_labelelse:for i in range(np.array(gt_label.split(','), dtype=np.int64).shape[0]):temp_label[np.array(gt_label.split(','), dtype=np.int64)[i]] = 1info['gt_label'] = temp_labeldata_infos.append(info)return data_infos

接下来就可以进行多标签的训练了。

mmcls多标签分类实战(二):resnet多标签分类相关推荐

  1. R语言ggplot2可视化自定义图例标签间距实战:自定义图例标签间距、自定义图例与图像之间的间距

    R语言ggplot2可视化自定义图例标签间距实战:自定义图例标签间距.自定义图例与图像之间的间距 目录

  2. template标签_Django实战: 利用自定义模板标签实现仿CSDN博客月度归档

    应网友慕之岩的请求,现提供下Django项目中如何使用自定义标签实现仿CSDN博客的月度归档(如下图所示).要求按月统计每个月发表的博文篇数, 跳过空白月份,最后结果按发布时间逆序排列.点击每个月份可 ...

  3. 不平衡数据集分类实战:成人收入数据集分类模型训练和评估

    许多二分类任务并不是每个类别都有相同数量的数据,存在着数据分布不平衡的情况. 一个常用的例子是成人收入数据集,它涉及到社交关系.教育水平等个人数据,以此来预测成人的收入水平,判断其是否拥有5万美元/年 ...

  4. PyTorch 深度学习实战 | 基于 ResNet 的花卉图片分类

    "工欲善其事,必先利其器".如果直接使用 Python 完成模型的构建.导出等工作,势必会耗费相当多的时间,而且大部分工作都是深度学习中共同拥有的部分,即重复工作.所以本案例为了快 ...

  5. 卷积神经网络实战二 电机轴承故障分类

    项目导论 最近实验室要接一个故障分类的项目,数据主要是传感器测得的各种数据,现在先用网上的数据集学习一下怎么处理. 数据集介绍 采用由凯斯西储大学轴承数据中心网站发布的电机轴承数据.此网站提供正常运行 ...

  6. 【BERT-多标签文本分类实战】之二——BERT的地位与名词术语解释

    ·请参考本系列目录:[BERT-多标签文本分类实战]之一--实战项目总览 ·下载本实战项目资源:>=点击此处=< [注]本篇将从宏观上介绍bert的产生和在众多模型中的地位,以及与bert ...

  7. 【直播课】图像分类竞赛技巧与多标签分类实战

    前言 对于刚接触深度学习计算机视觉的初学者来说,图像分类问题是最常见的问题,如何做好图像分类任务,关系到大家能否正确顺利地入门.读了许多论文,可能仍然不懂代码如何实现.跑了代码,仍旧不懂如何运用图像分 ...

  8. (imdb数据集)电影评论分类实战:二分类问题

    目录 前言 一.电影评论分类实战 1-1.数据集介绍&数据集导入&分割数据集 1-2.字典的键值对颠倒&数字评论解码 1-3.将整数序列转化为张量(训练数据和标签) 1-4.搭 ...

  9. mmcls多标签分类实战(三):多标签分类指标

    前面两篇分别介绍了制作多标签数据,resnet多标签分类.接下来,我将介绍多标签分类的指标并分享一些关于多标签分类的细节,即如何操作可以提点. 在此之前,想提一下损失函数cross_entropy与b ...

  10. mmcls多标签分类实战(一):制作多标签数据

    Multi-Label:多标签分类指当图片或者文本存在多个属性时,多标签分类能够对一张图片中的多个属性进行分类识别.下面将用mmclassification框架完成一次多标签分类实战. Multi-c ...

最新文章

  1. 为什么总线要用一根来表示一bit
  2. 面向.NET开发人员的Dapr——状态管理
  3. 【渝粤教育】国家开放大学2018年秋季 1379T人文英语3 参考试题
  4. 变电站计算机在线监控系统,变电站环境在线监测系统
  5. 如何使用Putty登录安装在VirtualBox里的ubuntu 1
  6. volatile分析
  7. iOS 监听锁屏/解锁事件
  8. 优车车欲用Uber模式和传统驾校一起打一场漂亮仗
  9. 《Python编程从入门到实践 第二版》第十六章练习
  10. 好好说话之Fastbin Attack(1):Fastbin Double Free
  11. Flutter获取Android/iOS设备信息
  12. [数据可视化] 图表设计原则
  13. 十六进制账号登录QQ、TIM
  14. 桌面存放linux文件无法删除,桌面文件无法删除怎么办【图文教程】
  15. Timer.cancel()
  16. 淘点点能否不孚众望扛起阿里O2O的大任?
  17. 妹妹画的小恐龙和我用Python画的小恐龙,你更加喜欢谁的!❤️
  18. 第四十六章 使用 ^SystemPerformance 监视性能 - 生成 ^SystemPerformance 性能报告
  19. STM8L105 微妙 毫秒延时
  20. [已解决]用wget下载GES DISC数据遇到unable to establish SSL connection的问题

热门文章

  1. 【天光学术】护士长竞争上岗演讲
  2. Oracle EBS R12 AP付款模块 帐龄表计算逻辑
  3. vue怎么请求后端的图片_Vue向后端请求课程展示
  4. hdu-4411-Arrest
  5. Android 获取系统信息 手机号码 所在国家码
  6. 不吹不黑,在外企的工作生活|年中总结
  7. gopro7怎么回看视频_gopro7使用技巧
  8. arcgispython编程案例_ArcGIS Python编程案例(1)-Python语言基础
  9. 数据科学与大数据技术与计算机科学与技术哪个好
  10. 前端工具库 xlsx 处理表头合并