你或许也想拥有专属于自己的AI模型文件格式(可视化篇)-(5)

1.基于tflite实现前端检测算法并生成app 1 配置环境 1.1安装tensorflow+cuda+cudnn+anaconda 配置tensorflow环境,最好安装tensorflow1.X,2以上可能会遇到训练问题。 1.2 配置tensorflow object detection API 模型训练使用tensorflow object detection API。 具体配置方法可以参考如下链接配置:https://... 阅读详情

        太久才来写这个专栏的第五篇,不是我鸽了,是想要测试我那两位数粉丝有没有催更的可能,结果是显而易见的——没有!好吧,其实是可视化篇比较难,花费了比较多的时间去编写代码适配专ai模,尤其是代码调试难度高,导致花费了很多时间精力去配置调试环境,熟悉vscode对于javascript的调试。

本篇章将会讲述如何可视化我们的专属于自己的AI模型文件格式,特别是如何适配netron可视化工具。所以,对于可视化篇而言,或者就止步在这篇章了。这篇将会带你一起来可视化专ai模。

        那么,就开始吧。

一、tflite的netron适配源码解读

        首先,我们对于netron的工程结构要有一定的认识:

├── publish //发布目录
├── source // 源代码目录,构成应用程序的代码都放在此处
│   ├── tflite.js
│   ├── tflite-schema.js
│   ├── tflite-metedata.json
│   └── .....其他的框架源码
│       
├── test // 
├── tools //工具包,存放了一些升级的代码和工具
└── venv

        首先官网没有说明如何把自定义的模型格式通过netron适配出来,因此我们想要是适配自己的模型的最好的方法就是借鉴,这里我选择了tensorflow lite作为参考对象进行源码解读,你可以配合上一篇进行配合解读,以此更好理解。

        我们通过浏览器其实可是直接去调试netron,我们只需要用浏览器打开source/index.html就可以了,然后在打开浏览器的开发者模式,接着断点在tflite.js的如下所示的位置(也就是93行):

 

         上面第93行是在tflite.Model这个类的构造函数处,其中metadata是tflite-schema.json这个文本文件通过Json.parse("tflite-schema.json")得到的,其实就是一个字典文件,其内部包含了各种网络层的参数定义和名字,其实这个json文件就是我们在之前的文章中展示的约束文件(读者可以去翻阅本栏目之前的文章进行查看,那时我通过这个类似的json文件来约束我的模型的构建);而model是通过tflite-schema.js对需要可视化的模型文件二进制流通过flatbuffers解析后的结构体。

        查看tflite.js的源码,我们发现其实任何一个自定义的模型格式只需要在专ai模.js中定义如下所示的几个必要接口就可以了,这里我将设我们的专ai模型叫做pzkm:

pzkm.ModelFactory = class {
    match(context){
       //
    }

    open(context, match){
    // 返回一个new pzkm.Model()
    // 返回的就是送给可视化的结构体
    }
}
pzkm.Model = class{
    constructor(metadata, model){
        //内部构造函数,设备get对应的类成员变量
    }
    get format() {
        return this._format;
    }
    // min_runtime_version
    get runtime() {
        return this._runtime;
    }
    // model name
    get name() {
        return this._name;
    }
    // model version
    get version() {
        return this._version;
    }
    // model description
    get description() {
        return this._description;
    }
    // author name
    get author() {
        return this._author;
    }
    // license optonal
    get license() {
        return this._license;
    }
    // about view graphs
    // important for us
    get graphs() {
        return this._graphs; // 最为重要的结构体
    }
};
// 其他必要的结构体,因此过于繁杂,下文将会以图解的形式进行说明
if(typeof module !== 'undefined' && typeof module.exports === 'object'){
    module.exports.ModelFactory = pzkm.ModelFactory; // 这行代码是必须的
}

        从上面我们发现,其实最后提供给netron的是一个ModelFactory,也就是模型工厂。因此我们如果想要适配自己的模型,那么就必须也有一个相应的ModelFactory。其经过ModelFactory.match()后应该返回一个什么样子的结构体呢?

二、ModelFactory.match()应该的结构体

        上面的pzkm.Model这个class已经体现了一些信息。如果熟悉javascript,那么我们很容易看出在一个类的方法前面加入修饰符get是什么含义,其起到的作用就是实例化一个类后,通过get修饰符,我们很容易得到对应的内部信息,如下所示:

