【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(2)

简介: 【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示

【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(1)https://developer.aliyun.com/article/1536293

数据集配置方式

数据集配置方式有以下两种:

方式一:直接用文件夹名称作为标签,只需配置data_prefix这一个路径参数,格式如下:

自己创建一个data目录,目录下有train,valid,test三个文件夹,这3个文件夹下放置每个分类类别的目录文件(以类别命名文件夹),每个目录1-7中存放的就是当前目录文件名标签1-7对应的图片:(目录数字1-7直接替换为需要预测的类别名称即可:代表目录下图片所属的标签名称)

目录结构如下:

这种方式data配置文件的设置方式如下:只需配置数据路径data_prefix,不需要标签路径:ann_file,因为此时会默认用图片所在的目录名称作为标签。

data = dict(
    samples_per_gpu=32,    # 单个 GPU 的 Batch size
    workers_per_gpu=2,     # 单个 GPU 的 线程数
    train=dict(            # 训练数据信息
        type=dataset_type,                  # 数据集名称
        data_prefix='data/train',  # 数据集目录,当不存在 ann_file 时,类别信息从文件夹自动获取
        pipeline=train_pipeline),           # 数据集需要经过的 数据流水线
val=dict(              # 验证数据集信息
        type=dataset_type,
        data_prefix='data/val',
        pipeline=test_pipeline),
test=dict(             # 测试数据集信息
        type=dataset_type,
        data_prefix='data/test',
        pipeline=test_pipeline))
evaluation = dict(       # evaluation hook 的配置
    interval=1,          # 验证期间的间隔,单位为 epoch 或者 iter, 取决于 runner 类型。
    metric='accuracy')   # 验证期间使用的指标。

方式二:所有图片均在一个目录下,没有区分标签目录,此时需要构建图片与标签一一对应的.txt文件。,这种方式配置起来稍微复杂一点。

自己创建一个data目录,目录下有train,valid,test三个文件夹,这3个目录下分别放需要训练、验证与测试的图片。不用像方法一一样建立分类子目录,不过此时需要通过分别构建train.txt, val.txt, test.txt这3个文件获取图片所对应的标签。

.txt文件格式如下:【图片名 类别】

注:类别是从0开始依次向后编号的。编号对应的实际名称是在mmcls/datasets/imagenet.py这个文件中设置的。(下文会讲)

这种方式data配置文件需要同时配置数据路径data_prefix,标签路径:ann_file。如下:

data = dict(
    samples_per_gpu=32,    # 单个 GPU 的 Batch size
    workers_per_gpu=2,     # 单个 GPU 的 线程数
    train=dict(            # 训练数据信息
        type=dataset_type,                  # 数据集名称
        data_prefix='data/train',  # 数据集目录,当不存在 ann_file 时,类别信息从文件夹自动获取
        ann_file='data/train.txt',
        pipeline=train_pipeline),           # 数据集需要经过的 数据流水线
val=dict(              # 验证数据集信息
        type=dataset_type,
        data_prefix='data/val',
        ann_file='data/val.txt',
        pipeline=test_pipeline),
test=dict(             # 测试数据集信息
        type=dataset_type,
        data_prefix='data/test',
        ann_file='data/test.txt',
        pipeline=test_pipeline))
evaluation = dict(       # evaluation hook 的配置
    interval=1,          # 验证期间的间隔,单位为 epoch 或者 iter, 取决于 runner 类型。
    metric='accuracy')   # 验证期间使用的指标。

注:实际数据路径根据你防止数据集的位置进行修改。

这种方式还需要建立自己读文件的类,进行文件读取:

在mmcls/datasets目录下,创建file_list.py文件,内容如下:

import numpy as np
from .builder import DATASETS
from .base_dataset import BaseDataset
@DATASETS.register_module()
class MyFilelist(BaseDataset):
    CLASSES = ['flower_'+ str(i) for i in range(102)]
    def load_annotations(self):
        assert isinstance(self.ann_file, str)
        data_infos = []
        with open(self.ann_file) as f:
            samples = [x.strip().split(' ') for x in f.readlines()]
            for filename, gt_label in samples:
                info = {'img_prefix': self.data_prefix}
                info['img_info'] = {'filename': filename}
                info['gt_label'] = np.array(gt_label, dtype=np.int64)
                data_infos.append(info)
            return data_infos

