当前位置: 首页 > news >正文

mmpretrain学习笔记

深度学习模型的训练涉及几个方面
1、模型结构:模型有几层、每层多少通道数等
2、数据:数据集划分、数据文件路径、批大小、数据增强策略等
3、训练优化 :梯度下降算法、学习率参数、训练总轮次、学习率变化策略等
4、运行时:GPU、分布式环境配置等
5、辅助功能:如打印日志、定时保存 checkpoint等

mmpretrain的文件结构

-configs 配置文件
-data 数据集存储路径
-demo 入门案例
-docs 中英文文档教程
-mmpretrain 模块化代码-apis: 顶层 api 接口,支持各类推理任务-datasets:支持了各类数据集,数据变换等-engine:支持各类钩子,优化器等训练相关组件-evaluation:各类评测相关函数和指标计算-models:各类算法模型的定义-backbones 一般为图像的特征提取器,各类主千网络的定义-necks 则为承接 backbone 和 head 之间的其它计算 (例如高维特征解码,多尺度特征融合等)-heads 则主要为相关loss 计算和推理结果的预测-classifier,selfsup,multimodal 则为模型高阶抽象定义-structures: DataSample 数据结构的定义-utils: 相关工具-visualization:可视化的支持
-project 工程实例
-resources 图片、视频等静态资源
-tests 组件维度测试脚本
-tools 训练、测试、可视化等工具集
-work_dirs 运行代码产生的文件存放地

现有数据集+现有模型

python tools/train.py configs/resnet/resnet18_8xb16_cifar10.py
python tools/test.py configs/resnet/resnet18_8xb16_cifar10.py work_dirs/resnet18_8xb16_cifar10/epoch_200.pth

自定义模型+现有数据集
方案一:
1、使用pytorch实现完整的前向传播,并测试好维度
2、按照mmpretrain的约定将进行代码转换以及配置文件的改写

python tools/train.py work_dirs/test_8xb16_cifar10/resnet18_8xb16_cifar10.py
python tools/test.py work_dirs/test_8xb16_cifar10/resnet18_8xb16_cifar10.py work_dirs/resnet18_8xb16_cifar10/epoch_20.pth

方案二:
1、通过断点调试以及可视化的方式理解官方代码维度的变换
2、在理解的基础上直接按照约定改写官方代码

自定义模型心得:
1、虽然模型被拆分成了不同分组件,但组件之间并不能任意组合
2、各个组件的输出并不一定是Tensor,也有可能是Tuple
3、并不是每个组件都是必须的,例如可以没有neck
4、loss是和head绑定的,拆散模型时候要注意

自定义数据集+现有模型
1、数据集下载 Fruits Dataset(Images)

https://www.kaggle.com/datasets/shreyapmaher/fruits-dataset-images
python tools/train.py configs/efficientnet/efficientnet-b0_8xb32_in1k.py

出现报错,但是没有影响,只是需要拿到efficientnet-b0_8xb32_in1k.py,随后修改这个配置
修改:
(1)type=‘ImageNet’–》type=‘CustomDataset’ 4个地方

   cp efficientnet-b0_8xb32_in1k.py efficientnet-b0_8xb32_fruits.py

(2)efficientnet-b0_8xb32_in1k.py–》efficientnet-b0_8xb32_fruits.py
(3)work_dir = ‘./work_dirs\efficientnet-b0_8xb32_in1k’–》work_dir = ‘./work_dirs/efficientnet-b0_8xb32_fruits’
(4)数据集路径 data_root=‘data/imagenet’–》data_root=‘data/Fruits Dataset/images’
(5)num_classes=1000–》num_classes=9
(6)split=‘train’、split='val’注释掉
(7)适当的修改num_workers、epochs、batch_size、lr等
如下:

python tools/train.py work_dirs/efficientnet-b0_8xb32_fruits.py --work-dir work_dirs/efficientnet-b0_8xb32_fruits
python tools/test.py work_dirs/efficientnet-b0_8xb32_fruits.py work_dirs/efficientnet-b0_8xb32_fruits/epoch_50.pth

resnet18_8xb32_in1k.py
名称:resnet 层数:18 8×b16:8张卡,每张卡batch_size为16 in1k:数据集名称

python tools/train.py configs/resnet/resnet18_8xb32_in1k.py