var pzkm = class {
    constructor(name){
        this._name = name;
    }
    get name(){
        return this._name;
    }
}
var a = new pzkm("hello");
//取值a.name相当于执行了a.name()这个函数,返回了实例化a._name
//将会打印出hello
console.log(a.name);

        知道了get修饰符的作用,对于我们解读tflite.js就有很大的帮助了。我们一开始就认定了get修饰符所对应的信息就是netron可视化所必须的信息,这样我们可以根据tflite.js画出了如下所示思维导图:

        对于上图的一些说明信息:带有[]的表示该变量是个列表,内部的元素类型是后面所接的蓝色框所示的变量,蓝色框所分支出来的表示其内部的成员变量。因此我们很容易对照上面的结构体来一一对应netron可视化tflite后的数据结构情况。子分支就是表示该分支拥有相应的get接口。而根类就是Model,也就是我们返回给netron的结构体。

        那么我们重点解读一下graph下属的各个信息的含义,已经写在了如下所示的图片中:

 三、编写适配的代码

        按照上面的思维导图,我们应该很清晰的知道如何适配我们自己的模型格式,进行可视化操作了。适配的过程是漫长的,主要思路就是按照思维导图进行类的创建,以及实例化操作。

        我的主要适配代码放在了我的github的Custom-Netron仓库中https://github.com/pengzhikang/Custom-Netronicon-default.png?t=LBL2https://github.com/pengzhikang/Custom-Netron       

        我编写的代码主要是

source/pzkm.jsicon-default.png?t=LBL2https://github.com/pengzhikang/Custom-Netron/blob/main/source/pzkm.js

        除此之外,我们还需要在以下各处添加对应的注册代码,不然netron遇到我们的格式后缀将产生报错:

        在source/app.js中添加自己扩展后缀:

         在source/index.html中添加自己的扩展后缀:

        在source/view.js中添加自己的扩展后缀: 

四、netron可视化专ai模的效果

        编写好适配代码后,我在之前文章的基础上,使用自己的专ai模生成了一个带有一个卷积层和一个池化层的模型。

        我使用上述适配好专ai模的netron打开那个模型文件,已经可以可视化了,同时对于权重的显示也成功适配了,如下所示:

        模型信息以及连接信息也成功显示:

 

         层的权重信息等也成功显示:

         因此,走到这一步,我们已经对我们的专ai模作了非常多的工作了,已经是逐渐走向成熟了。这些天的努力总算是有所成效了。

        那么下一步该做什么呢?正在计划中,或许可以来点不一样的。

ThinkPHP+Layui开发的ERP管理系统 ERP采购生产销售系统,一款基于ThinkPHP+Layui开发的ERP管理系统,帮助中小企业实现ERP管理规范化,此系统能为你解决五大方面的经营问题:1.采购管理 2.销售管理 3.仓库管理 4.资金管理 5.生产管理,适用于:服装鞋帽、化妆品、机械机电、家具装潢、建材行业、快销品、母婴用品、办公用品、汽配汽修、生鲜农贸、手机通讯、数码家电、医药用品、制造业、信息技术服务行业等。提供全部无加密服务端和前端源代码,独立部署,不受限制。 阅读详情

相关推荐

三极管共集电极放大电路详解:射极跟随器的原理、计算与应用

三极管放大电路是模拟电子技术的基石,常见组态包括共发射极、共基极和共集电极。其中共集电极电路因输入电阻大、输出电阻小、电压增益接近1的特性,常被用作射极跟随器,在信号缓冲、级间隔离和低阻抗负载驱动等场景中发挥关键作用。其核心价值并非电压放大,而是完成阻抗变换,将高内阻信号源转换为低内阻输出,同时保持信号幅值基本不变。理解其静态工作点计算与动态参数推导(如电压增益、输入输出电阻)是设计实用电路的前提。本文结合12V电源下的具体设计实例和仿真验证,梳理了从电路识别、参数计算到工程实践的完整流程,并指出常见设计误

weixin_29193259的博客 367

模型部署全流程:SavedModel、TFLite、TF.js、ONNX 的导出与实战

TensorFlow 的最大优势之一,就是拥有“端到端部署闭环”。从训练到导出,用户可根据目标平台灵活选择格式,部署到:本章我们将覆盖四大部署格式,逐一讲清其导出方式、平台支持、转换流程,并通过完整实例演示: ✅ 导出 SavedModel: 或者: ✅ 加载 & 推理: 二、TFLite:移动端部署首选格式(安卓、树莓派、MCU) TensorFlow Lite 是面向低功耗设备优化的推理格式,具备: ✅ 示例:模型量化(动态范围) 也支持整数量化、float16、整型 full-int

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 2033

