使用DiffusionDet在mot数据集上训练

2023-05-16

  1. 数据集处理

在https://github.com/facebookresearch/detectron2/detectron2/data/datasets/builtin.py中,可以看到,detectron2中可以使用哪些数据集格式,比如coco,pascal voc等。

本着方便处理的原则,使用pascal voc的数据格式。(mot17Det数据转换代码见:将MOT17-Det数据集转成VOC格式 - 知乎 (zhihu.com),十分感谢!有一点问题,就是标注转换为voc格式部分中,内部循环处即处理每个部分数据下的标注结果时,for i in range(1, max_index)应当改为for i in range(1, max_index + 1),否则最后一个标注文件不会转换)——需要注意,类别使用aeroplane,后文会说。

在转换代码的基础上,原来的train数据集划分为train和val两部分,test数据集没有标注,无法直接测试。

  1. 构建数据集目录

使用DiffusionDet中指导,使用下列命令构建软链接:

ln -s /path_to_mot_dataset/Annotations datasets/VOC2007/Annotations #注意使用pasacal voc格式,VOC2007可以为VOC2012不可以是其他的,且前面是datasets,这些都可以在detectron2源码中查到

最后,在DiffusionDet中的建立的软链接为:

数据存放的文件结构为:

  1. 代码处理

  • config:直接copy diffdet.coco.res50.yaml为diffdet.mot17det.res50.yaml,修改里面内容。

一定要修改的:

和1.中提到psacal voc格式有关,选择其中的name

不一定修改的:

减少训练时间,450000修改为45000

cuda显存不够的时候修改每个batch的图片数(本人服务器只有一张显卡,显存也不够呜呜):

  • 可能要改的(不确定,感觉可以不用改了):

train_net.py中的 build_evaluator函数应该修改:

框中部分改成PascalVOCDetectionEvaluator,使用见detectron2/detectron2/evaluation/pascal_voc_evaluation.py。

不改的话,使用COCOEvaluator评估,在训练的时候,结果格式如下:

经过个人查看,在/detectron2/data/datasets/coco.py和/detectron2/data/datasets/pascal_voc.py中,对coco数据集和pascal_voc数据集处理后的数据格式是一样的(貌似没啥用)哈哈哈哈

Important!在detectron2/evaluation/coco_evaluation.py中,有下面一段注释:

也就是说,不是COCO数据集没有关系,只有是detectron2的标注数据集就可以转换为coco数据集的标注格式,如下图所示。

  1. 问题

  • cuda error: device-side assert triggered

感谢(5条消息) Assertion `index >= -sizes[i] && index < sizes[i] && “index out of bounds“` failed_亦轻尘的博客-CSDN博客

在train_net.py中使用:

import os
os.environ['CUDA_LAUNCH_BLOCKING'] = '1'

再次运行,就可以找到报错的位置了

在报错的位置,使用print,显示相关信息

print结果如下,明显越界:

联系这个变量名的意义,估计是class类别的index越界,mot只有person类别,而pascal voc有多个class,并且person不是第一个。查看detectron2/detectron2/data/datasets/pascal_voc.py

查看,刚好person的index为14。为了让训练继续,将数据集中xml的class从person改为aeroplane。

  • 训练时间长达数十天——吓!

隐约记得detectron2框架下,没有明确指定epoch。epoch = MAX_ITER * BATCH_SIZE / TOTAL_NUM_IMAGES,简单计算了一下,我的训练epoch应该是900多。。。。所以,才有了3中修改config文件中的MAX_ITER。

MAX_ITER为原来的10分之一后,训练一天不到了。

PS:我使用的训练命令python train_net.py --num-gpus 1 --config-file configs/diffdet.mot17det.res50.yaml

(有什么意见,欢迎提出哈~本文纯本人训练时经历所得,其中关于类别什么的修改,如果自己下载detectron2源码则可以直接在源码修改,不需要使用第一个类别)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用DiffusionDet在mot数据集上训练 的相关文章

