目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。

一、目标分类介绍

目标分类是一种监督学习任务,其目标是根据输入数据的特征将其分配到预定义的类别中。这种分类方法在许多实际应用中都有广泛的应用,如垃圾邮件检测、图像识别、情感分析等。

目标分类的基本流程包括:数据预处理(如清洗、标准化)、特征提取、模型选择和训练、模型评估和优化。其中,模型的选择和训练是关键步骤,常见的分类算法有决策树、支持向量机、神经网络等。

目标分类的优点是可以自动地进行分类,无需人工干预,同时也可以通过调整模型参数来提高分类的准确性。但是,目标分类也存在一些挑战,如数据的不平衡问题、过拟合问题等。

1.1 二分类和多分类的区别

二分类是指将样本分为两个类别,多分类是指将样本分为多个类别。在机器学习中,常见的分类算法有决策树、支持向量机、神经网络等。其中,决策树是一种基于规则的分类算法,支持向量机是一种基于间隔最大化的分类算法,神经网络是一种基于非线性映射的分类算法。对于多分类问题,可以采用一对多的模型,即将一个二分类器用于多个类别的预测;也可以采用多对多的模型,即将多个二分类器用于多个类别的预测 。

1.2 单标签和多标签输出的区别

单标签输出是指模型的输出只有一个预测值,即 f (x) = y。多标签输出是指模型的输出具有多个预测值,即 f (x_1,x_2,…,x_n) = y_1, y_2,…,y_n。在多标签分类中,每个输入样本需要零个或多个标签作为输出,同时需要输出 。

二、代码获取

  • 支持自定义数据集训练
  • 支持网络架构:resnet18,resnet50,mobilenet_v2,googlenet
  • 整套训练代码和测试代码(Pytorch版本)
  • 支持多种优化器选择
  • 支持选择多种损失函数:交叉熵、labelSmoothing、BCE等
  • 所有的配置文件写在yaml文件,更方便管理

在这里插入图片描述
在这里插入图片描述

三、数据集准备

在这里插入图片描述

四、环境搭建

安装python、torch、torchvision和pip安装requirements
安装python可以通过anaconda安装虚拟环境,python == 3.7.11
torch和torchvision版本是torch 1.8.0+cpu和torchvision 0.9.0+cpu

参考这篇博客:点击

4.1 环境测试

在这里插入图片描述
在这里插入图片描述

五、模型训练

在这里插入图片描述
然后运行python train.py即可开始训练。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、模型测试

在这里插入图片描述
在这里插入图片描述
设置以上五个地方。由于网络真实预测的时候,可能会出现一张图片包含多种分类的目标。考虑到这种情况就不能简单的用argmax来获取最大值的索引了,所以我们应该通过设置阈值来记录相应类别的索引,然后再根据索引回溯到我们原始的目标信息。
修改后的代码如下

      # 单标签分类
      pred_index = np.argmax(prob_scores, axis=1)
      pred_score = np.max(prob_scores, axis=1)

修改为

    def filter_array(self, arr, threshold):
        # 获取满足条件的索引和值
        arr = arr.flatten()
        indices = np.where(arr >= threshold)[0]
        values = arr[indices]
        return indices, values

    pred_index,pred_score = self.filter_array(prob_scores, threshold)

这里的阈值可以直接通过参数来进行设置。

在这里插入图片描述
在这里插入图片描述

6.1 多标签训练-单标签输出结果

如果只需要输出单个目标,需要修改成以下地方
在这里插入图片描述

6.2 多标签训练-多标签输出结果

修改成这样
在这里插入图片描述

目录
相关文章
|
11月前
|
机器学习/深度学习 人工智能 算法
AI 基础知识从 0.6 到 0.7—— 彻底拆解深度神经网络训练的五大核心步骤
本文以一个经典的PyTorch手写数字识别代码示例为引子,深入剖析了简洁代码背后隐藏的深度神经网络(DNN)训练全过程。
1568 56
|
10月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
661 0
|
11月前
|
机器学习/深度学习 数据采集 传感器
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
319 0
|
12月前
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
422 0
|
9月前
|
机器学习/深度学习 数据可视化 网络架构
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
PINNs训练难因多目标优化易失衡。通过设计硬约束网络架构,将初始与边界条件内嵌于模型输出,可自动满足约束,仅需优化方程残差,简化训练过程,提升稳定性与精度,适用于气候、生物医学等高要求仿真场景。
994 4
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
|
10月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
242 8
|
9月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
353 0
|
10月前
|
机器学习/深度学习 数据采集 资源调度
基于长短期记忆网络定向改进预测的动态多目标进化算法(LSTM-DIP-DMOEA)求解CEC2018(DF1-DF14)研究(Matlab代码实现)
基于长短期记忆网络定向改进预测的动态多目标进化算法(LSTM-DIP-DMOEA)求解CEC2018(DF1-DF14)研究(Matlab代码实现)
415 0
|
10月前
|
机器学习/深度学习 数据采集 运维
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
303 4