机器学习之性能度量

废话不说,本文分为两个部分: 第一部分,我对周志华教授《机器学习》这本书中性能度量知识点中疑难点的学习感悟;第二部分,我感觉该书2.3节 性能度量 中最后部分的代价曲线表述有误,苦于没找到联系教授的正确方式,故希望与广大网友一起探讨。

hustqb的博客 4628

深入解析AI模型响应的元数据:理解和使用指南

响应元数据是在调用AI模型后返回的附加信息。令牌使用情况:包括提示(prompt)和完成(completion)的令牌数。模型信息:使用的模型名称或ID。完成原因:模型响应结束的原因。其他相关安全性或使用指标。理解和使用AI模型的响应元数据可以帮助我们更高效地利用这些工具。OpenAI API文档Langchain文档。

dsndnwfk的博客 552

Ubuntu 22.04下Nvidia显卡驱动安装全攻略:从PPA源到避坑指南

本文详细介绍了在Ubuntu 22.04系统下安装Nvidia显卡驱动的完整流程,包括PPA源的使用、旧驱动清理、安装后验证及常见问题解决方案。特别针对机器学习开发者和图形设计师,提供了从基础安装到性能调优的全方位指南,帮助用户避免常见安装陷阱并优化GPU性能。

weixin_29213655的博客 381

沁恒CH32V30X学习笔记02--GPIO的使用教程及2次封装驱动

刚复位后,GPIO 口运行在初始状态,这时大多数 IO 口都是运行在状态所有的 GPIO 口都可以被配置外部中断输入通道,但一个外部中断输入通道最多只能映射到一个GPIO 引脚上,且外部中断通道的序号必须和 GPIO 端口的位号一致,,两方都是一对一的关系。复用功能。

Car12 705

【AI大模型】Ollama+WebUI+ChatWise+Chatbox AI+Cherry Studio+MATLAB+DeepSeek-R1本地可视化运行

随着人工智能技术的不断发展,越来越多的企业和开发者开始重视本地大模型的部署与应用。相比云端服务,本地模型在数据隐私、响应速度以及自定义方面具有独特优势。本文将从理论到实战,详细解析如何利用 MATLAB 这一强大计算工具结合 Ollama 构建和部署本地 AI 大模型,带你走进智能应用新时代。

2303_77200324的博客 3628

AUTOSAR进阶图解==>AUTOSAR_SWS_CANStateManager

AUTOSAR CAN状态管理器(CanSM)摘要 CanSM是AUTOSAR通信栈中的关键模块,负责管理CAN网络状态和模式转换。主要功能包括: 控制CAN控制器/收发器工作模式(STARTED/STOPPED,NORMAL/STANDBY) 处理三种网络状态(全通信、静默通信、无通信)之间的转换 监控和处理总线关闭(Bus-Off)事件 与ComM、CanIf、BswM等模块协同工作 CanSM通过状态机管理网络状态转换,支持可配置的总线关闭恢复策略。它为每个CAN网络维护独立的状态机,实现网络状态的精

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 5579

AI助力数学建模:从理论到实践的智能化转型