随机推荐

  • 浙大版《C语言程序设计(第3版)》题目集 通讯录排序

    习题9 5 通讯录排序 20分 输入n个朋友的信息 xff0c 包括姓名 生日 电话号码 xff0c 本题要求编写程序 xff0c 按照年龄从大到小的顺序依次输出通讯录 题目保证所有人的生日均不相同 输入格式 输入第一行给出正整数n xff
  • python数据可视化分析-matplotlib. 极坐标,函数积分图,散点-条形图

    1 极坐标 import matplotlib pyplot as plt import numpy as np 以上图形 r 61 np arange 1 6 1 theta 61 0 np pi 2 np pi 3 np pi 2 2
  • 用汇编语言实现LED1/LED2/LED3三盏灯点亮

    代码如下 xff1a text global start start LED1 INIT LED1点灯 64 1 设置GPIOE ldr r0 61 0x50000A28 ldr r1 r0 64 将r0指向地址空间中内容 xff0c 读到
  • Debian搭建squid

    1 安装 apt span class token operator span get insatll squid span class token operator span y 2 添加密码文件 此文件存储squid用户密码 echo
  • 为什么说最小二乘法和最大似然估计是等价的

    在接触机器学习算法时 xff0c 无法避免的就是理解模型训练的过程 xff0c 即模型为什么能够从历史数据中学习到知识 xff0c 其实学习的过程就是模型训练的过程 xff0c 也是模型寻找参数最优解的过程 这个过程有两种求取方式 xff0
  • Python randint左闭右闭,range左闭右开!

    randint xff08 xff09 函数左闭右闭 xff0c range xff08 xff09 函数左闭右开 xff01 xff01 xff01
  • ESP8266_07----------------PWM呼吸灯

    先看下的效果 xff1a 呼吸灯 1 硬件电路 xff1a LED的阴极与我们的GPIO4相连 2 PWM介绍 xff1a PWM xff1a 英文名为 Pulse Width Modulation xff0c 是脉冲宽度调制的缩写 xff
  • 定时器初值计算

    假设单片机晶振频率为11 0592MHz 定时器0工作方式为方式1 计算定时1ms的初值 一 手工计算 11 0592MHz 61 11059200Hz 进行12分频 61 11059200 12 61 921600Hz 机器周期 61 1
  • Linux主机安装RDP协议

    使用linux主机安装RDP协议 xff0c 之后便可以使用mstsc进行连接linux主机 xff0c 复制粘贴拷贝数据都是可以的 xff0c 相当于一个图形化客户端 CentOS主机 xff1a yum y groupinstall X
  • Vue的使用和常用指令

    Vue js 是什么 xff1f 很多学习Vue的小伙伴都活有这样的疑惑 xff0c 通常我认为Vue是了不起的 xff0c 为什么了不起 xff1f 因为它能干你的事情实在是太多了 一 了不起的Vue 1 简单介绍 Vue 读音 vju
  • ABAQUS如何输出应力应变曲线(XY曲线)

    1 打开模型的odb文件 2 点击左侧工具区 gt 创建XY数据 3 弹出创建XY对话框 xff0c 选择ODB场变量输出 4 分别选择E xff1a 应变分量中的主应变 xff1b S xff1a 应力分量中的主应力 并点击单元 节点 x
  • win11安装Anaconda最新版本

    0 前言 xff08 废话可略过 xff1a 从题主开始学python安装anaconda xff0c 已经过去三四年了 xff0c 最近新换了电脑从头再来一遍 xff0c 想来大家学AI大都是从此一步开始的吧 xff0c 想到当初遇到了很
  • 常用的默认端口号

    端口号标识了一个主机上进行通信的不同的应用程序 1 HTTP协议代理服务器常用端口号 xff1a 80 8080 3128 8081 9098 2 SOCKS代理协议服务器常用端口号 xff1a 1080 3 FTP xff08 文件传输
  • Docker中安装MySQL5.7,并解决中文乱码问题

    Docker安装MySQL5 7 xff0c 并解决中文乱码问题 在Docker中安装5 7 一 安装常规步骤 在docker中安装软件大概就分为这几种 查询所需要的软件镜像pull镜像运行镜像 xff08 镜像变容器 xff09 查看容易
  • git失败

    提示 xff1a gnutls handshake failed The TLS connection was non properly terminated 先设置 export GIT SSL NO VERIFY 61 1 再重新git
  • 【解决办法】pip和python版本不一致

    1 查看pip的版本 pip V pip的版本是python3 5 2 查看python版本 python python 版本是3 8 可以看到pip和python的版本对不上 xff0c 怎么处理呢 xff1f 3 使用和python版本
  • CentOS7虚拟机 下 MySQL 5.7版本 在线详细安装配置、以及完全卸载教程

    x1f9e1 x1f49b x1f49a x1f499 x1f49c x1f90e x1f497 x1f9e1 x1f49b x1f49a x1f499 x1f49c x1f90e x1f497 感谢各位一直以来的支持和鼓励 xff0c 制
  • cuda11.2对应的tensorRT版本

    下载tensorRT的官网地址 xff1a https developer nvidia com nvidia tensorrt download 进去之后可以看到各种版本的tensorRT xff0c 但是没有找到只适用于cuda11 2
  • cmake———CXX_STANDARD is set to invalid value ‘17‘

    Q xff1a CXX STANDARD is set to invalid value 39 17 39 A xff1a 版本和cmake版本对不上 xff0c 进入CMakeLists txt xff0c 将set CMAKE CXX
  • 使用DiffusionDet在mot数据集上训练

    数据集处理 在https github com facebookresearch detectron2 detectron2 data datasets builtin py 中 xff0c 可以看到 xff0c detectron2中可以