my_resnet18_8xb32_in1k.py 完整的配置文件

2、训练结果测试与验证
单张测试

python demo/image_demo.py demo/test.jpg configs/resnet/my_resnet18_8xb32_in1k_method3.py --checkpoint D:/Project_python/mmpretrain/work_dirs/my_resnet18_8xb32_in1k_method3/epoch_50.pth --show --show-dir demo --device cuda:0

批量测试
(1)测试 测试可以看详细文档教程自定义评估指标

val_evaluator = [dict(topk=(1, 5,), type='Accuracy'),dict(type='SingleLabelMetric', items=['precision', 'recall']),]
python tools/test.py configs/resnet/my_resnet18_8xb32_in1k_method3.py work_dirs/my_resnet18_8xb32_in1k_method3/epoch_50.pth --work-dir work_dirs/my_resnet18_8xb32_in1k_method3/val --out-item metrics --show-dir work_dirs/my_resnet18_8xb32_in1k_method3/val_result 

(2)可视化模块展示 tools/visualization
browse_dataset.py: 显示在进入模型之前(类似数据增强操作)经历了什么

python tools/visualization/browse_dataset.py configs/resnet/my_resnet18_8xb32_in1k_method3.py --output-dir work_dirs/my_resnet18_8xb32_in1k_method3/browse_dataset --phase train --show-number 2 --mode original transformed concat  pipeline

vis_cam.py:热力图 主要关注区域

python tools/visualization/vis_cam.py demo/roses.jpg configs/resnet/my_resnet18_8xb32_in1k_method3.py work_dirs/my_resnet18_8xb32_in1k_method3/epoch_50.pth --preview-model
data_preprocessor
backbone
.......
backbone.layer4
backbone.layer4.0
backbone.layer4.0.conv1
.......
backbone.layer4.1
backbone.layer4.1.conv1
backbone.layer4.1.bn1
backbone.layer4.1.conv2
backbone.layer4.1.bn2
backbone.layer4.1.relu
backbone.layer4.1.drop_path
neck
.......
head.fc
python tools/visualization/vis_cam.py demo/roses.jpg configs/resnet/my_resnet18_8xb32_in1k_method3.py work_dirs/my_resnet18_8xb32_in1k_method3/epoch_50.pth --target-category 2 --target-layers backbone.layer4.1.conv2 --method GradCAM/GradCAM/......

(3)分析工具 tools/analysis_tools
计算参数量

python tools/analysis_tools/get_flops.py configs/resnet/my_resnet18_8xb32_in1k_method3.py  --shape 224 224

日志分析

python tools/analysis_tools/analyze_logs.py plot_curve work_dirs/my_resnet18_8xb32_in1k_method3/20230929_151247/vis_data/20230929_151247.json --keys loss accuracy/top1
python tools/analysis_tools/analyze_logs.py cal_train_time work_dirs/my_resnet18_8xb32_in1k_method3/20230929_151247/vis_data/20230929_151247.json

生成pkl文件

python tools/test.py configs/resnet/my_resnet18_8xb32_in1k_method3.py work_dirs/my_resnet18_8xb32_in1k_method3/epoch_50.pth  --out work_dirs/my_resnet18_8xb32_in1k_method3/result.pkl

验证预测失败和成功的图

python tools/analysis_tools/analyze_results.py configs/resnet/my_resnet18_8xb32_in1k_method3.py work_dirs/my_resnet18_8xb32_in1k_method3/result.pkl --out-dir work_dirs/my_resnet18_8xb32_in1k_method3/analyze  

画混淆矩阵图

python tools/analysis_tools/confusion_matrix.py configs/resnet/my_resnet18_8xb32_in1k_method3.py work_dirs/my_resnet18_8xb32_in1k_method3/result.pkl --show --include-values

相关文章:

mmpretrain学习笔记

深度学习模型的训练涉及几个方面 1、模型结构:模型有几层、每层多少通道数等 2、数据:数据集划分、数据文件路径、批大小、数据增强策略等 3、训练优化 :梯度下降算法、学习率参数、训练总轮次、学习率变化策略等 4、运行时:GPU、…...

rhel8 网络操作学习

一、查询dns服务器地址汇总 1.查询dns服务器地址: (1)方法一:执行命令 cat /etc/resolv.conf 执行结果如下: nameserver后面就是dns服务器的ip地址。 (2)方法2:查看/etc/syscon…...

