C# Onnx GroundingDINO 开放世界目标检测
目录
介绍
效果
模型信息
项目
代码
下载
介绍
地址:https://github.com/IDEA-Research/GroundingDINO
Official implementation of the paper "Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection"

效果

在运行程序时,要注意输入的提示词的格式,类别之间以" . "隔开,并且确保类别名称在词典文件 vocab.txt里是存在的,而且输入提示词里的类别名称是你想要检测的目标类别,否则可能会检测不到目标的。
模型信息
Model Properties
-------------------------
---------------------------------------------------------------
Inputs
-------------------------
name:img
tensor:Float[-1, 3, -1, -1]
name:input_ids
tensor:Int64[-1, -1]
name:attention_mask
tensor:Bool[-1, -1]
name:position_ids
tensor:Int64[-1, -1]
name:token_type_ids
tensor:Int64[-1, -1]
name:text_token_mask
tensor:Bool[-1, -1, -1]
---------------------------------------------------------------
Outputs
-------------------------
name:logits
tensor:Float[-1, -1, -1]
name:boxes
tensor:Float[-1, -1, 4]
---------------------------------------------------------------
项目

代码
Form1
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Onnx_Demo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
GroundingDINO groundingDINO = new GroundingDINO("model/groundingdino_swint_ogc.onnx", 0.3f, "model/vocab.txt", 0.25f, true);
string image_path = "";
string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
StringBuilder sb = new StringBuilder();
Mat image;
Mat result_image;
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = fileFilter;
if (ofd.ShowDialog() != DialogResult.OK) return;
pictureBox1.Image = null;
pictureBox2.Image = null;
txtInfo.Text = "";
image_path = ofd.FileName;
pictureBox2.Image = new Bitmap(image_path);
image = new Mat(image_path);
}
private void button3_Click(object sender, EventArgs e)
{
if (image_path == "")
{
return;
}
if (String.IsNullOrEmpty(txt_input_text.Text))
{
return;
}
pictureBox1.Image = null;
txtInfo.Text = "检测中,请稍等……";
button3.Enabled = false;
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
pictureBox1.Image = null;
}
Application.DoEvents();
String text_prompt = txt_input_text.Text;
List<Object> objects = groundingDINO.detect(image, text_prompt);
result_image = image.Clone();
sb.Clear();
for (int i = 0; i < objects.Count; i++)
{
Cv2.Rectangle(result_image, objects[i].box, new Scalar(0, 0, 255), 2);
Cv2.PutText(result_image, objects[i].text + " " + objects[i].prob.ToString("F2"), new OpenCvSharp.Point(objects[i].box.X, objects[i].box.Y), HersheyFonts.HersheySimplex, 1, new Scalar(0, 0, 255), 2); ;
sb.AppendLine(objects[i].text + " " + objects[i].prob.ToString("F2"));
}
pictureBox1.Image = new Bitmap(result_image.ToMemoryStream());
button3.Enabled = true;
txtInfo.Text = sb.ToString();
}
private void Form1_Load(object sender, EventArgs e)
{
image_path = "test_img/cat_dog.jpeg";
pictureBox2.Image = new Bitmap(image_path);
image = new Mat(image_path);
}
}
}
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace Onnx_Demo
{public partial class Form1 : Form{public Form1(){InitializeComponent();}GroundingDINO groundingDINO = new GroundingDINO("model/groundingdino_swint_ogc.onnx", 0.3f, "model/vocab.txt", 0.25f, true);string image_path = "";string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";StringBuilder sb = new StringBuilder();Mat image;Mat result_image;private void button2_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;pictureBox1.Image = null;pictureBox2.Image = null;txtInfo.Text = "";image_path = ofd.FileName;pictureBox2.Image = new Bitmap(image_path);image = new Mat(image_path);}private void button3_Click(object sender, EventArgs e){if (image_path == ""){return;}if (String.IsNullOrEmpty(txt_input_text.Text)){return;}pictureBox1.Image = null;txtInfo.Text = "检测中,请稍等……";button3.Enabled = false;if (pictureBox1.Image != null){pictureBox1.Image.Dispose();pictureBox1.Image = null;}Application.DoEvents();String text_prompt = txt_input_text.Text;List<Object> objects = groundingDINO.detect(image, text_prompt);result_image = image.Clone();sb.Clear();for (int i = 0; i < objects.Count; i++){Cv2.Rectangle(result_image, objects[i].box, new Scalar(0, 0, 255), 2);Cv2.PutText(result_image, objects[i].text + " " + objects[i].prob.ToString("F2"), new OpenCvSharp.Point(objects[i].box.X, objects[i].box.Y), HersheyFonts.HersheySimplex, 1, new Scalar(0, 0, 255), 2); ;sb.AppendLine(objects[i].text + " " + objects[i].prob.ToString("F2"));}pictureBox1.Image = new Bitmap(result_image.ToMemoryStream());button3.Enabled = true;txtInfo.Text = sb.ToString();}private void Form1_Load(object sender, EventArgs e){image_path = "test_img/cat_dog.jpeg";pictureBox2.Image = new Bitmap(image_path);image = new Mat(image_path);}}
}
下载
源码下载
相关文章:
C# Onnx GroundingDINO 开放世界目标检测
目录 介绍 效果 模型信息 项目 代码 下载 介绍 地址:https://github.com/IDEA-Research/GroundingDINO Official implementation of the paper "Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection" 效果 …...
PyCharm / DataSpell 导入WSL2 解析器,实现GPU加速
PyCharm / DataSpell 导入WSL2 解析器的实现 Windows的解析器不好么?设置WSL2和实现GPU加速为PyCharm / DataSpell 设置WSL解析器设置Interpreter Windows的解析器不好么? Windows上的解析器的确很方便,也省去了我们很多的麻烦。但是WSL2的解…...
Android矩阵Matrix裁切setRectToRect拉伸Bitmap替代Bitmap.createScaledBitmap缩放,Kotlin
Android矩阵Matrix裁切setRectToRect拉伸Bitmap替代Bitmap.createScaledBitmap缩放,Kotlin class MyImageView : AppCompatImageView {private var mSrcBmp: Bitmap? nullprivate var testIV: ImageView? nullconstructor(ctx: Context, attrs: AttributeSet) :…...
TensorFlow2实战-系列教程11:RNN文本分类3
🧡💛💚TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 6、构建训练数据 所有的输入样本必须都是相同shape(文本长度,…...
故障诊断 | 一文解决,RF随机森林的故障诊断(Matlab)
效果一览 文章概述 故障诊断 | 一文解决,RF随机森林的故障诊断(Matlab) 模型描述 随机森林(Random Forest)是一种集成学习(Ensemble Learning)方法,常用于解决分类和回归问题。它由多个决策树组成,每个决策树都独立地对数据进行训练,并且最终的预测结果是由所有决策…...
DAO设计模式
概念:DAO(Data Access Object) 数据库访问对象,**面向数据库SQL操作**的封装。 (一)场景 问题分析 在实际开发中,针对一张表的复杂业务功能通常需要和表交互多次(比如转账)。如果每次针对表的…...
【Midjourney】新手指南:参数设置
1.--aspect 或 --ar 用于设置图片长宽比,例如 --ar 16:9就是设置图片宽为16,高为9 2.--chaos 用于设置躁点,噪点值越高随机性越大,取值为0到100,例如 --chaos 50 3.--turbo 覆盖seetings的设置并启用极速模式生成…...
阿里云a10GPU,centos7,cuda11.2环境配置
Anaconda3-2022.05-Linux-x86_64.sh gcc升级 centos7升级gcc至8.2_centos7 yum gcc8.2.0-CSDN博客 paddlepaddle python -m pip install paddlepaddle-gpu2.5.1.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html 报错 ImportError: libssl.so…...
RTSP/Onvif协议视频平台EasyNVR激活码授权异常该如何解决
TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端…...
React16源码: React中event事件对象的创建过程源码实现
event 对象 1 ) 概述 在生产事件对象的过程当中,要去调用每一个 possiblePlugin.extractEvents 方法现在单独看下这里面的细节过程,即如何去生产这个事件对象的过程 2 )源码 定位到 packages/events/EventPluginHub.js#L172 f…...
深度学习(12)--Mnist分类任务
一.Mnist分类任务流程详解 1.1.引入数据集 Mnist数据集是官方的数据集,比较特殊,可以直接通过%matplotlib inline自动下载,博主此处已经完成下载,从本地文件中引入数据集。 设置数据路径 from pathlib import Path# 设置数据路…...
AI工具【OCR 01】Java可使用的OCR工具Tess4J使用举例(身份证信息识别核心代码及信息提取方法分享)
Java可使用的OCR工具Tess4J使用举例 1.简介1.1 简单介绍1.2 官方说明 2.使用举例2.1 依赖及语言数据包2.2 核心代码2.3 识别身份证信息2.3.1 核心代码2.3.2 截取指定字符2.3.3 去掉字符串里的非中文字符2.3.4 提取出生日期(待优化)2.3.5 实测 3.总结 1.简…...
【MySQL复制】半同步复制
介绍 除了内置的异步复制之外,MySQL 5.7 还支持通过插件实现的半同步复制接口。本节讨论半同步复制的概念及其工作原理。接下来的部分将涵盖与半同步复制相关的管理界面,以及如何安装、配置和监控它。 异步复制 MySQL 复制默认是异步的。源服务器将事…...
PHP面试知识点--echo、print、print_r、var_dump区别
echo、print、print_r、var_dump 区别 echo 输出单个或多个字符,多个使用逗号分隔无返回值 echo "String 1", "String 2";print 只可以输出单个字符返回1,因此可用于表达式 print "Hello"; if ($expr && pri…...
centos 7 部署若依前后端分离项目
目录 一、新建数据库 二、修改需求配置 1.修改数据库连接 2.修改Redis连接信息 3.文件路径 4.日志存储路径调整 三、编译后端项目 四、编译前端项目 1.上传项目 2.安装依赖 3.构建生产环境 五、项目部署 1.创建目录 2.后端文件上传 3. 前端文件上传 六、服务启…...
RFID手持终端_智能pda手持终端设备定制方案
手持终端是一款多功能、适用范围广泛的安卓产品,具有高性能、大容量存储、高端扫描头和全网通数据连接能力。它能够快速平稳地运行,并提供稳定的连接表现和快速的响应时,适用于医院、物流运输、零售配送、资产盘点等苛刻的环境。通过快速采集…...
51单片机学习——矩阵按键
目录 gitee链接 小程吃饭饭 (xiaocheng-has-a-meal) - Gitee.comhttps://gitee.com/xiaocheng-has-a-meal 1.图~突突突突突 矩阵键盘原理图 矩阵键盘的实物图 2.矩阵键盘 引入~啦啦啦啦啦 原理~沥沥沥沥沥 代码~嗷嗷嗷嗷嗷 【1】延时函数 【2】 LCD1602 【3】检测按…...
重写Sylar基于协程的服务器(1、日志模块的架构)
重写Sylar基于协程的服务器(1、日志模块的架构) 重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务器(1、日志模…...
ElementUI Form:Radio 单选框
ElementUI安装与使用指南 Radio 单选框 点击下载learnelementuispringboot项目源码 效果图 el-radio.vue (Radio 单选框)页面效果图 项目里el-radio.vue代码 <script> export default {name: el_radio,data() {return {radio: 1,radio2: 2,ra…...
react-activation实现缓存,且部分页面刷新缓存,清除缓存
1.安装依赖 npm i -S react-activation2.使用AliveScope 包裹根组件 import { AliveScope } from "react-activation" <AliveScope><Router><Switch><Route exact path"/" render{() > <Redirect to"/login" push …...
Halcon 9点标定保姆级教程:从螺丝批头点到机械手精准定位(附源码)
Halcon 9点标定实战指南:从硬件准备到误差优化的全流程解析 在工业自动化领域,视觉引导的机械手定位精度直接影响生产质量。许多工程师第一次接触Halcon标定时,往往被理论公式和算法流程所困扰,却忽略了现场实施中最关键的实操细节…...
从开箱到调试:手把手带你玩转PLS UAD2Pro调试器与TC277评估板
从开箱到调试:手把手带你玩转PLS UAD2Pro调试器与TC277评估板 第一次拿到专业调试工具时,那种既兴奋又忐忑的心情我至今记忆犹新。作为嵌入式开发领域的"瑞士军刀",PLS UAD2Pro调试器搭配Infineon TC277评估板的组合,能…...
Pixel Script Temple 后端开发实战:快速生成RESTful API接口代码
Pixel Script Temple 后端开发实战:快速生成RESTful API接口代码 1. 为什么我们需要代码生成工具 作为一名后端开发者,你是否经常陷入这样的困境:每次新项目启动,都要重复编写相似的控制器、服务层和模型代码?或者当…...
AI入门必看|一文搞懂人工智能是什么,小白也能秒懂
前言:随着ChatGPT、自动驾驶、AI绘画的普及,人工智能已经从“高大上的科技概念”走进了我们的日常生活,但很多小白面对“人工智能”四个字,还是会感到迷茫——它到底是什么?能做什么?和我们普通人有什么关系…...
SmartX 榫卯企业云平台 + 亚信安全 DeepSecurity 企业云安全防护联合解决方案
近日,北京志凌海纳科技股份有限公司(以下简称“SmartX”)与亚信安全科技股份有限公司(以下简称“亚信安全”)携手推出企业云安全防护联合解决方案。该方案将 SmartX 榫卯企业云平台与亚信安全的专业云主机安全产品 Dee…...
深入解析dify中的TF-IDF与余弦相似度在RAG重排序中的应用
1. 理解RAG中的重排序问题 在检索增强生成(RAG)系统中,重排序(rerank)是一个关键环节。想象一下你在图书馆用搜索引擎找资料:系统先找到100本可能相关的书,但真正对你有用的可能只有前3本。重排…...
OpenClaw版本升级:Qwen2.5-VL-7B兼容性测试与迁移指南
OpenClaw版本升级:Qwen2.5-VL-7B兼容性测试与迁移指南 1. 升级前的准备工作 上周我在本地开发环境遇到了一个棘手问题——现有的OpenClaw版本无法正确调用新部署的Qwen2.5-VL-7B多模态模型。这促使我开始了这次版本升级之旅,过程中积累了不少实战经验想…...
从平面到立体:用Origin打造揭示乳液配方奥秘的3D三元曲面图
1. 为什么需要从平面走向立体? 在乳液配方研发过程中,我们常常需要同时调整三种成分的配比。传统的三元等高线图虽然能展示成分与性能的关系,但就像看一张纸质地图和用手机导航的区别——前者只能告诉你哪里有山,后者却能让你直观…...
芯片制造中的3-sigma到底有多重要?从良率到可靠性全解析
芯片制造中的3-sigma到底有多重要?从良率到可靠性全解析 在半导体行业,每一片晶圆都承载着数以亿计的晶体管,而每个晶体管的性能波动都可能影响最终产品的良率和可靠性。想象一下,当你在使用智能手机时,是否曾思考过为…...
深入解析Doom3.gpl数学库:向量、矩阵与四元数的高效实现
深入解析Doom3.gpl数学库:向量、矩阵与四元数的高效实现 【免费下载链接】doom3.gpl Doom 3 GPL source release 项目地址: https://gitcode.com/gh_mirrors/do/doom3.gpl Doom3.gpl作为经典游戏引擎的开源项目,其数学库为3D图形渲染、物理模拟和…...
