训练DAMO-YOLO(damoyolo_tinynasL25_S.py)

文章目录

  • 参考链接
  • 1 准备数据
    • 1.1 转为COCO格式
    • 1.2 指明数据路径
  • 2 设置训练配置文件,在configs/damoyolo_tinynasL25_S.py进行如下两块修改
    • 2.1 关于训练参数的设置
    • 2.2 根据自己数据集设置
  • 3 开始训练
  • 4 调用tools/eval.py进行测试
  • 5 训练时可能遇到的报错
    • 5.1 RuntimeError: Distributed package doesn't have NCCL built in
    • 5.2 ModuleNotFoundError: No module named 'damo.base_models.core'

参考链接

  • 官方代码:DAMO-YOLO
  • DAMO-YOLO最强操作教程.我的这博文不算很详细,可以去看看这篇博文的视频链接。但我的博文也就是少了配置虚拟环境的步骤,其实如果已经配置好了YOLO相关的虚拟环境,跟着我来应该是能跑通的

1 准备数据

1.1 转为COCO格式

  • 参考我的另一篇博客:将YOLO数据集转成COCO格式,单个文件夹转为单个json文件,例如…/images/train转为instance_train.json

1.2 指明数据路径

damo/config/paths_catalog.py进行修改

在这里插入图片描述

2 设置训练配置文件,在configs/damoyolo_tinynasL25_S.py进行如下两块修改

configs/damoyolo_tinynasL25_S.py进行如下两块修改

2.1 关于训练参数的设置

右侧的base.py在damo/config/base.py

在这里插入图片描述

        self.train.batch_size = 2   # 训练时的batchsizeself.train.total_epochs = 300   # 训练的总轮数# self.train.finetune_path = ''   # 如果要加上预训练权重,就下载了然后指明位置self.test.batch_size = 4    # 是训练时候的2倍,但是我在想在训练完之后进行测试时,是不是应该改为1self.miscs.num_workers = 0  # windows下设置为0self.miscs.output_dir = './workdirs'    # 训练完后保存的目录self.miscs.exp_name = 'DAMO-YOLOs'      # 自定义文件名

2.2 根据自己数据集设置

在这里插入图片描述

3 开始训练

python -m torch.distributed.launch --nproc_per_node=1 tools/train.py -f configs/damoyolo_tinynasL25_S.py
  • 可以像下图一样,直接设置好配置文件的绝对路径,肯定不会出现找不到配置文件的错误

在这里插入图片描述

  • 这个-m torch.distributed.launch --nproc_per_node=1是用来设置多卡训练的,必须要带上才能正常运行起来,因此我在调试的时候多有不便,亲测这个博客很有用,如果有需要可以参考:Pycharm 调试debug torch.distributed.launch
    • 兴许这个博客也能有用,暂存一下:DAMOYOLO windows 单卡训练

4 调用tools/eval.py进行测试

官方示例:

python -m torch.distributed.launch --nproc_per_node=1 tools/eval.py -f configs/damoyolo_tinynasL25_S.py --ckpt /path/to/your/damoyolo_tinynasL25_S.pth
  • 感觉DAMO-YOLO跟YOLOX的代码很像,所以在eval.py中还设置了--conf 0.001 --nms 0.5 --tsize 640,另外,验证时batchsize应该设置为1,因此在configs/damoyolo_tinynasL25_S.py中设置self.test.batch_size = 1(但是测试完之后,就改回为self.train.batch_size的两倍吧)

在这里插入图片描述

  • 直接按照上面命令运行的话,是会对val数据集进行验证,所以如果需要对test数据集进行验证的话,就按照下图在damo/config/paths_catalog.py里进行更改

在这里插入图片描述

在这里插入图片描述

5 训练时可能遇到的报错

5.1 RuntimeError: Distributed package doesn’t have NCCL built in

解决方法:会出现这个错,是因为在Windows上跑的,那么只要在tools/train.py中定位到backend='nccl',然后把nccl改为gloo即可

5.2 ModuleNotFoundError: No module named ‘damo.base_models.core’

