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;抖音的日活…

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

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

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; 方法一…

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

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

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…

使用Redis构建简易社交网站(2)-处理用户关系

目的 本文目的&#xff1a;实现用户关注和取消关注功能。&#xff08;完整代码附在文章末尾&#xff09; 相关知识 在我之前的文章 《使用Redis构建简易社交网站(1)-创建用户与动态界面》中提到了如何实现简易社交网站中创建新用户和创建新动态功能。 那这篇文章将教会你掌…

第二证券:政策稳预期强信心 民间投资结构性亮点纷呈

民营经济是中国特色社会主义商场经济的重要组成部分&#xff0c;是推动中国式现代化和高质量展开的生力军。本年以来&#xff0c;国内外环境仍然复杂多变&#xff0c;我国民营企业展开耐性不减。受访专家标明&#xff0c;跟着支撑民营经济展开的系列严峻抉择计划安置执行落地&a…

js vue 输入正确手机号/邮箱后,激活“发送验证码”按钮

按钮禁止点击状态&#xff1a; 按钮能够点击状态&#xff1a; 我采用的方式是监听手机号/邮箱输入框的输入事件&#xff0c;即实判断用户输入的数据是否满足规则&#xff0c;如果满足手机号/邮箱规则&#xff0c;则激活“获取验证码”按钮。 话不多说&#xff0c;上代码 样式…

pWnOS v2.0

该靶机绑定了静态IP地址 10.10.10.100&#xff0c;所以这里需要修改我们的网络配置&#xff01;整个网段修改为10.10.10.0/24 信息收集 主机存活探测 arp-scan -l 端口信息探测 nmap -sT --min-rate 10000 -p- 10.10.10.100 &#xff08;只开放了22 80端口&#xff09; 服务…