有车型(CarModel),车厂(CarFactory),经销商(Distributor)三个表

用drf编写 1 有车型(CarModel),车厂(CarFactory),经销商(Distributor)三个表, 一个车厂可以生产多种车型,一个经销商可以出售多种车型,一个车型可以有多个经销商出售车型:车型名,车型…...

Python函数:chr()和ord()

两个函数是基于Unicode编码表进行进行字符与字码之间的转换。 chr()函数是通过字码转换成字符: 如图,坐标(1,4e10)丑 使用chr需要线将坐标相加得到:4e11 chr默认传入10进制的字码. 如图是各进制的字码。 也可以传入其他进制,不过需要在前面传入的参数最前…...

flink sql 使用

1.准备工作 安装flink 1.16.2 将以下jar包放到/data/cmpt/flink-1.16.2/lib 目录下 antlr-runtime-3.5.2.jar flink-connector-hive_2.12-1.16.2.jar flink-connector-jdbc-1.16.2.jar mysql-connector-java-6.0.6.jar hive-exec-3.1.3.jar libfb303-0.9.3.ja…...

​面试官:谈谈 Go 泛型编程

大家好,我是木川 泛型编程是一种编程范式,它允许编写具有参数化类型的代码,从而增加代码的复用性和灵活性。在泛型编程中,你可以编写一段代码,使其适用于不同类型的参数,而不需要为每种类型编写不同的实现。…...

脚手架开发流程详解

开发流程 创建npm项目创建脚手架入口文件,最上方添加 #!/usr/bin/env/ node配置package.json,添加bin属性编写脚手架代码将脚手架发布到npm 使用流程 安装脚手架 npm install -g your-own-cli使用脚手架 your-own-cli脚手架开发难点解析 分包&…...

架构真题2021(四十三)

产品配置是指一个产品在其生命周期各个阶段所产生的各种形式(机器刻可读或人工可读)和各种版本()的集合。 需求规格说明、设计说明、测试报告需求规则说明、设计说明、计算机程序设计说明、用户手册、计算机程序文档、计算机程序…...

数据统计和分析怎么做?spss如何做好数据分析?

为什么要做数据分析?数据分析有什么意义?数据分析可以为企业和组织提供多方面的帮助,包括提高工作效率、优化业务流程、升职加薪、提高管理效率以及改进汇报效果等方面。 IBM SPSS Statistics 26是一款功能强大的统计分析软件,适用于Mac操作…...

【多线程】线程安全的集合类

文章目录 1. 多线程环境使用ArrayList1.1 自己使用同步机制1.2 Collections.synchronizedList(new ArrayList);1.3 使用 CopyOnWriteArrayList 2. 多线程使用队列3. 多线程环境使用哈希表3.1 HashTable3.2 ConcurrentHashMap3.3 Hashtable和HashMap、ConcurrentHashMap 之间的区…...

Goby 漏洞发布|Revive Adserver 广告管理系统 adxmlrpc.php 文件远程代码执行漏洞(CVE-2019-5434)

漏洞名称:Revive Adserver 广告管理系统 adxmlrpc.php 文件远程代码执行漏洞(CVE-2019-5434) English Name: Revive Adserver adxmlrpc.php Remote Code Execution Vulnerability (CVE-2019-5434) CVSS core: 9.0 影响资产数&a…...

Docker(三)、Dockerfile探究

Dockerfile探究 一、镜像层概念1、通过执行命令显化docker的机制 二、Dockerfile基础命令1、FROM 基于基准镜像【即构建镜像的时候,依托原有镜像做拓展】2、LABEL & MAINTAINER -说明信息3、WORKDIR 设置工作目录4、ADD & COPY 复制文件5、ENV 设置环境常量…...

C++读取文件夹下多个文件,包括图片等等

