| from graphviz import Digraph | |
| import yaml | |
| # 加载 YAML 文件 | |
| with open('/home/lab/LJ/wampee/ultralytics/ultralytics/cfg/models/v8/yolov8.yaml', 'r') as f: | |
| model_config = yaml.safe_load(f) | |
| # 创建一个有向图 | |
| dot = Digraph(comment='YOLOv8 Model Structure') | |
| # 添加 Backbone 节点 | |
| dot.node('Input', 'Input Image') | |
| for idx, layer in enumerate(model_config['backbone']): | |
| dot.node(f'Backbone_{idx}', f"{layer[2]} ({layer[3]})") | |
| dot.edge('Input' if idx == 0 else f'Backbone_{idx-1}', f'Backbone_{idx}') | |
| # 添加 Head 节点 | |
| for idx, layer in enumerate(model_config['head']): | |
| dot.node(f'Head_{idx}', f"{layer[2]} ({layer[3]})") | |
| dot.edge(f'Backbone_{len(model_config["backbone"])-1}' if idx == 0 else f'Head_{idx-1}', f'Head_{idx}') | |
| # 保存和展示结构图 | |
| dot.render('yolov8_model_structure', format='png', cleanup=True) | |
| dot.view() | |