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

news2024/11/19 5:48:55

1、环境

版本
mmcv-full1.4.2
mmdet2.19.1
torch1.10.0+cu113
torchvision0.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、结果

预测结果还是比较准确的

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

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

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

相关文章

STM32中断使用NVIC

抢占优先级和响应优先级 值越小优先级越高,抢占优先级高就可以的打断抢占优先级低的;但同一个抢占优先级,高响应优先级并不能打断低响应优先级;当然中断同时发生的响应优先级高的先执行。简单理解为:抢占优先级能控制…

RV1126笔记十七:吸烟行为检测及部署<五>

若该文为原创文章,转载请注明原文出处。 ubuntu16.04上搭建转化成RKNN环境并把onnx转成RKNN模型(ubuntu16.04) onnx模型转rknn模型需要用到py3.8,所以搭建环境在转换,下面全部操作都是虚拟机下进行。 注意:转模型用py3.6, 训练用py3.8 一、miniconda安装 1、下载地址…

论文投稿指南——中文核心期刊推荐(自然科学总论)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

基于python的AD-census立体匹配算法实现

文章目录前言一、AD-census是什么?1.代价计算2.代价聚合3.视差优化4.视差后处理二、基于python的AD-census立体匹配算法实现前言 AD-Census算法来自于中国学者Xing Mei等在ICCV2011发表的论文《On Building an Accurate Stereo Matching System on Graphics Hardwar…

多类型随机图形生成方法及应用研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

Linux-5 基础命令

Linux-5 基础命令 查看类命令 此类命令仅能查看文件中的内容 ls是用来查看目录中的内容cat是用来查看文件中的内容 查看文件 cat 选项 -n:显示文件内容的行数-A:显示文件中的特殊字符(如果从Windows拷贝配置文件到Linux,很容易出…

化学试剂Biotin-PEG-COOH,Biotin-PEG-acid,生物素-聚乙二醇-羧基

英文名称:Biotin-PEG-COOH,Biotin-PEG-acid 中文名称:生物素-聚乙二醇-羧基 生物素-PEG-COOH是一种含有生物素和羧酸的线性杂双功能PEG试剂。它是一种有用的带有PEG间隔基的交联或生物结合试剂。生物素能以高特异性和亲和力与亲和素和链霉亲…

C++:STL:常用容器(上):string

1:string容器 1.1 string基本概念 本质: string是C风格的字符串,而string本质是一个类 string和char* 区别 1:char* 是一个指针 2:string是一个类,类内部封装了 char* 管理这个字符串,是一个 …

5G无线技术基础自学系列 | 5G网络接入问题分析

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 5G网络的接入失败或者接入时延过大都会…

实现安卓LED设备驱动:不写一行代码

文章目录一、前言二、准备工作2.1 内核版本2.2 内核文档:bindings->leds2.3 文档解析: leds-gpio.txt三、编写DTS3.1 查原理图,挑选GPIO3.2 编写DTS文件四、编译测试4.1 编译dt.img4.2 烧录dt.img五、基于fs的测试5.1 测试命令5.2 **点灯效…

将单向链表按照目标值value 划分成左边小,中间等,右边大的形式,给定一个单链表,判断单链表的值是否是回文结构【图文解释包你看懂】

将单向链表按照目标值value 划分成左边小,中间等,右边大的形式 例如 1 -> 3 -> 5-> 3 -> 7 按照value 3划分 1-> 3-> 3 -> 5 -> 7 解题思路:给定值为 value 用6个变量,分别表示 小于value 的Head sH &…

2023年天津中德应用技术大学专升本专业课考试具体安排及准考证

2023年天津中德应用技术大学高职升本科专业课考试准考证下载及考生须知 一、准考证下载打印 12月24日12点开始,专业课报名审核通过的考生,登录学校专业课报名系统(114.115.135.236/jobgroup/f),点击“准考证”&#xf…

Qt之悬浮球菜单

一、概述 最近想做一个炫酷的悬浮式菜单,考虑到菜单展开和美观,所以考虑学习下Qt的动画系统和状态机内容,打开QtCreator的示例教程浏览了下,大致发现教程中2D Painting程序和Animated Tiles程序有所帮助,如下图所示&a…

Java反射面试题

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java面试题…

科技交流英语(2022秋)Unit 6 test

科技交流英语(2022秋)Unit 6 test 简介 由电子科技大学组织开设,授课教师为李京南、庞慧、刘兆林等5位老师。 课程介绍 英语广泛用于工程技术领域的国际交流。如何使用简洁的语言清楚地传递信息是工程师在国际舞台上常常面临的问题。本课…

【Vue】Vue重写教室管理系统的前端网页V1(前后端分离)--20221222

项目说明 目的 练习并熟悉Vue2 的API,来为Vue项目做准备: 插值语法插槽props和data父子组件通信Ajax异步请求数据生命周期函数methods方法computed属性vue-router、路由守卫、query/params传参、编程函数式路由模拟后端服务器传送数据打包项目 需要加…

Tableau可视化设计案例-06Tableau填充地图,多维地图,混合地图

文章目录Tableau可视化设计案例06 填充地图,多维地图,混合地图1.填充地图1.1 各省售电量填充地图 地图格式设置2.多维地图2.1 各省售电量多维地图3.混合地图3.1 各省售电量混合地图Tableau可视化设计案例 本文是Tableau的案例,为B站视频的笔…

如何花最少的资源遍历二叉树

文章目录一、递归遍历二叉树1.1 前序遍历1.2 中序遍历1.3 后序遍历二、非递归遍历二叉树2.1 前序遍历2.2 中序遍历2.3 后序遍历三、高效的 Morris 遍历3.1 前序遍历3.2 中序遍历3.3 后序遍历关于二叉树的遍历也是面试过程中非常有可能考的话题。常见的简单的递归遍历二叉树&…

头条号权重高有什么优势?头条权重在线查询

头条号权重是根据你的关键词排名、预估流量等综合评估计算出的一个"权重值",关键词指数越大,排名越好,预估的流量就越多,权重也就越高。 如果是查询头条号权重较少,可以看看这3个方法: 1、指…

flutter 环境搭建

一、简介 Flutter 是谷歌开发的一款开源、免费的,基于 Dart 语言的U1框架,可以快速在i0S和Android上构建高质量的原生应用。 它最大的特点就是跨平台和高性能。Dart是由谷歌,在2011 年开发的计算机编程语言,它可以被用于Web、服务器、移动应…