赞
踩
目录
地址: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]
---------------------------------------------------------------
- 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);
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。