文章

Netron 神经网络可视化工具:从安装到实战

Netron 神经网络可视化工具:从安装到实战

在深度学习项目中,经常需要快速理解一个模型的网络结构——特别是接手别人代码或复现论文时。如果直接看模型定义文件(.py、.yaml),脑中很难浮现出网络的整体架构。

Netron 就是解决这个问题的利器:拖入模型文件,秒出可视化结构图,清晰展示每一层的输入输出、参数数量和连接关系。

1. Netron 简介

Netron 是一款开源的神经网络可视化工具,支持几乎所有主流深度学习框架导出的模型文件。它的核心价值在于:

  • 即时可视化:不需写代码,打开文件即看图
  • 交互式浏览:点击任意节点查看详细参数(kernel size、stride、输入/输出 shape)
  • 跨平台:浏览器在线版 + 桌面客户端 + pip 安装,全平台可用
  • 格式广泛:支持 ONNX、TensorFlow、PyTorch、Keras、Core ML、Caffe、MXNet 等

GitHub 仓库:https://github.com/lutzroeder/netron

2. 安装方式

2.1 在线版(零安装)

浏览器直接打开:https://netron.app

点击 “Open Model”,选择模型文件即可。适合快速查看、临时使用。

2.2 pip 安装(推荐开发者)

1
pip install netron

安装后启动:

1
2
netron
# 浏览器打开 http://localhost:8080

或直接指定模型文件:

1
2
3
netron model.onnx
netron model.pt
netron model.h5

2.3 桌面客户端

从 GitHub Releases 下载对应系统的安装包:

  • Windows:下载 .exe 安装程序
  • macOS:下载 .dmg 文件
  • Linux:下载 .AppImage 文件

2.4 浏览器扩展

Chrome 和 Edge 扩展商店搜索 “Netron” 安装,可在浏览器中直接打开本地模型文件。

3. 支持的文件格式

3.1 主流框架(稳定支持)

框架文件格式
ONNX.onnx
PyTorch.pt, .pth, .jit.pt(TorchScript)
TensorFlow.pb, .tflite, .h5
Keras.h5, .keras
Core ML.mlmodel
Caffe.caffemodel, .prototxt
MXNet.model, .params
PaddlePaddle__model__ + __params__

3.2 实验性支持

以下格式兼容性可能不稳定:

  • TensorFlow.js (.json)
  • Darknet (.cfg + .weights)
  • ncnn (.param + .bin)
  • OpenVINO (.xml + .bin)
  • RKNN (.rknn)

4. PyTorch 模型导出与可视化

PyTorch 的 .pt 文件 Netron 对它的支持不完全稳定,尤其是复杂模型。推荐的流程是:

4.1 导出为 ONNX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import torch

# 加载模型
model = YourModel()
model.load_state_dict(torch.load('model.pth'))
model.eval()

# 导出一个 dummy 输入,指定输入 shape
dummy_input = torch.randn(1, 3, 224, 224)

# 导出 ONNX
torch.onnx.export(
    model,
    dummy_input,
    "model.onnx",
    export_params=True,
    opset_version=12,
    input_names=['input'],
    output_names=['output'],
    dynamic_axes={'input': {0: 'batch_size'},
                  'output': {0: 'batch_size'}}
)

然后用 Netron 打开 .onnx 文件,效果最好。

4.2 导出为 TorchScript

1
2
3
4
5
6
7
# Trace 方式(适合静态图)
traced_model = torch.jit.trace(model, dummy_input)
torch.jit.save(traced_model, 'model_traced.pt')

# Script 方式(适合有控制流的模型)
scripted_model = torch.jit.script(model)
torch.jit.save(scripted_model, 'model_scripted.pt')

4.3 YOLOv5 的特殊处理

Yolov5 使用 .yaml 定义网络,pt 权重文件直接用 Netron 打开可能无法完整显示。推荐的折中方案:

1
2
3
4
5
# 使用 YOLOv5 自带的导出脚本
python models/export.py --weights yolov5s.pt --include onnx

# 然后用 netron 打开 onnx
netron yolov5s.onnx

这样就能看到完整的 YOLOv5 网络架构,包括 Focus、C3、SPP 等模块的详细结构。

5. 实用技巧

5.1 快速查看参数总量

打开模型文件后,Netron 在顶部信息栏直接显示总参数量和计算量(FLOPs,如果模型文件包含该信息)。这对于评估模型大小和推理成本非常方便。

5.2 逐层调试

当模型输出不符合预期时,可以通过 Netron 逐层检查:

  • 每一层的输入/输出 shape 是否正确
  • 卷积核尺寸、步长、padding 是否符合设计
  • 是否存在意外的 reshape 或 transpose 操作

5.3 对比不同版本的模型结构

在模型改进过程中,将 baseline 和改进后的模型分别导出为 ONNX,用 Netron 并排对比,差异一目了然。

5.4 导出 SVG/PNG

Netron 支持将当前视图导出为 SVG 或 PNG 图片,方便放入论文、报告或文档中。菜单位于:File → Export → SVG / PNG

6. 替代工具

除了 Netron,还有一些可视化工具值得了解:

工具特点
TensorBoardTensorFlow/PyTorch 内置,查看计算图 + 训练曲线
torchinfo (summary)PyTorch 打印各层参数表格,终端友好
VisualDL百度飞桨生态的可视化工具
NN-SVG在线画风格化的神经网络示意图
PlotNeuralNetLaTeX + Python 画出版级网络结构图

Netron 的优势在于零代码、即时交互,适合快速理解和 debug。而以 PlotNeuralNet/TikZ 为代表的工具更适合画论文用的示意图。

7. 小结

Netron 是深度学习工程师的瑞士军刀之一。当你面对一个陌生的模型文件时,不再需要读几百行代码还原结构——拖入文件,30 秒内就能建立直观的架构认知。

推荐的工作流:训练时用 torchinfo 打印参数表格 → 导出 ONNX → 用 Netron 可视化确认 → 需要论文配图时用 PlotNeuralNet 绘制。

参考资料

本文由作者按照 CC BY 4.0 进行授权