AutoDL中怎么在本地查看使用netron可视化得到的模型结构图

首先需要安装netron包

pip install netron

然后需要自定义autodl服务

在 Autodl 实例这里的自定义服务里实名认证后开通自定义服务,Autodl 目前只开放了 6006 端口给自定义服务,

在这里插入图片描述

在 autodl 实例中指定6006端口启动netron服务

执行这个py代码后,

# 启动 Netron
import netron
# 启动 Netron 并指定端口为6006
import torch.onnx
import os

# 启动 Netron 并指定端口为6006
os.system('netron --port 6006 ema_model.onnx')

可以看到服务启动在6006端口了。
在这里插入图片描述
这里的 ema_model.onnx 是通过另外一个代码利用torch.onnx.export导出保存的 onnx 文件

import torch.onnx

import torch
from torchviz import make_dot
import torch.nn as nn
# 定义模型
class EMA(nn.Module):
    def __init__(self, channels, c2=None, factor=32):
        super(EMA, self).__init__()
        self.groups = factor
        assert channels // self.groups > 0
        self.softmax = nn.Softmax(-1)
        self.agp = nn.AdaptiveAvgPool2d((1, 1))
        self.pool_h = nn.AdaptiveAvgPool2d((None, 1))
        self.pool_w = nn.AdaptiveAvgPool2d((1, None))
        self.gn = nn.GroupNorm(channels // self.groups, channels // self.groups)
        self.conv1x1 = nn.Conv2d(channels // self.groups, channels // self.groups, kernel_size=1, stride=1, padding=0)
        self.conv3x3 = nn.Conv2d(channels // self.groups, channels // self.groups, kernel_size=3, stride=1, padding=1)

    def forward(self, x):
        b, c, h, w = x.size()
        group_x = x.reshape(b * self.groups, -1, h, w)  # b*g,c//g,h,w
        x_h = self.pool_h(group_x)
        x_w = self.pool_w(group_x).permute(0, 1, 3, 2)
        hw = self.conv1x1(torch.cat([x_h, x_w], dim=2))
        x_h, x_w = torch.split(hw, [h, w], dim=2)
        x1 = self.gn(group_x * x_h.sigmoid() * x_w.permute(0, 1, 3, 2).sigmoid())
        x2 = self.conv3x3(group_x)
        x11 = self.softmax(self.agp(x1).reshape(b * self.groups, -1, 1).permute(0, 2, 1))
        x12 = x2.reshape(b * self.groups, c // self.groups, -1)  # b*g, c//g, hw
        x21 = self.softmax(self.agp(x2).reshape(b * self.groups, -1, 1).permute(0, 2, 1))
        x22 = x1.reshape(b * self.groups, c // self.groups, -1)  # b*g, c//g, hw
        weights = (torch.matmul(x11, x12) + torch.matmul(x21, x22)).reshape(b * self.groups, 1, h, w)
        return (group_x * weights.sigmoid()).reshape(b, c, h, w)


# 定义模型
model = EMA(channels=64)
x = torch.randn(1, 64, 128, 128)

# 导出为 ONNX 格式,然后在 netron.app上把这个onnx文件拖进去就可以看到了
torch.onnx.export(model, x, "ema_model.onnx")

然后在本地电脑上,打开cmd窗口,输入

ssh -CNgv -L 8097:127.0.0.1:8097 root@region-1.autodl.com -p 37881

需要把其中的8097修改成6006,root@region-1.autodl.com 和 37881 替换成自己模型实例的地址和端口,然后会提示输入密码

输入正确的密码之后,在本地浏览器输入 127.0.0.1:8097 就能成功看到 netro 可视化得到的模型结构图了,这里我查看的是EMA模块的结构图

在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 17:28:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 17:28:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 17:28:02       57 阅读
  4. Python语言-面向对象

    2024-07-18 17:28:02       68 阅读

热门阅读

  1. Fundamentals of Computer Science LCSCI4208

    2024-07-18 17:28:02       20 阅读
  2. 河南萌新联赛2024第(一)场:河南农业大学

    2024-07-18 17:28:02       27 阅读
  3. Unity:UI进入离开事件

    2024-07-18 17:28:02       19 阅读
  4. opencv—常用函数学习_“干货“_6

    2024-07-18 17:28:02       18 阅读
  5. web前端 Vue 框架面试120题(四)

    2024-07-18 17:28:02       18 阅读
  6. 富格林:可信办法阻挠虚假受骗

    2024-07-18 17:28:02       19 阅读
  7. ClickHouse中使用UNION

    2024-07-18 17:28:02       20 阅读
  8. vue3项目中pinia的用法详解(值得收藏)

    2024-07-18 17:28:02       20 阅读
  9. jd-gui反编译出现中文乱码问题

    2024-07-18 17:28:02       18 阅读
  10. CL11命令行解析使用实例

    2024-07-18 17:28:02       19 阅读
  11. PCB的层叠结构

    2024-07-18 17:28:02       18 阅读
  12. vim+cscope+ctags

    2024-07-18 17:28:02       23 阅读
  13. gitlab reset passwd

    2024-07-18 17:28:02       20 阅读