CO-DETR利用coco数据集训练和推理过程

news2024/11/23 23:17:40

CO-DETR利用coco数据集训练和推理过程,参考链接
Co-DETR训练自己的数据集

文章目录

  • 前言
  • 训练过程
  • 推理过程
  • 总结


前言

环境:PyTorch 1.11.0 Python 3.8(ubuntu20.04) Cuda 11.3
先是在github上下载CO-DETR模型

!git clone https://github.com/Sense-X/Co-DETR.git
%cd Co-DETR

然后加载所需库

!pip install -r requirements.txt

安装mmcv等(注意mmcv应该是1.6.1版本及以上)

!pip install -U openmim

!mim install mmcv-full==1.6.1

!pip install timm==0.6.11 mmdet==2.25.3

因为出现了mmdetection 报错 TypeError: FormatCode() got an unexpected keyword argument ‘verify‘问题,用一下方案解决: yapf版本过高,目前版本为 0.40.2,重装低版本yapf即可

!pip uninstall yapf
!pip install yapf==0.40.1

然后把解压好的coco数据集放到/Co-DETR/data/coco/目录下,如下图

在这里插入图片描述

如果出现ModuleNotFoundError: No module named ‘projects‘错误,在相应python文件中(一般是train.py)添加

import sys
 
sys.path.append('你的项目的绝对路径')

例如:

#/Co-DETR/tools/train.py里面修改
import sys
 
sys.path.append('/root/autodl-tmp/Co-DETR')
from projects import *


训练过程

/Co-DETR目录下,终端输入:

bash tools/dist_train.sh projects/configs/co_deformable_detr/co_deformable_detr_r50_1x_coco.py 2 /root/autodl-tmp/Co-DETR

因为是分布式训练,需要用到两张以上显卡,比如两张4090(第三个参数是gpu数量),第一个参数是利用Pytorch的torch.distributed 实现单机多卡分布式训练的shell脚本文件,第二个是模型配置文件的位置,采用的是co_deformable_detr_r50_1x_coco.py模型,第四个参数是跑出的权重放置的位置。

运行的日志如下图所示:

在这里插入图片描述

下图是正常运行时终端正在运行的情况,正在进行第一轮训练:

在这里插入图片描述

然后等代码跑完12轮就行了,两张4090三四个小时跑完一轮,如下图

在这里插入图片描述

应该可以通过修改如下红色区域的值来修改跑的轮次

在这里插入图片描述


推理过程

可以用上面跑的权重,或者想简单点直接在官方代码中找到对应模型的权重,下载到服务器(gpu)里

在这里插入图片描述

用scp或者wget等方式下载一张行车记录仪的记录图片到/Co-DETR/deno目录下,比如test.png,运行下面命令,在当前目录下会出现识别后的out2.png图像。

!python demo/image_demo.py demo/test.png \
projects/configs/co_deformable_detr/co_deformable_detr_r50_1x_coco.py \
checkpoints/co_deformable_detr_r50_1x_coco.pth \
--device cuda \
--out-file out2.png

第一个参数是图片位置,第二个参数是模型配置位置,第三个参数是权重位置,第五个参数收识别图像的输出位置。
该图像是运行官网的权重后的结果

在这里插入图片描述
下图是运行上面第一轮训练后的latest.pth权重的结果

在这里插入图片描述

明显才训练一轮的识别结果更差,并且还有远处的一辆truck没识别到


总结

不记得运行过程有没有遇到其他问题了,但是基本上都能搜出解决方案,之前一直有问题感觉主要是没用多张卡来跑

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA设计模式-大集合数据拆分

背景 我们在做软件开发时,经常会遇到把大集合的数据,拆分成子集合处理。例如批量数据插入数据库时,一次大约插入5000条数据比较合理,但是有时候待插入的数据远远大于5000条。这时候就需要进行数据拆分。数据拆分基本逻辑并不复杂&…

复分析——第9章——椭圆函数导论(E.M. Stein R. Shakarchi)

第 9 章 椭圆函数导论 (An Introduction to Elliptic Functions) The form that Jacobi had given to the theory of elliptic functions was far from perfection; its flaws are obvious. At the base we find three fundamental functions sn, cn and dn. These functio…

一款轻量级的WPF UI库---Adonis UI

Adonis UI适用于 WPF 应用程序的轻型 UI 工具包,提供经典但增强的 Windows 视觉对象 组件内容 几乎所有 WPF 控件的模板的默认样式为方便起见,可根据需要使用两种配色方案(浅色和深色),也可用于自定义样式支持在运行时更改配色方案支持其他自定义配色方案提供水印等功能的…

华为BGP路由实验基础1------用物理口建立对等体