最新接入DeepSeek-V3模型,点击下载最新版本InsCode AI IDE 标题:AI助力数学建模:从理论到实践的智能化转型 在当今科技飞速发展的时代,数学建模已经成为解决复杂问题、优化决策过程的重要工具。无论是金融分析、物流规划还是医疗诊断,数学建模的应用场景无处不在。然而,传统的数学建模方法往往需要深厚的数学背景和编程技能,这对许多非专业人员来说是一个巨大的挑战。幸运的是,随着人工智能(...

inscode_039的博客 1479

【控制模块路径跟踪算法】PID控制算法实现路径跟踪(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对PID控制算法实现路径跟踪–飞思卡尔的方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容PID属于无模型控制,调节三个环节的参数会产生什么影响根据控制对象的不同也会有很大差别PID形象解释小明接到这样一个任务:有一个水缸点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水。

qq_35635374的博客 2386

使用Python,OpenCV查找图像中的最亮点

这篇博客展示了,为什么在图像中找到最亮的点之前应用高斯模糊是至关重要的。 通过应用高斯模糊,可以将每个给定半径内的像素平均在一起。取平均值可以去除高频噪声,否则会影响cv2.minMaxLoc函数的结果。 一定要研究高斯模糊半径的恰当值。如果取值太小,将会减轻平均值的影响,而忽略了更大、更亮的区域。但是如果半径太大,将无法探测到小的明亮区域。

qq_40985985的博客 3809

AI建筑模型3D可视化展示生成系统

平台提供的一键部署功能,让我能快速把系统分享给团队其他成员测试使用,省去了复杂的服务器配置过程。未来我还计划加入更多定制化功能,比如特定地区的建筑规范检查、节能性能可视化等,让这个工具更加实用。作为一名经常需要为建筑项目制作展示素材的设计师,我最近发现了一个高效的工作方式:使用AI技术快速生成建筑模型的3D可视化展示图。在实际使用中,我发现这个方案有几个明显优势:一是大大缩短了传统渲染需要的时间,从几天缩短到几小时;这是最关键的步骤,系统会基于上传的模型和参数设置,生成高质量的3D渲染图。

TopazHawk54的博客 692

AutoSAR系列讲解(实践篇)12.1-Diagnostics简介

主要概括性的讲解了诊断协议UDS和AutoSAR的诊断架构

雪云飞星的博客 1万+

AI建筑模型3D可视化展示优化系统

系统会先分析建筑的主朝向和光照角度,再智能生成匹配的周边景观。作为一名经常需要在线展示建筑作品的设计师,我一直在寻找能提升3D模型展示效果的工具。最近尝试用AI技术搭建了一套建筑模型可视化优化系统,效果出乎意料的好。系统预设了12种经过调校的风格模板,从写实到抽象都能兼顾。建筑师在电商平台展示作品时,往往需要多角度、多风格的视觉效果图。特别设计了"风格对比模式",可以并排展示同一模型的不同风格效果,方便客户选择。的一键部署功能,直接把系统变成了在线服务,客户可以自己上传模型实时预览效果。

WhiteTiger78的博客 720

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

深度学习神经网络模型可视化的两个方法。

神经网络模型可视化两种方法keras自带的函数使用Netron总结注意 keras自带的函数 利用keras.utils.vis_utils模块,需要下载并配置graphviz,不会配置的可以去搜。其中plot_model 有 4 个可选参数: show_shapes (默认为 False) 控制是否在图中输出各层的尺寸。 show_layer_names (默认为 True) 控制是否在图中显示每一层的名字。 expand_dim(默认为 False)控制是否将嵌套模型扩展为图形中的聚类。 dpi(默认

疯子的梦想@的博客 5862

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

AI建筑法规3D可视化合规审查系统

这个系统的核心目标是简化建筑法规合规性审查流程。传统的合规审查往往需要建筑师手动查阅大量法规条文,然后逐一比对设计方案,耗时耗力且容易遗漏。而通过AI技术,我们可以实现自动化的法规匹配和合规分析,显著提升工作效率。

VioletGrove43的博客 1090

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

如何使用YOLOv5模型进行目标检测 鱼群声呐图像,目标检测算法研究 使用YOLOv5模型对鱼群声呐图像进行目标检测

如何使用YOLOv5模型进行目标检测 鱼群声呐图像,目标检测算法研究 使用YOLOv5模型对鱼群声呐图像进行目标检测

QQ_1309399183的博客 702

用快马AI一键生成Open3D点云处理应用:零基础玩转3D可视化

从我的体验来看,原本需要两天搭建的环境,现在半小时就能看到运行效果,遇到问题还能随时让AI辅助调试,学习曲线平缓很多。平台的一键部署功能特别适合分享这种带交互界面的应用,我直接把链接发给同事就能立即查看效果,比传统方式方便太多。通过Open3D的read_point_cloud函数,轻松实现了对PLY/PCD/XYZ等格式的支持。的AI生成功能,快速实现了一个点云可视化工具,分享下我的实践过程。这些功能只需要在平台对话框描述需求,就能获得完整可运行的代码块。

SilverfoxOwl19的博客 940

Bash语言的人工智能

Bash(Bourne Again SHell)是一种Unix Shell和命令行语言,广泛用于系统管理员和开发者的日常工作中。它的核心功能包括文件管理、进程控制、文本处理等,使用户可以通过命令行与操作系统进行交互。尽管Bash并不是为复杂的算法和数据处理而设计的,但由于其简单易用的特性,许多人将其应用于自动化任务和数据处理。在人工智能的世界里,Bash语言虽然不是主流的选择,但它在数据处理、自动化工作流和工具集成等方面的优势不容忽视。

2501_90443877的博客 533

AI娱乐设施结构安全3D可视化评估系统

实现过程中,最大的挑战是平衡专业性和易用性。通过反复测试和工程师反馈,我们优化了参数输入界面,增加了常见预设值,降低了使用门槛。同时确保分析结果符合行业规范。

CrystalwaveTiger37的博客 769

AI建筑模型3D可视化与智能营销系统

不需要配置复杂的3D软件环境,网页端直接操作非常便捷。特别是部署展示页面的过程,只需要点一个按钮就能生成可分享的链接,客户反馈比以往用邮件发送大文件方便多了。对于需要频繁展示作品集的建筑师来说,这确实是个提升效率的好工具。作为建筑师,我一直在寻找能够高效展示设计作品的工具。传统的静态图片和PDF方案很难让客户真正理解建筑的空间感,直到尝试了这套AI驱动的3D可视化系统。下面分享我的使用体验和关键功能点。这套系统最让我满意的是在。

FrostfirePhoenix43的博客 1052

整理了 47 个 Python 人工智能库

Python 是人工智能(机器学习)的首选编程语言,它拥有众多模块,能完成人工智能开发的所有环节,没有任何一种语言使用起来如此顺手。今天就由我带着大家揭开人工智能的神秘面纱。 主页点击领取资料,等你一起来玩奥~ 今天给大家分享的是我用了将近3周的时间整理出来的 Python 人工智能学习的库,主要以核心库、机器学习库、深度学习库、分布式深度学习库、自然语言处理、计算机视觉、生物和化学库,这几个方面进行介绍。 Python 核心库 // 1.Numpy 库 ...

pythonandaiot的博客 1万+

如何用AI快速解析MOFOS文件格式

我只需要简单描述需求,比如"需要读取文件头信息"或"提取第3-5字节的数据",AI就会生成对应的代码片段。生成的代码还自带了完善的错误处理,比如文件损坏检测、数据校验失败提醒等。平台提供了现成的组件库,拖拽就能搭建出文件上传区、解析结果展示区和导出按钮。AI不仅能识别出文件的基本结构,还能自动标注出各个字段的偏移量和数据类型。整个过程比预想的快了很多,特别是省去了搭建开发环境的麻烦。利用平台的调试功能,我让AI分析了各种异常情况,比如文件截断、字段溢出等,然后补充了对应的错误提示和处理逻辑。

CyanWave34的博客 386

AI市政工程3D规划可视化系统

在项目启动阶段,我明确了几个关键需求:首先,系统需要能够处理工程师日常工作中常见的CAD图纸和工程参数;来快速搭建和测试原型。这个平台提供了完整的开发环境和部署能力,让我可以专注于业务逻辑的实现,省去了很多环境配置的麻烦。作为一名市政工程领域的从业者,我最近尝试开发了一套AI辅助的3D规划可视化系统。这个项目让我深刻体会到技术如何为传统工程领域带来效率革命,在此记录下开发过程中的关键点和思考。建议有兴趣的工程师可以尝试用类似平台开发自己的专业工具,相信会有不错的收获。在这个项目的开发过程中,我使用了。

GarnetLynx45的博客 816

AI贷款材料智能审核与3D可视化报告系统

整个系统采用模块化设计,主要分为四个核心模块:文件上传与处理模块、OCR识别与校验模块、风险分析模块和可视化报告生成模块。最棒的是,平台的一键部署功能让我可以快速将demo部署上线,省去了繁琐的环境配置工作。最让人兴奋的是3D可视化部分。系统将客户的资产分布、收入趋势等数据转化为直观的3D图表,支持旋转、缩放等交互操作,让审核人员一目了然地掌握客户财务状况。基于大语言模型开发了风险评估模块,能够综合分析客户的还款能力、还款意愿、行业风险等多维度因素,生成客观的风险评估摘要,避免了人为判断的主观性。

RubyLion56的博客 844
上一篇: 你或许也想拥有专属于自己的AI模型文件格式(可视化篇)-(4)
下一篇: The ROS_DOMAIN_ID,即ROS的领域标识的含义
慷仔
博客等级 码龄9年 88粉丝 46原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值