yolov7(yotch)可视化问题

使用netron可视化yolov7(torch),但没有线,网上查找相关解决方法但没有解决,想知道是模型那边的问题还是我下方代码的问题

img

import netron
import torch
from nets.yolo import YoloBody

if __name__ == "__main__":
    input_shape = [640, 640]
    anchors_mask = [[6, 7, 8], [3, 4, 5], [0, 1, 2]]
    num_classes = 80
    phi = 'l'

    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    m = YoloBody(anchors_mask, num_classes, phi, False, chn=0).to(device)

    dummy_input = torch.randn(1, 3, input_shape[0], input_shape[1]).to(device)

    out = m(dummy_input)
    torch.save(m, "m.pth")

    modelData = "m.pth"  # 定义模型数据保存的路径
    netron.start(modelData)  # 输出网络结构

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
根据您提供的信息,可能是模型的输出张量没有指定正确的名称导致的可视化问题。针对这种情况,您可以尝试使用以下代码修改:

out = m(dummy_input)
torch.save(m.state_dict(), "m.pth")
 
modelData = "m.pth"  # 定义模型数据保存的路径
netron.start(modelData, port=8080)  # 输出网络结构并指定端口号
 
# 手动指定输出张量的名称
output_names = ['output1', 'output2', 'output3']
netron.start(modelData, port=8080, output=output_names)

在这个例子中,我们使用m.state_dict()来保存模型,而不是整个模型本身,因为Netron需要模型的权重而不是整个模型。同时,我们手动指定了输出张量的名称,这将确保Netron正确地显示模型的结构。

如果这些更改仍然无法解决可视化问题,您可以尝试检查模型架构是否正确,并确保模型能够正常运行。另外,您还可以尝试使用其他可视化工具,例如TensorBoard或PyTorch中的torchviz模块,来验证模型的结构和输出。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