1.用物理口做BGP建立对等体建立BGP连接 实验拓扑: 实验步骤: 1.完成基本配置 sys [Huawei]sys AR1 [AR1]undo in e [AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [AR1-GigabitEthernet0/0/0]q [AR1] sys [Huawei]sys AR2 [AR2]undo i…

2024年危化品安全员生产单位(生产管理人员)考试精选题库

31.《危险化学品安全管理条例》所称重大危险源,是指生产、储存、使用或者搬运危险化学品,且危险化学品的数量等于或者超过()的单元(包括场所和设施)。 A.标准 B.一定量 C.临界量 答案:C 32.《危险化学品生产企业安全生产许可证实施办法》…

Sui创始团队在竞速环节中的快问快答

在Sui Basecamp活动期间,Sui区块链的最初贡献者在Oracle红牛赛车模拟器上展示了他们的技术能力,在驾驶圈时回答了有关Sui的问题。 Evan Cheng(又名Revvin’ Evan)在解释Mysticeti创下区块链最终性记录的同时保持着他的驾驶线路。…

C++——string类用法指南

一、前言 在C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍…

Linux—系统安全及应用

目录 一、账号安全控制 1、系统账号清理 1.1、将用户账号设置为无法登录 1.2、锁定长期不使用的账号 1.3、删除无用的账号 1.4、锁定账号文件passwd、shadow 2、密码安全控制 2.1、设置密码有效期 2.1.1、适用于新建用户 2.1.2、适用于已有用户 2.2、强制用户下次登录…

Python学习笔记26:进阶篇(十五)常见标准库使用之性能测试cProfile模块学习使用

前言 本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。 根据模块知识,一次讲解单个或者多个模块的内容。 教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html 本文主要…

Qt—贪吃蛇项目(由0到1实现贪吃蛇项目)

用Qt实现一个贪吃蛇项目 一、项目介绍二、游戏大厅界面实现2.1完成游戏大厅的背景图。2.2创建一个按钮,给它设置样式,并且可以跳转到别的页面 三、难度选择界面实现四、 游戏界面实现五、在文件中写入历史战绩5.1 从文件里提取分数5.2 把贪吃蛇的长度存入…

华为OceanStor磁盘阵列存储恢复出厂设置命令 LUN不处于在线状态,不能执行此操作解决方案

环境 OceanStor S2600T V2老版本 客户现场有一台Oceanstor 2600 V2的存储,因和另一台磁盘扩展框做了跨设备LUN需要进行配置清除,配置结束后需要重新划分存储空间并对接服务器,保证业务能够正常上线!在清除配置回退的过程中&#…

Firefox 编译指南2024 Windows10篇- 编译Firefox(三)

1.引言 在成功获取了Firefox源码之后,下一步就是将这些源码编译成一个可执行的浏览器。编译是开发流程中的关键环节,通过编译,我们可以将源代码转换为可执行的程序,测试其功能,并进行必要的优化和调试。 对于像Firef…

Milvus【部署 01】向量数据库Milvus在Linux环境下的在线+离线安装

向量数据库Milvus在Linux环境下的在线离线安装 1.千问简介2.在线安装2.离线安装 1.千问简介 Milvus 是一款专为处理高维向量数据设计的开源云原生数据库,旨在满足海量向量数据的实时召回需求。它由 Zilliz 公司开发并维护,基于Apache许可证2.0版本发布。…

选择适合你的8款原型设计工具

随着互联网的飞速发展,设计行业逐渐成为近年来的热门职业。设计师们需要的掌握的技能也越来越多,例如海报设计、名片设计、产品设计、网页设计等。产品原型设计就是产品设计中非常重要的一个阶段,主要目的是帮助用户更容易了解产品设计的思路…

YouTube广告投放指南:如何投放 YouTube视频广告

在海外广告投放中,YOutube是重要的渠道之一。这篇文章Maskfog将为你介绍Youtube广告类型以及广告投放流程,继续看下去! YouTube 视频广告的类型 1.信息流视频广告 信息流视频广告显示在 YouTube 主页、搜索结果页面上,并作为 Yo…

【pytorch10】统计属性

常见统计属性 norm(范数)mean,sumprodmax,min,argmin,argmaxkthvalue,topk kthvalue求第几个的位置和第几个的值 topk求top几的这样的一个数值 norm范数 这里的norm表达的是范数的意思,norma…

wait/notify 的原理

目录 一、wait/notify 的原理 二、虚假唤醒(错误唤醒) 三、使用 wait/notify 的正确姿势 一、wait/notify 的原理 1. owner 线程发现有条件不满足,调用 wait() 进入 Monitor 的 WaitSet 等待,切换为 Waiting 状态 2. 问题&…

老生常谈问题之什么是缓存穿透、缓存击穿、缓存雪崩?举个例子你就彻底懂了!!

老生常谈问题之什么是缓存穿透、缓存击穿、缓存雪崩?举个例子你就彻底懂了!! 缓存穿透发生场景解决方案 缓存击穿解决方案 缓存雪崩发生场景解决方案 总结三者区分三者原因三者解决方案 想象一下,你开了一家便利店,店里…

Springboot Mybatis 多数据源配置以及使用

在Spring Boot中配置MyBatis的多数据源是一个常见需求,尤其是在需要连接多个数据库时,下面是详细的步骤指南。 引入依赖 首先,在你的pom.xml文件中添加Spring Boot、MyBatis和数据库连接的相关依赖。例如,如果你使用的是MySQL数…

Boosted Trees 介绍

Boosted Trees 介绍 文章目录 Boosted Trees 介绍监督学习要素模型和参数目标函数:训练损失 正则化为什么介绍一般原则? 决策树集成Tree BoostingAdditive TrainingModel ComplexityThe Structure ScoreLearn the tree structure 关于 XGBoost 的最后话…