前言
最近,有很多小伙伴问我如何查看自己训练好的网络模型结构和详细信息
,那我在这篇文章将详细介绍如何将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 的主要特点包括:
- 多框架和多格式支持:Netron 支持常见的深度学习框架和模型格式,包括ONNX、TensorFlow、Keras、Caffe、CoreML 等,因此可以加载和可视化多种类型的深度学习模型。
- 直观的可视化界面:Netron提供一个直观的图形界面,以树状结构展示模型的网络层次和参数。用户可以浏览模型的结构、查看各层的输入输出尺寸、参数数量等,帮助理解模型的组成和特性。
- 跨平台支持:Netron 可以运行在多种操作系统上,包括 Windows、macOS 和 Linux,方便用户在不同环境中使用。
- 快速加载和渲染: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
图片,如下所示:
通过上述,操作我们就可以清楚的看到整个网络结构,并且可以查看每个网络节点的详细信息,希望能够帮助到大家。