话不多说,直接上代码: int main() {//读入图片路径下的所有文件,D:\APP\VS\vs_projects_repos\Isp\imagesstring imgdirpath"D:\\APP\\VS\\vs_projects_repos\\Isp\\proimages\\";// 只读取文件夹下的png的文件名,也可以改成“*.b…...

DirectX 12 学习笔记 -结构

上篇文章我们创建了一个窗口&#xff0c;看样子还不难&#xff0c;我们继续玩DX12 引用一些文件 头文件 #include <d3d12.h> #include <dxgi1_4.h> #include <wrl.h>还有一些库 #pragma comment(lib, "d3d12.lib") #pragma comment(lib, "…...

【Redis】Redis 的学习教程(十二)之在 Redis使用 lua 脚本

lua 菜鸟教程&#xff1a;https://www.runoob.com/lua/lua-tutorial.html 在 Redis 使用 lua 脚本的好处&#xff1a; 减少网络开销。可以将多个请求通过脚本的形式一次发送&#xff0c;减少网络时延及开销原子性操作。Redis会将整个脚本作为一个整体执行&#xff0c;中间不会…...

标准/扩展库中对象的导入与使用

博主&#xff1a;命运之光 专栏&#xff1a;Python程序设计 Python扩展库导入和使用 Python启动时&#xff0c;仅加载了很少一部分模块&#xff0c;其它模块需要由程序员显示加载。使用“sys.modules.items()”显示所有预加载的模块信息。 import 模块名[.对象名] [as 别名] …...

87、Redis 的 value 所支持的数据类型(String、List、Set、Zset、Hash)---->List相关命令

本次讲解要点&#xff1a; List相关命令&#xff1a;是指value中的数据类型 启动redis服务器&#xff1a; 打开小黑窗&#xff1a; C:\Users\JH>e: E:>cd E:\install\Redis6.0\Redis-x64-6.0.14\bin E:\install\Redis6.0\Redis-x64-6.0.14\bin>redis-server.exe redi…...

Celery结合flask完成异步任务与定时任务

Celery 常用于 web 异步任务、定时任务等。 使用 redis 作为 Celery的「消息代理 / 消息中间件」。 这里通过Flask-Mail使用qq邮箱延时发送邮件作为示例 pip install celery pip install redis pip install Flask-Mail1、使用flask发送邮件 使用 Flask-Mail 发送邮件需要进行…...

前端项目练习(练习-001-纯原生)

先创建一个空文件夹&#xff0c;名字为web-001,然后用idea开发工具打开&#xff0c;如图&#xff1a; 可以看到&#xff0c;这是个彻底的空项目&#xff0c;创建 index.html index.js index.css三个文件&#xff0c;如图&#xff1a; 其中&#xff0c;html文件内容如下&am…...

基于微信小程序的游戏账号交易买卖平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…...

2023 年 Bitget Wallet 测评

对Bitget Wallet钱包的看法 Bitget Wallet在安全性、产品实力和使用体验方面可与Metamask媲美&#xff0c;甚至有所超越&#xff0c;唯一稍显不足的是知名度稍逊一筹。在众多钱包中&#xff0c;Bitget Wallet是拥有最全面的钱包之一&#xff0c;尤其适合那些希望一步到位&…...

医疗图像分割指标

医疗图像其中两种图像格式&#xff1a;MRI&#xff08;Magnetic Resonance Imaging&#xff0c;磁共振成像&#xff09;、CT&#xff08;Computed Tomography&#xff0c;计算机断层&#xff09;&#xff0c;常存成 .nii.gz 格式。都是 3D 的 H W L H \times W \times L HWL…...

零代码编程:用ChatGPT批量修改文件夹名称中的大小写

一个文件夹下面有很多个子文件夹&#xff0c;要把文件夹中的大写数字全部重命名为小写数字&#xff0c;比如将二 三 四&#xff0c;改成&#xff1a; 2 34 在ChatGPT中输入提示词如下&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个文件夹重命名的任务。具体步骤如…...

webpack:详解cache模块常用配置

背景 持久化缓存算得上是 Webpack 5 最令人振奋的特性之一&#xff0c;它能够将首次构建结果持久化到本地文件系统&#xff0c;在下次执行构建时跳过一系列解析、链接、编译等非常消耗性能的操作&#xff0c;直接复用 module、chunk 的构建结果。 cache 会在开发模式被设置成…...

云原生Kubernetes:Pod控制器

目录 一、理论 1.Pod控制器 2.Deployment 控制器 3.SatefulSet 控制器 4.DaemonSet 控制器 5.Job 控制器 6.CronJob 控制器 二、实验 1.Deployment 控制器 2.SatefulSet 控制器 3.DaemonSet 控制器 4.Job 控制器 5.CronJob 控制器 三、问题 1. showmount -e 报错…...

数据库基础与MySQL入门

在当今的数字化世界中,数据如同生命之水,它贯穿于各种应用和服务中。尤其在游戏行业,例如经典的《三国志》,数据库管理成了一个不可或缺的环节。这不仅涉及到用户信息的存储,还涉及到游戏状态、积分、交易等复杂的数据处理需求。 MySQL作为一个广受欢迎的数据库管理系统,…...

探索Java爬虫框架:解锁网络数据之门

引言&#xff1a; 随着互联网时代的发展&#xff0c;大量的数据被存储在各种网页中。对于开发者而言&#xff0c;如何高效地获取和处理这些网络数据成为了一个重要的问题。而Java作为一门强大的编程语言&#xff0c;也有许多优秀的爬虫框架供开发者选择和使用。本文将带您深入…...

智慧燃气平台的总体架构到底应怎样设计?

关键词&#xff1a;智慧燃气、智慧燃气平台、智能燃气、智能监控 智慧燃气平台功能设计的一些方向和思考&#xff1a; 1、资源统一&#xff0c;管理调度 城市燃气智慧调度运营管理平台收集并且整理出每个业务系统信息&#xff0c;并且根据所整理出的信息结果制定出标准规范&…...

MonkeyRunner测试步骤

首先把安卓SDK的 环境变量给配置好&#xff0c;这里就不再多解释&#xff0c;自己google 然后将自己的安卓设备打开调试模式&#xff0c;USB连接至电脑&#xff0c;运行CMD,输入命令adb devices 查看你的安卓设备的ID&#xff08;ID后面写程序会调用&#xff09;&#xff0c;…...

Konva基本处理流程和相关架构设计

前言 canvas是使用JavaScript基于上下文对象进行2D图形的绘制的HTML元素&#xff0c;通常用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。基于Canvas之上&#xff0c;诞生了例如 PIXI、ZRender、Fabric、Konva等 Canvas渲染引擎&#xff0c;兼顾易用的同时…...

wordpress加上预约系统/免费网站推广网站破解版

四面阿里 面试岗位是研发工程师&#xff0c;直接找蚂蚁金服的大佬进行内推&#xff0c;参与了阿里巴巴中间件部门的提前批面试&#xff0c;一共经历了四次面试&#xff0c;拿到了口头offer。 一面&#xff1a; 自我介绍项目中做了什么&#xff0c;难点呢。Java的线程池说一下…...

做相关性分析的网站/模板建站哪个平台好

java无效的发行源Java PureFaces团队宣布该项目源代码现已可用。 Java PureFaces是JavaServer Faces&#xff08;JSF&#xff09;的Web开发扩展&#xff0c;它使用JSF框架创建使用纯Java代码开发Web应用程序的API&#xff0c;而无需创建多个静态JSP模板。 翻译自: https://ja…...

3d 网站设计/网络营销案例分析题及答案

1. 调优金字塔 架构调优&#xff1a;采用更适合业务场景的架构能最大程度地提升系统的扩展性和可用性。在设计中进行垂直拆分能尽量解耦应用的依赖&#xff0c;对读 压力比较大的业务进行读写分离能保证读性能线性扩展&#xff0c;而对于读写并发压力比较大的业务在 MySQL 上也…...

怎么创建网站后台/广州专业seo公司

起源 要用svg做一个流程图类似visio的连线&#xff0c;如下图的 其实有很多库已经实现了流程图&#xff0c;比如 jointjs&#xff0c;gojs&#xff0c;jsplumb 等等。可惜都不是免费的。 分析 如果要做的简单呢&#xff0c;就用贝塞尔曲线就好了&#xff0c;只需要提供起点终点…...

网站跳转qq链接怎么做的/怎么推广

Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧&#xff08;转载&#xff09; Python第一天 安装 shell 文件 Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义…...

网站建设遵循原则/windows优化大师卸载不掉

近期使用Spark开发ML机器学习模型的时候&#xff0c;其中有一个部分需要交替搜索最优参数。 待搜索的参数空间有上万维&#xff0c;如果参数搜索串行执行&#xff0c;那么上千次的迭代计算大约需要10个小时&#xff0c;对于线上部署的模型是万万不可取的。 考虑到参数搜索部分…...