解决方法:会出现这报错,是因为程序没有根据找到damo包的位置,其实就是代码写得有点奇怪然后没有找到路径。只要把tools/train.py复制到根目录下,然后运行就可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/411597.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大师学SwiftUI第6章 - 声明式用户界面 Part 4

步进器视图 ​​Stepper​​视图创建一个带递增和递减按钮的控件。该结构体提供了多个初始化方法,包含不同的配置参数组合。以下是最常用的一部分。 Stepper(String, value: Binding, in: Range, step: Float, onEditingChanged: Closure):此初始化方法…

2024年腾讯云轻量服务器和CVM云服务器性能如何?

腾讯云轻量服务器和云服务器有什么区别?为什么轻量应用服务器价格便宜?是因为轻量服务器CPU内存性能比云服务器CVM性能差吗?轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境,云服务器CV…

【软件测试】学习笔记-精准测试

软件测试行业从最开始的手工测试到自动化测试,从黑盒测试到白盒测试,测试理念和技术都发生了日新月异的变化。现如今,几乎所有的软件公司都有一套强大且复杂的自动化测试用例,用来夜以继日地保证产品的正确性和稳定性。 然而&…

【Docker】网络模式详解及容器间网络通信

目录 一、概述 二、默认网络 三、网络模式及应用 1. Bridge模式 2. Host模式 3. none网络模式 四、自定义网络应用 1. 网络相连 2. 自定义通讯 3. 自定义IP 每篇一获 一、概述 在 Docker 中,网络设置包括 IP 地址、子网掩码、网关、DNS 和端口号等关键组…

迅为RK3588开发板编译 Buildroot单独编译图形化界面(打包镜像)

上面 Kernel/U-Boot/Recovery/Rootfs 各个部分的编译后,将打包要用到的所有固件移动到 rockdev 目录下,然后打包为完整的 update.img 镜像。 首先在 linux 源码目录下输入以下命令进入编译的 UI 界面,进入之后如下所示: ./buil…

windows编译TensorFlowServing

概述 整个编译打包过程的总体思路,是参照在linux下的编译流程,配置环境,执行编译命令,根据编译器/链接器反馈的错误,修改相应的源码或者相关库文件的存放路径,编译出windows平台下静态库和二进制执行文件。…

K8S--部署Nacos

原文网址:K8S--部署Nacos-CSDN博客 简介 本文介绍K8S部署Nacos的方法。Nacos版本是:2.2.3。 部署方案 本文为了简单,使用此部署方式:使用本地pvconfigmap,以embedded模式部署单机nacos。以nodePort方式暴露端口。 …

现代控制理论基础

在学习卡尔曼滤波、粒子滤波、隐马尔可夫模型时候,经常会提到状态方程的概念,这边联想到当时学习过的一门课程现代控制理论,这边就简单回顾一下吧。在回顾之前,串联下高等数学中微分方程的知识点。 一. 微分方程 高等数学上册第…

CMake+QT+大漠插件的桌面应用开发(QThread)

文章目录 CMakeQT大漠插件的桌面应用开发(QThread)简介环境项目结构配置编译环境代码 CMakeQT大漠插件的桌面应用开发(QThread) 简介 在CMakeQT大漠插件的桌面应用开发中已经给出了QT配合大漠插件开发桌面应用的样例 不过由于主…

设计模式-创建者模式

1.单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,此模式保证某个类在运行期间,只有一个实例对外提供服务,而这个类被称为单例类。 使用单例模式要做的两件事 1. 保证一个类只有一个实例 2.…

axios的原理及源码解析

面试官:你了解axios的原理吗?有看过它的源码吗? 一、axios的使用 关于axios的基本使用,上篇文章已经有所涉及,这里再稍微回顾下: 发送请求 import axios from axios;axios(config) // 直接传入配置 axio…

31 3D日历组件

效果演示 实现了一个3D文字旋转的效果&#xff0c;当鼠标悬停在容器上时&#xff0c;最后一个文字会旋转630度&#xff0c;而其他文字会逐渐旋转到水平面上方。 Code <div class"container"><div class"text" style"--j:0;"><sp…