目标检测算法——mmdetection下面的deformable-detr运行

2023-11-10

1、环境

版本
mmcv-full 1.4.2
mmdet 2.19.1
torch 1.10.0+cu113
torchvision 0.11.1+cu113

在这里插入图片描述

2、文档

mmet官方文档
mmcv官方文档
源码下载

3、数据集

自定义数据集

4、修改代码

4.1、生成文件

打开mmdetection-master/tools下面执行train.py文件

其中配置文件--configmmdetection-master/configs/deformable_detr/deformable_detr_r50_16x2_50e_coco.py

python train.py {path}/mmdetection-master/configs/deformable_detr/deformable_detr_r50_16x2_50e_coco.py

会报错,不用管(在work_dirs/deformable_detr_r50_16x2_50e_coco生成需要的配置文件)
在这里插入图片描述

4.2、修改配置文件

my_deformable_detr_r50_16x2_50e_coco.py文件修改

  1. 将该文件复制到mmdetection-master/configs/deformable_detr/并改名为my_deformable_detr_r50_16x2_50e_coco.py
  2. 找到对应行数,修改为自己的路径
    在这里插入图片描述
  3. 修改类别数目
    在这里插入图片描述
  4. 加载预训练权重(可自己评估,我训练数据较少,加上官方预训练权重)
    在这里插入图片描述
  5. 上一步下载路径

在这里插入图片描述

修改mmdet源码

  1. 修改{path}/mmdet/core/evaluation/class_names.py下面的coco_classes()

    在这里插入图片描述

  2. 修改{path}/mmdet/datasets/coco.py下面的CLASSES和PALETTE

    有的源码里面没有PALETTE可不添加

    在这里插入图片描述

5、训练模型

再次进入mmdetection-master/tools下面,执行下面代码

其中的my_deformable_detr_r50_16x2_50e_coco.py是上面刚刚修改的文件名称

python train.py {path}/mmdetection-master/configs/deformable_detr/my_deformable_detr_r50_16x2_50e_coco.py

训练结束之后会生成相应的权重文件
在这里插入图片描述

6、测试模型数据

  1. 打开{path}/mmdetection-master/demo/文件夹执行image_demo.py

    python image_demo.py 1.jpg {path}/mmdetection-master/configs/deformable_detr/my_deformable_detr_r50_16x2_50e_coco.py {path}/mmdetection-master/tools/work_dirs/deformable_detr_r50_16x2_50e_coco/latest.pth
    
  2. 由于我在ubuntu虚拟机上面进行的代码测试,无法使用 show_result_pyplot()函数,稍作修改存储到对应的目录中
    ( 其中的第一个参数 img 修改成一个目录,可以直接进行对一个目录里面的文件读取并且处理后保存)

    from argparse import ArgumentParser
    from mmdet.apis import (inference_detector, init_detector)
    import cv2
    import os
    
    def parse_args():
        parser = ArgumentParser()
        parser.add_argument('--img', default='img2', help='Image file')
        parser.add_argument('--config', default='../configs/deformable_detr/my_deformable_detr_r50_16x2_50e_coco.py',help='Config file')
        parser.add_argument('--checkpoint',default='../tools/work_dirs/deformable_detr_r50_16x2_50e_coco/latest.pth', help='Checkpoint file')
        parser.add_argument('--device', default='cpu', help='Device used for inference')
        parser.add_argument(
            '--palette',
            default='coco',
            choices=['coco', 'voc', 'citys', 'random'],
            help='Color palette used for visualization')
        parser.add_argument(
            '--score-thr', type=float, default=0.3, help='bbox score threshold')
        parser.add_argument(
            '--async-test',
            action='store_true',
            help='whether to set async options for async inference.')
        args = parser.parse_args()
        return args
    
    
    def getfiles(file):
        path_list = []
        filenames = os.listdir(file)
        print(filenames)
        for filename in filenames:
            a = os.path.join(file, filename)
            # print(a)
            path_list.append(a)
        # print(path_list)
        return path_list,filenames
    
    
    def main(args):
        model = init_detector(args.config, args.checkpoint, device=args.device)
        # test a single image
        path_list,filenames = getfiles(args.img)
        for path,filename in zip(path_list,filenames):
            result = inference_detector(model, path)
            img = show_result_pyplot2(model, path, result, score_thr=0.8)
            cv2.imwrite(args.img+"/out/out_"+filename, img)
    
    
    def show_result_pyplot2(model, img, result, score_thr=0.3, fig_size=(15, 10)):
        if hasattr(model, 'module'):
            model = model.module
        img = model.show_result(img, result, score_thr=score_thr, show=False)
        return img
    
    
    if __name__ == '__main__':
        args = parse_args()
        main(args)
    

