C# OpenVINO 模型信息查看工具

目录

效果

支持模型

项目

代码

下载


C# OpenVINO 模型信息查看工具

效果

支持模型

ONNX format (*.onnx)
PDPD (*.pdmodel)
TF (*.pb)
TFLite (*.tflite) 

项目

代码

using Sdcb.OpenVINO;
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace OpenVINO_Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /*
        模型可选类型
        ONNX format (*.onnx)
        PDPD (*.pdmodel)
        TF (*.pb)
        TFLite (*.tflite)
         */
        string fileFilter = "*.*|*.onnx;*.pdmodel;*.pb;*.tflite;*.tiff;";

        StringBuilder sb = new StringBuilder();
        string model_path = "";

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = fileFilter;
            if (ofd.ShowDialog() != DialogResult.OK) return;

            txtInfo.Text = "";
            model_path = ofd.FileName;
            txtPath.Text = model_path;

            txtInfo.Text = "正在读取,请稍后……";
            Application.DoEvents();

            sb.Clear();
            txtInfo.Text = "";

            try
            {
                var v = OVCore.Version.ToString();
                sb.AppendLine(v);
                sb.AppendLine("---------------------------------------------------------------");
                var ad = OVCore.Shared.AvailableDevices;
                sb.AppendLine("本机可用设备");
                foreach (var item in ad)
                {
                    sb.AppendLine(item.ToString());
                }
                sb.AppendLine("---------------------------------------------------------------");

                Model rawModel = OVCore.Shared.ReadModel(model_path);
                //Inputs
                sb.AppendLine("");
                sb.AppendLine("Inputs");
                sb.AppendLine("-------------------------");

                IOPort temp;
                Dimension[] dim;
                IEnumerator<IOPort> items = rawModel.Inputs.GetEnumerator();
                while (items.MoveNext())
                {
                    temp = items.Current;
                    sb.AppendLine("name:" + temp.Name);
                    dim = temp.PartialShape.Dimensions;
                    sb.AppendLine("tensor:" + temp.ElementType + "[" + String.Join(", ", dim) + "]");
                    sb.AppendLine("");
                }
                sb.AppendLine("---------------------------------------------------------------");

                //Outputs
                sb.AppendLine("");
                sb.AppendLine("Outputs");
                sb.AppendLine("-------------------------");
                items = rawModel.Outputs.GetEnumerator();
                while (items.MoveNext())
                {
                    temp = items.Current;
                    sb.AppendLine("name:" + temp.Name);
                    dim = temp.PartialShape.Dimensions;
                    sb.AppendLine("tensor:" + temp.ElementType + "[" + String.Join(", ", dim) + "]");
                    sb.AppendLine("");
                }
                sb.AppendLine("---------------------------------------------------------------");
                txtInfo.Text = sb.ToString();

            }
            catch (Exception ex)
            {
                txtInfo.Text = "加载模型出错,请选择正确的模型!\r\n";
                txtInfo.Text += "错误信息:\r\n";
                txtInfo.Text += ex.Message;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }
    }
}

