DINO推理模块实现

news2024/12/24 20:54:20

如何将一个模型真正的投入应用呢?即我们常说的推理模块,前面博主已经介绍了如何使用DETR进行推理,今天博主则介绍DINO的推理实现过程:
其实在DINO的代码中已经给出了推理模块的实现,这里博主是将其流程进行梳理,并对其中的问题给出解决方案。

首先是所需的导入包:

import torch, json
from main import build_model_main
from util.slconfig import SLConfig
from util.visualizer import COCOVisualizer
from util import box_ops

随后是构建模型与权重文件加载,指的注意的是要想DINO进行推理,就需要将推理代码放到DINO项目中,博主想将模型与网络分离开进而将其部署在云端,进而开发一个目标检测的接口。

model_config_path = "config/DINO/DINO_4scale.py" 
# change the path of the model config file
model_checkpoint_path = "checkpoint_best_regular.pth" # change 
args = SLConfig.fromfile(model_config_path)
args.device = 'cuda'
model, criterion, postprocessors = build_model_main(args)
checkpoint = torch.load(model_checkpoint_path)
model.load_state_dict(checkpoint['model'])
_ = model.eval()#开启推理

引入COCO数据集中的标注类别名称,博主使用的是COCO缩减数据集,大家可以按照这个格式进行制作。

with open('util/coco_name.json') as f:
     id2name = json.load(f)
     id2name = {int(k):v for k,v in id2name.items()}

数据集读取文件格式:

{"1": "car",  "2": "truck","3": "bus"}

接下来开始读取图片开始推理,记住一定要开启torch.no_grad,意为不计算梯度,因为这里的推理是不需要梯度更新的,否则会爆显存。

with torch.no_grad():

加载图像进行推理:

from PIL import Image
    import datasets.transforms as T
    image = Image.open("figs/1.jpg").convert("RGB")  # load image
    # transform images
    transform = T.Compose([
        T.RandomResize([800], max_size=1333),
        T.ToTensor(),
        T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ])
    image, _ = transform(image, None)
    # predict images
    output = model.cuda()(image[None].cuda())
    output = postprocessors['bbox'](output, torch.Tensor([[1.0, 1.0]]).cuda())[0]
    # visualize outputs
    thershold = 0.3  # set a thershold
    vslzr = COCOVisualizer()
    scores = output['scores']
    labels = output['labels']
    boxes = box_ops.box_xyxy_to_cxcywh(output['boxes'])
    select_mask = scores > thershold

    box_label = [id2name[int(item)] for item in labels[select_mask]]
    pred_dict = {
        'boxes': boxes[select_mask],
        'size': torch.Tensor([image.shape[1], image.shape[2]]),
        'box_label': box_label
    }
    vslzr.visualize(image, pred_dict, savedir=None, dpi=100)

推理展示图如下:

在这里插入图片描述

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

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

相关文章

w3af启动后提示“Traceback (most recent call last)”

第一次提示 /usr/bin/env: “python”: 没有那个文件或目录 一看这提示就是python目录没有引用对,所以建一个软链接 软连接参考:每天学命令-ln 软硬链接 | 夜云泊个人博客 命令如下 whereis python3 sudo ln -s /usr/bin/python3 /usr/bin/python 软…

OpenCV阈值处理(threshold函数、自适应阈值处理、Otsu处理)