7、结果

预测结果还是比较准确的

在这里插入图片描述
在这里插入图片描述

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

目标检测算法——mmdetection下面的deformable-detr运行 的相关文章

  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • Python Popen 与 psexec 挂起 - 不良结果

    我对 subprocess Popen 和我认为是管道的问题有疑问 我有以下代码块 从 cli 运行时 100 都不会出现问题 p subprocess Popen psexec serverName get cmd c ver echo
  • 如何在序列化器创建方法中获取 URL Id?

    我有以下网址 url r member P
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 在 Python distutils 中从 setup.py 查找脚本目录的正确方法?

    我正在分发一个具有以下结构的包 mymodule mymodule init py mymodule code py scripts script1 py scripts script2 py The mymodule的子目录mymodul
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 在 Pandas 中使用正则表达式的多种模式

    我是Python编程的初学者 我正在探索正则表达式 我正在尝试从 描述 列中提取一个单词 数据库名称 我无法给出多个正则表达式模式 请参阅下面的描述和代码 描述 Summary AD1 Low free DATA space in data
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • 使用 PyTorch 分布式 NCCL 连接失败

    我正在尝试使用 torch distributed 将 PyTorch 张量从一台机器发送到另一台机器 dist init process group 函数正常工作 但是 dist broadcast 函数中出现连接失败 这是我在节点 0
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 迭代 pandas 数据框的最快方法?

    如何运行数据框并仅返回满足特定条件的行 必须在之前的行和列上测试此条件 例如 1 2 3 4 1 1 1999 4 2 4 5 1 2 1999 5 2 3 3 1 3 1999 5 2 3 8 1 4 1999 6 4 2 6 1 5 1
  • 您可以使用关键字参数而不提供默认值吗?

    我习惯于在 Python 中使用这样的函数 方法定义 def my function arg1 None arg2 default do stuff here 如果我不供应arg1 or arg2 那么默认值None or default