然后在mmcls/datasets/init.py 中完成注册,如下图:

然后下修改tools\work_dirs\esnet18_8xb32_in1k\esnet18_8xb32_in1k.py这个配置文件中data读取的类名,如下图:

更改配置文件中的类别名称

各个编号对应类别实际名称在mmcls/datasets/imagenet.py这个文件中设置:

更改ImageNet类中的CLASSES为自己需要分类的类别名称列表:

到此配置文件修改完毕,然后就可以用tools\work_dirs\resnet18_8xb32_in1k.py这个完整的配置文件运行我们的train.py训练模型。

训练模型

pycharm中点击下面配置按钮

在参数这里输入tools\work_dirs\resnet18_8xb32_in1k.py这个的绝对路径,就可以对模型进行训练了。

训练的结果会默认存放在tools\work-dirs目录下:(.pth为训练后的模型文件)

【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(3)https://developer.aliyun.com/article/1536295

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
人工智能 自然语言处理 文字识别
阿里推出AnyText: 解决AI绘图不会写字的问题,可以任意指定文字位置,且支持多国语言!
【2月更文挑战第17天】阿里推出AnyText: 解决AI绘图不会写字的问题,可以任意指定文字位置,且支持多国语言!
898 2
阿里推出AnyText: 解决AI绘图不会写字的问题,可以任意指定文字位置,且支持多国语言!
|
JSON 小程序 前端开发
微信小程序(二十四)微信小程序富文本编辑器editor
{ "component": true, "usingComponents": {} }
400 0
VSCode调试 添加命令行参数
VSCode调试 添加命令行参数
754 0
|
存储 并行计算 Linux
国产之路:复旦微FMQL调试笔记1:PS网口
FPGA,全程现场可编程门阵列,是指一切通过软件手段更改、配置器件内部连接结构和逻辑单元,完成既定设计功能的数字集成电路。换个简单通俗的介绍方式,就好比一个全能的运动员,FPGA就是这么神奇的可以通过设定而实现各种复杂的功能电路。
2531 0
国产之路:复旦微FMQL调试笔记1:PS网口
|
存储 机器学习/深度学习 算法
MMDetection3d对KITT数据集的训练与评估介绍
MMDetection3d对KITT数据集的训练与评估介绍
2912 0
MMDetection3d对KITT数据集的训练与评估介绍
|
数据采集 机器学习/深度学习 编解码
MMdetection框架速成系列 第02部分:整体算法流程+模型搭建流程+detection训练与测试核心组件+训练部分与测试部分的核心算法
众所周知,目标检测算法比较复杂,细节比较多,难以复现,而我们推出的 MMDetection 开源框架则希望解决上述问题。目前 MMdetection 已经复现了大部分主流和前沿模型,例如 Faster R-CNN 系列、Mask R-CNN 系列、YOLO 系列和比较新的 DETR 等等,模型库非常丰富,star 接近 13k,在学术研究和工业落地中应用非常广泛。
2413 0
|
机器学习/深度学习 数据可视化 算法
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(1)
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示
|
机器学习/深度学习 监控 数据可视化
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(3)
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示
|
9月前
|
机器学习/深度学习 人工智能 计算机视觉
《深度剖析:一文读懂卷积神经网络中的感受野》
感受野是卷积神经网络(CNN)中关键概念,指神经元在输入数据中对应的区域大小。它影响模型对特征的捕捉能力,决定局部与全局特征的提取。单层卷积的感受野由卷积核大小、步长和填充决定;多层卷积时感受野会逐层累加扩大。合适感受野能提升模型性能,过大或过小都会影响效果。调整感受野可通过改变卷积核大小、步长或使用空洞卷积实现。深入理解感受野有助于优化CNN设计,推动AI技术发展。
462 4
|
传感器 机器学习/深度学习 编解码
一文尽览 | 基于点云、多模态的3D目标检测算法综述!(Point/Voxel/Point-Voxel)(下)
目前3D目标检测领域方案主要包括基于单目、双目、激光雷达点云、多模态数据融合等方式,本文主要介绍基于激光雷达雷达点云、多模态数据的相关算法,下面展开讨论下~
一文尽览 | 基于点云、多模态的3D目标检测算法综述!(Point/Voxel/Point-Voxel)(下)