【手把手教学】如何可视化YOLOv8深度学习的网络结构并保存

简介: 【手把手教学】如何可视化YOLOv8深度学习的网络结构并保存

前言

最近,有很多小伙伴问我如何查看自己训练好的网络模型结构和详细信息,那我在这篇文章将详细介绍如何将YOLOv8网络结构可视化,并且查看详细信息,希望能给大家带来帮助。对于其他深度学习网络模型,也同样可以通过类似的方式使用Netron进行查看。

1.将.pt模型转为.onnx模型

首先,我们需要加载自己训练好的yolov8网络模型best.pt文件。然后,使用model.expert方法将其转为.onnx格式的模型文件。代码如下:

from ultralytics import YOLO
# 加载训练好的模型
model = YOLO("runs/train/weights/best.pt")
# 将模型转为onnx格式
success = model.export(format='onnx')

运行上述代码后,就会在best.pt文件所在的目录下生成同名的.onnx格式文件,如下图:

2. 使用Netron可视化网络结构

2.1 Netron简介

Netron 是一个开源的模型可视化工具,用于可视化深度学习模型的结构和参数。它可以加载和显示多种框架和模型格式,包括ONNX(Open Neural Network Exchange)、TensorFlow、Keras、Caffe、Core ML 等。通过图形界面,用户可以直观地查看模型的网络结构、层级关系、参数等信息。

Netron 的主要特点包括:

  1. 多框架和多格式支持:Netron 支持常见的深度学习框架和模型格式,包括ONNX、TensorFlow、Keras、Caffe、CoreML 等,因此可以加载和可视化多种类型的深度学习模型。
  2. 直观的可视化界面:Netron提供一个直观的图形界面,以树状结构展示模型的网络层次和参数。用户可以浏览模型的结构、查看各层的输入输出尺寸、参数数量等,帮助理解模型的组成和特性。
  3. 跨平台支持:Netron 可以运行在多种操作系统上,包括 Windows、macOS 和 Linux,方便用户在不同环境中使用。
  4. 快速加载和渲染:Netron 的设计优化了模型的加载和渲染过程,使得大型模型的可视化也能够在短时间内完成。
    Netron 是一个简单但功能强大的模型可视化工具,对于深度学习开发者和研究人员来说,它可以提供有价值的模型分析和理解工具,帮助他们更好地理解和调试深度学习模型。

2.2 网络结构可视化

我们打开Netron地址: https://netron.app,打开后界面如下:

点击箭头处,选择我们转换好的best.onnx文件,然后点击打开:

打开后显示结果如下,界面会显示模型的整个网络结构,如下所示:

点击网络结构中某个节点,会在界面右侧显示出改节点的详细信息,例如卷积核的大小,卷积核的具体参数等。如下图:

同时也提供了将网络结构保存为图片的功能,左侧点击expert可将整个结构保存为.png或者.svg图片。

但是,从显示网络结构中我们可以看到,图中没有显示特征图的维度,只有输入数据的维度(3,640,640)。在netron中,如果想看到特征图的维度,需要在导出为onnx的时候,同时加上特征图维度信息。这个操作需要onnx库的帮助,可以通过pip install onnx进行安装。具体代码如下:

# 增加特征图维度信息
    model_file = 'runs/train/weights/best.onnx'
    # 加载刚转换好的best.onnx文件
    onnx_model = onnx.load(model_file)
    # 重新保存为best2.onnx文件
    onnx.save(onnx.shape_inference.infer_shapes(onnx_model), 'runs/train/weights/best2.onnx')

运行代码后,在best.onnx同目录下会生成一个best2.onnx文件,然后我们重新在https://netron.app打开best2.onnx文件:

这次我们可以看到相比之前显示的内容,多了一个增加维度信息的步骤。此时可视化图中就能完整显示所有特征图的维度了。然后我们将其保存为.png图片,如下所示:

通过上述,操作我们就可以清楚的看到整个网络结构,并且可以查看每个网络节点的详细信息,希望能够帮助到大家。

相关文章
|
5月前
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
583 27
|
6月前
|
机器学习/深度学习 人工智能 运维
网管不再抓头发:深度学习教你提前发现网络事故
网管不再抓头发:深度学习教你提前发现网络事故
163 2
|
2月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
5月前
|
机器学习/深度学习 人工智能 算法
Wi-Fi老是卡?不如试试让“深度学习”来当网络管家!
Wi-Fi老是卡?不如试试让“深度学习”来当网络管家!
288 68
|
4月前
|
机器学习/深度学习 算法 数据库
基于GoogleNet深度学习网络和GEI步态能量提取的步态识别算法matlab仿真,数据库采用CASIA库
本项目基于GoogleNet深度学习网络与GEI步态能量图提取技术,实现高精度步态识别。采用CASI库训练模型,结合Inception模块多尺度特征提取与GEI图像能量整合,提升识别稳定性与准确率,适用于智能安防、身份验证等领域。
|
10月前
|
机器学习/深度学习 数据可视化 算法
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
531 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
|
8月前
|
机器学习/深度学习 人工智能 运维
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
294 8
|
9月前
|
机器学习/深度学习 数据可视化 PyTorch
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
650 7
深入解析图神经网络注意力机制:数学原理与可视化实现
|
9月前
|
机器学习/深度学习 数据采集 算法
基于MobileNet深度学习网络的MQAM调制类型识别matlab仿真
本项目基于Matlab2022a实现MQAM调制类型识别,使用MobileNet深度学习网络。完整程序运行效果无水印,核心代码含详细中文注释和操作视频。MQAM调制在无线通信中至关重要,MobileNet以其轻量化、高效性适合资源受限环境。通过数据预处理、网络训练与优化,确保高识别准确率并降低计算复杂度,为频谱监测、信号解调等提供支持。
|
9月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
530 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能

热门文章

最新文章