目录 阈值处理 一.threshold函数 1.二值化阈值处理(cv2.THRESH_BINARY) 2.反二值化阈值处理( cv2.THRESH_BINARY_INV) 3.截断阈值化处理(cv2.THRESH_TRUNC) 4.超阈值零处理(cv2.THRESH_TOZ…

chatgpt赋能python:Python遍历1到10:使用循环语句掌握基础编程技能

Python遍历1到10: 使用循环语句掌握基础编程技能 Python是一种高级的编程语言,常被用于大数据分析、机器学习、Web开发和自然语言处理。无论您是新手还是有经验的编程工程师,掌握Python基础编程技能是非常重要的,其中之一就是学习如何遍历1到…

【2022 JCR 期刊影响因子】(三)地学综合 (GEOSCIENCES, MULTIDISCIPLINARY)

原文链接: 【2022 JCR 期刊影响因子】(三)地学综合 微信公众号同步更新 地信学子GISer and Coder 2022 JCR 期刊影响因子刚刚发布,今年的影响因子只保留1位小数。地学综合领域的 SCIE 收录期刊的影响因子如下。 微信公众号同步更…

使用 Jetpack Compose 构建 Spacer

欢迎阅读本篇关于如何使用 Jetpack Compose 构建 Spacer 的博客。Jetpack Compose 是 Google 的现代 UI 工具包,主要用于构建 Android 界面。其声明式的设计使得 UI 开发更加简洁、直观。 一、什么是 Spacer? 在 UI 设计中,我们通常需要在不…

一、枚举类型——使用二维数组分发

我们发现每个枚举实例都持有一个固定的值(基于它的声明顺序),该值由 ordinal() 方法生成,因此可以进一步简化该方案。使用一个二维数组将竞争者映射到结果,便可以实现最简单易懂的解决方案(而且有可能是最快的&#xf…

抖音团购功能本地生活服务商开通

抖音团购功能对于本地生活服务商在市场上的前景是积极的,有以下几个方面的优势: 广泛的用户基础:抖音是全球范围内拥有庞大用户基础的社交媒体平台之一。通过在抖音上开展团购活动,可以接触到大量的活跃用户,提升品…

PHP 图书管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 图书管理系统 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 源码下载 https://download.csdn.net/download/qq_41221322/87959622https://download…

adb shell top -m 10 -s 1 -d 1 -o %CPU,%MEM,TIME+,PID,COMMAND,CMDLINE

adb shell top -m 10 -s 1 -d 1 -o %CPU,%MEM,TIME,PID,COMMAND,CMDLINE adb shell top -m 10 -s 1 -d 1 -o %CPU,%MEM,TIME,PID,COMMAND,CMDLINE -m 进程数 -s 按照第几列排序,1是按照第一列排序。 -d delay 周期1秒 -o %CPU,cpu占比。 %MEM 内存占…

【OpenCV • c++】基础图像的绘制

🚀 个人简介:CSDN「博客新星」TOP 10 , C/C 领域新星创作者💟 作 者:锡兰_CC ❣️📝 专 栏:【OpenCV • c】计算机视觉🌈 若有帮助,还请关注➕点赞➕收藏&#xff…

element form表单触发校验

未操作情况下,表单触发校验,此时需要清除这一项 一定要在数据处理完后在进行清除校验,否则会不生效 this.form result;if (!this.form.item5List) {this.$nextTick(() > {this.$refs.form.clearValidate(item5List)})}

idea里发送简单邮件的模板

这是一个idea里发送简单邮件的模板,后续会更新在项目里如何进行运用。 带附件的暂时不演示。 这属于个小demo,后续还会抽出专门的properties进行存储对应的授权码邮箱等信息,也会封装一个发送邮件的方法,供其他的发送邮件业务调用…

空气净化器语音播放方案,低功耗NV400F语音芯片

随着科技的不断进步和人们对生活质量的要求不断提高,空气净化器也逐步进入人们的日常生活中。而随着人工智能技术的发展,越来越多的家电设备开始具备语音交互的功能,极大地方便了用户的使用体验。在实现空气净化器的语音播放功能上&#xff0…

MySQL数据库——高级查询语句

MySQL数据库——高级查询语句 一、数据库查询二、高效查询方式1.指定指字段进行查询——SELECT2.对字段进行去重查询——DISTINCT3.条件查询——where3.逻辑关系的增加查询——and 和 or4.已知值的数据记录查询——IN5.范围内数据记录查询——BETWEEN6.通配符查询7.关键字排序查…

redis源码调试---vscode使用技巧-----C语言跳转到函数定义

目录 1 安装插件2 对于C语言代码,linux安装bear3 bear make4 指定 路径,按住ctrl加左键单击就可以方便快捷的跳转到函数定义了5 C不需要像上面那样做 1 安装插件 C/Cv1.16.3 clangd 2 对于C语言代码,linux安装bear sudo apt install bear…

MIT 6.830数据库系统 -- lab two

MIT 6.830数据库系统 -- lab two 项目拉取Lab Two实现提示练习一 -- Filter and Join练习二 -- Aggregates练习三 -- HeapFile Mutability练习四 -- Insertion & deletion练习五 -- Page eviction练习六 -- Query walkthrough练习七 - 查询解析 项目拉取 原项目使用ant进行…

ES基本操作(JavaAPI篇)

引入jar包依赖 <dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.0</version></dependency><!-- es客户端 --><dependency><groupI…

ueditor 百度富文本编辑器后端配置(上传图片)

在前端已经写好的情况下进行以下操作 1&#xff0c;在public/assets/addons/ueditor内新建 config.json并加入以下代码 {"imageActionName": "uploadimage","imageFieldName": "upfile","imageMaxSize": 2048000,"im…

LabVIEW开发基于直流电机的高精度定位火星车

LabVIEW开发基于直流电机的高精度定位火星车 火星探测器一直用于火星探测的自动无人驾驶车辆。这些机器人远程车辆用于避免对人类不公平的条件&#xff0c;并减少与之相关的危险。这一研究领域引起了许多科学家和研究人员的注意&#xff0c;这导致了这一技术领域的显着进步。已…

MySQL-SQL InnoDB引擎 (中)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…