using Sdcb.OpenVINO;
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;namespace OpenVINO_Demo
{public partial class Form1 : Form{public Form1(){InitializeComponent();}/*模型可选类型ONNX format (*.onnx)PDPD (*.pdmodel)TF (*.pb)TFLite (*.tflite)*/string fileFilter = "*.*|*.onnx;*.pdmodel;*.pb;*.tflite;*.tiff;";StringBuilder sb = new StringBuilder();string model_path = "";private void button1_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;txtInfo.Text = "";model_path = ofd.FileName;txtPath.Text = model_path;txtInfo.Text = "正在读取,请稍后……";Application.DoEvents();sb.Clear();txtInfo.Text = "";try{var v = OVCore.Version.ToString();sb.AppendLine(v);sb.AppendLine("---------------------------------------------------------------");var ad = OVCore.Shared.AvailableDevices;sb.AppendLine("本机可用设备");foreach (var item in ad){sb.AppendLine(item.ToString());}sb.AppendLine("---------------------------------------------------------------");Model rawModel = OVCore.Shared.ReadModel(model_path);//Inputssb.AppendLine("");sb.AppendLine("Inputs");sb.AppendLine("-------------------------");IOPort temp;Dimension[] dim;IEnumerator<IOPort> items = rawModel.Inputs.GetEnumerator();while (items.MoveNext()){temp = items.Current;sb.AppendLine("name:" + temp.Name);dim = temp.PartialShape.Dimensions;sb.AppendLine("tensor:" + temp.ElementType + "[" + String.Join(", ", dim) + "]");sb.AppendLine("");}sb.AppendLine("---------------------------------------------------------------");//Outputssb.AppendLine("");sb.AppendLine("Outputs");sb.AppendLine("-------------------------");items = rawModel.Outputs.GetEnumerator();while (items.MoveNext()){temp = items.Current;sb.AppendLine("name:" + temp.Name);dim = temp.PartialShape.Dimensions;sb.AppendLine("tensor:" + temp.ElementType + "[" + String.Join(", ", dim) + "]");sb.AppendLine("");}sb.AppendLine("---------------------------------------------------------------");txtInfo.Text = sb.ToString();}catch (Exception ex){txtInfo.Text = "加载模型出错,请选择正确的模型!\r\n";txtInfo.Text += "错误信息:\r\n";txtInfo.Text += ex.Message;}}private void Form1_Load(object sender, EventArgs e){}}
}

下载

源码下载

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

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

相关文章

数据结构与算法(五)回溯算法(Java)

目录 一、简介1.1 定义1.2 特性1.3 结点知识补充1.4 剪枝函数1.5 使用场景1.6 解空间1.7 实现模板 二、经典示例2.1 0-1 背包问题2.2 N皇后问题 一、简介 1.1 定义 回溯法&#xff08;back tracking&#xff09;是一种选优搜索法&#xff0c;又称为试探法&#xff0c;按选优条…

Linux环境下的MySQL安装

文章目录 前提说明1.卸载内置环境2.检查系统安装包3.卸载这些默认安装包4.获取MySQL官方yum源5.安装MySQLyum源&#xff0c;对比前后yum源6.查看yum源是否生效7.安装MySQL服务8.查看相对应的配置文件9.启动服务10.查看启动服务11.登录方法一12.登录方法二13.登录方法三14.设置开…

两种做法——判断是否是二叉搜索树

https://leetcode.cn/problems/validate-binary-search-tree/description/?envTypestudy-plan-v2&envIdtop-interview-150 方法一&#xff1a;中序遍历 考虑只有两个节点和一个结点的情况&#xff0c;可以头尾各加一个最大最小值&#xff0c;不用特判了&#xff0c;也可…

谷达冠楠:现在做抖音电商到底怎么样

随着互联网的发展&#xff0c;电商行业也在不断地壮大。而近年来&#xff0c;抖音作为一款短视频社交平台&#xff0c;也逐渐成为了电商的新兴渠道。那么&#xff0c;现在做抖音电商到底怎么样呢? 首先&#xff0c;抖音拥有庞大的用户群体。根据数据显示&#xff0c;抖音的日活…

java实现Modbus通信

java实现Modbus通信 参考链接: https://www.cnblogs.com/ioufev/p/10831289.html https://blog.csdn.net/ioufev/article/details/100554691 Modbus协议 Modbus由MODICON公司于1979年开发&#xff0c;是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的Mo…

C++中单引号‘‘和双引号““的区别

操作系统&#xff1a;Windows 10 IDE&#xff1a;CLion 单引号&#xff1a;表示一个字符&#xff0c;例如 a 双引号""&#xff1a;表示一个字符串&#xff0c;例如 "a" 在C中&#xff0c;使用双引号可以方便地创建字符串&#xff0c;而使用单引号可以方便…

Flask中redis的配置与使用

注意点&#xff1a; 在__init__.py中需要将redis_store设置成全局变量&#xff0c;这样方便其他文件导入 一、config.py import logging import os from datetime import timedeltafrom redis import StrictRedisclass Config:# 调试信息DEBUG TrueSECRET_KEY os.urandom(3…

Python语言基础知识(一)

文章目录 1、Python内置对象介绍2、标识符与变量3、数据类型—数字4、数据类型—字符串与字节串5、数据类型—列表、元组、字典、集合6、运算符和表达式7、运算符和表达式—算术运算符8、运算符和表达式—关系运算符9.1、运算符和表达式— 成员测试运算符in9.2、运算符和表达式…

领先英伟达的GPU1.6倍性能,AMD发布最强AI芯片Instinct MI300

AMD发布最强AI芯片 Instinct MI300X AI 加速器和 Instinct MI300A 数据中心 APU&#xff0c;声称比 Nvidia 的竞争 GPU 领先 1.6 倍。与 Nvidia 竞争产品相比&#xff0c;在以下几个关键方面展示了显著优势&#xff1a;配置方面 内存容量&#xff1a;MI300X&#xff1a;拥有 1…

Linux---进程管理

本章主要介绍RHEL8中如何管理并查看进程。 了解进程并查看系统中存放的进程了解进程的信号进程优先级设置 进程介绍 在 Windows中打开任务管理器就可以查看到系统中的所有进程&#xff0c;如图下图所示。 这里列出了系统中所有的进程&#xff0c;不过也可以使用命令行工具来…

leetcode刷题:611.有效三角形的个数(双指针实现)

题目地址&#xff1a;有效三角形的个数 解决此题时&#xff0c;首先需要知道的是如何判断三个数字是否能够构成三角形。 我们知道&#xff0c;三角形任意两边之和都大于第三边。所以判断三个数字是否能构成三角形需要进行三次比较&#xff08;最基础的思路&#xff09; 方法一…

面试篇算法:(一:排序算法)

一&#xff1a;冒泡排序 int[] a{2,5,3,7,4,8}for(i0;i<a.length;i) {for(j0;j<a.length-i-1;j){if(a[j]>a[j1])(int tempa[j];a[j]a[j1];a[j1]temp;)} }原理&#xff1a;进行多次的比较&#xff0c;每次将最大的值选取出来&#xff0c;放在最后面。在进行多次比较。…

高精度加法,减法,乘法,除法(上)(C语言)

前言 加&#xff0c;减&#xff0c;乘&#xff0c;除这些运算我们自然信手捏来&#xff0c;就拿加法来说&#xff0c;我们要用c语言编程算ab的和&#xff0c;只需让sum ab即可&#xff0c;可是这是局限的&#xff0c;我们都知道int的表示的最大值为2147483647&#xff08;32位…

python 进程通信

1.概述 这篇文章介绍并行运算中的subprocess模块&#xff0c;subprocess 模块允许我们启动一个新进程&#xff0c;并连接到它们的输入/输出/错误管道&#xff0c;从而获取返回值。 subprocess 它可以用来调用第三方工具&#xff08;例如&#xff1a;exe、另一个python文件、命令…

kepler.gl部署在线说明文档

1 概述 1.1 介绍 1、Kepler.gl 是一个强大的开源地理空间分析工具&#xff0c;用于大规模数据集的可视化。它由 Uber 的数据可视化团队开发&#xff0c;并且是基于 Web 技术构建的。Kepler.gl 涉及到以下几个主要技术领域&#xff1a; WebGL: Kepler.gl 通过 WebGL 进行渲染…

WVP-RPO开源项目搭建实践

0.拉取代码 GitHub - 648540858/wvp-GB28181-pro: WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联&#xff0c;支持rtsp/rtmp等视频流转发到国标平台&…

解锁全球潜力:IT外包解决跨国企业海外分支的IT需求

在全球化的浪潮中&#xff0c;跨国企业为了拓展业务辐射面&#xff0c;经常在世界各地设立海外分支。然而&#xff0c;这些分支机构面临着独特的挑战&#xff0c;其中包括解决复杂的IT需求。为了更高效地应对这些挑战&#xff0c;越来越多的企业正在转向IT外包&#xff0c;以便…

sqlserver已经启动了允许远程连接,但局域网内无法访问

sqlserver已经启动了允许远程连接&#xff0c;但局域网内无法访问。 可以确认一下sqlserver browser是不是没有启动。 修改启动模式为自动试一试。

【java】Java程序员,你掌握了多线程吗?

摘要&#xff1a;互联网的每一个角落&#xff0c;无论是大型电商平台的秒杀活动&#xff0c;社交平台的实时消息推送&#xff0c;还是在线视频平台的流量洪峰&#xff0c;背后都离不开多线程技术的支持。在数字化转型的过程中&#xff0c;高并发、高性能是衡量系统性能的核心指…

科技云报道:DDR5火了!揭开下一代超高速内存的秘密

科技云报道原创。 在最新的存储市场动态中&#xff0c;存储芯片大厂的减产策略显现出其效果&#xff0c;特别是在DDR内存领域。 根据台湾工商时报的最新报道&#xff0c;第四季度的内存芯片合约价格出现了超出预期的上涨。 这一价格变动尤其在DDR5芯片上表现突出&#xff0c…