随机推荐

  • OPENWRT或旁路由如果不能正常使用opkg,正确上网等的一种解决方法

    家里有个n1 我刷了个openwrt做旁路由 主路由是 AC2100 莫名其妙的无法正常使用某些功能 例如opkg updae 正确上网也不行 按照之前的教训 防火墙的设置影响较大 我用的防火墙规则是自带的lan规则 如下图所示 并不满足作
  • win11安装tensorRt成功

    1 安装cuda 查看电脑cuda版本 nvidia smi 我的是11 6 下载链接 https developer nvidia com cuda 11 6 0 download archive target os Windows ta
  • 《域渗透攻防指南》签名版预售来啦

    千呼万唤始出来 终于 在广大粉丝翘首期盼下 国内首本专门讲述域内攻防的书籍 域渗透攻防指南 在2022年最后一个月和大家见面了 为了回馈粉丝的等待 让粉丝早日拿到心仪的书 特此联合机械工业出版社弄了签名版书预售活动 数量有限 仅限前500名
  • Typescript - 枚举类型 enum,详细介绍与使用教程(快速入门)

    介绍 在任何项目开发中 我们都会遇到定义常量的情况 常量就是指不会被改变的值 TS 中我们使用 const 来声明常量 但是有些取值是在一定范围内的一系列常量 比如一周有七天 比如方向分为上下左右四个方向 这时就可以使用枚举 Enum 来定
  • JavaScript-三种弹窗方式

    JavaScript 三种弹窗方式 一 alert 带内容的弹框 用法 二 confirm 带选择的弹框 用法 专门建立的学习Q q u n 731771211 分享学习方法和需要注意的小细节 不停更新最新的教程和学习技巧 从零基础开始
  • 如何在mac上运行vue项目

    本人使用的是Mac笔记本 所以搭建Vue环境的时候遇到了一些坑 在此做下记录希望可以帮到和我一样掉坑的人 都说Vue和小程序有些地方很相似 便从朋友手里要了一个Vue的项目想着尝试看看 结果项目到手才发现坑了不是一个编辑器运行就可以解决的
  • LeetCode 236. 二叉树的最近公共祖先——Python实现(递归,哈希表)

    1 直接用递归的方法 使用递归的方法 找出二叉树中两个节点的最近公共祖先 分析如下 对于两个节点p和q的公共祖先r 他们要么在r的同一边 要么在这个节点的两边 因此 只要满足这两个条件即可 也就是说 只要 f r child p and f
  • 【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 文献来源 4 Matlab代码 数据 文章讲解 1 概述 文献来
  • slam数据集整合

    根据大家的要求 在此整合一下常用的几个数据集 我平时话太啰嗦了 这里就简单一些 为啥编辑器的分隔线都这么萌 1 Tum数据集 这个大家用的人都知道 RGB D数据集 有很多个sequence 自带Ground truth轨迹与测量误差的脚本
  • 【ElasticSearch】ElasticSearch 中使用衰减函数来完美你的搜索结果

    1 概述 转载 ElasticSearch 中使用衰减函数来完美你的搜索结果 最近的项目在原有的搜索需求增加功能 ElasticSearch 7 6 请注意 大版本不同可能参数不同 原有搜索 简单的标题 正文 全文索引 新加功能 在原有的基
  • 第十三章 网络命名空间(内核源码实现)--基于Linux3.10

    下载地址 http download csdn net detail shichaog 8620701 有两篇翻译博文 Lxc之二 网络设置 和 linuxnamespace 之使用 LXC文章中关于网络的设置是从用户空间配置的 从该文章可
  • 安装JDK7和Tomcat8.5后,Tomcat服务启动不了

    windows64位系统安装JDK7 0与Tomcat8 5 35需要注意的 一 JDK7 0和Tomcat8 5 35都要是64的版本 否则Tomcat服务会启动不了 JDK7 0如果不是64位 安装的时候会自动安装在C Program
  • Qt中正则表达式

    TOC 不积跬步 无以至千里 Qt中正则表达式 正则表达式 regular expression 就是在一个文本中匹配子字符串的一种模式 pattern 它可以简写为 regexp 一个regexp主要应用在以下几个方面 验证 一个rege
  • 数据结构c语言版如何运行程序,数据结构c语言怎么运行啊

    首先要确定你想采用线性表的顺序存储结构还是链式存储结构 以顺序存储结构为例 include include define ERROR 0 define OK 1 typedef int Status typedef int ElemType
  • pom 通用配置

  • Vue自定义指令directive(详细)

    个人网站 紫陌 笔记分享网 想寻找共同学习交流 共同成长的伙伴 请点击 前端学习交流群 1 什么是自定义指令 v 开头的行内属性 都是指令 不同的指令可以完成或实现不同的功能 除了内置指令外 Vue 也允许注册自定义指令 有的情况下 你仍然
  • 服务器上安装mpi4py

    服务器上安装mpi4py 尝试方法1 失败 python m pip install mpi4py 结果报错 缺失某一个库文件导致编译失败 解决方法 如果有权限的话可以sudo安装libopenmpi dev解决 否则只能手动编译 尝试方法
  • Python - 注释

    单行注释 comments 多行注释 comments comments 模块文档 1 用法 模块名 doc 2 显示代码块的简要说明 3 任何代码块 文件 类 函数 均可以有文档说明 不跨行 comments 跨行 comments co
  • OkHttp:自定义缓存

    设置OkHttp 的缓存策略 没网络直接读取缓存 并且设置缓存生命周期为 30s 自定义 Interceptor 请求策略 没有网络直接读取缓存 public class CacheRequestInterceptor implements
  • 目标检测算法——mmdetection下面的deformable-detr运行

    1 环境 包 版本 mmcv full 1 4 2 mmdet 2 19 1 torch 1 10 0 cu113 torchvision 0 11 1 cu113 2 文档 mmet官方文档 mmcv官方文档 源码下载 3 数据集 自定义