4.2 KiB
4.2 KiB
多输入模型转换示例
概述
本示例演示如何使用 Netrans 转换多输入 Caffe 模型。模型有两个输入分支,各自经过卷积和 ReLU 后,在通道维度 Concat 拼接输出。
Netrans 支持多输入模型的完整转换流程:load → quantize → add_pre_post → export。
模型结构
target: [1, 3, 112, 112] image: [1, 3, 112, 112]
│ │
Conv(3x3,8) + ReLU Conv(3x3,8) + ReLU
│ │
└────────── Concat(axis=1) ────────────┘
│
pool_concat: [1, 16, 112, 112]
快速开始
1. 环境准备
请先在源码根目录执行 make install 安装 Netrans,完整步骤见安装指南。
2. 进入示例目录
cd examples/multi_input
3. 一键转换
bash run.sh # CLI 一键转换
# 或
python3 run.py # Python API 一键转换
分步详解
已预先提供以下文件:
multi_input.prototxt— Caffe 模型结构multi_input.caffemodel— 模型权重input0.jpg/input1.jpg— 两个输入端口的校准图像
Step 1: 加载模型
netrans load . --mean 0 0 0 --std 1.0
Netrans 从 multi_input.prototxt 自动识别两个输入端口 target 和 image,并生成 multi_input_inputmeta.yml。
channel_mean_value.txt 保存 mean 和 std 值。当前 --mean 和 --std 只接受一组共享配置,并应用到所有输入端口;暂不支持为每个输入端口分别传入不同的 mean/std。
Step 2: 量化并嵌入前后处理节点
netrans quantize . asymu8
netrans add_pre_post . asymu8 --preprocess --postprocess
多输入量化需要为每个输入端口提供单独的校准数据文件,命名格式为 dataset0.txt、dataset1.txt...,每个文件内填写对应输入端口的图片路径。
# dataset0.txt 格式(第一个输入端口 target)
input0.jpg
# dataset1.txt 格式(第二个输入端口 image)
input1.jpg
Step 3: 导出 NBG
netrans export . asymu8
Python API 示例
from netrans import Netrans
model = Netrans()
model.load('.', mean=[0, 0, 0], std=1.0)
model.quantize('asymu8')
model.add_pre_post('asymu8', preprocess=True, postprocess=True)
model.export('asymu8')
多输入关键要点
| 要点 | 说明 |
|---|---|
| 模型格式 | Caffe (.prototxt + .caffemodel),也支持 ONNX/TF 等多输入模型 |
dataset<N>.txt |
每个输入端口一个文件(dataset0.txt、dataset1.txt...),文件内为图片路径 |
channel_mean_value.txt |
一组共享的 mean/std 作用于所有输入端口;各输入独立 mean/std 暂不支持 |
inputs_outputs.txt |
指定输出端口名 --outputs 'pool_concat' |
| 前后处理节点嵌入 | 同时作用于所有输入/输出端口 |
输出文件
multi_input/
├── multi_input.prototxt # Caffe 模型结构
├── multi_input.caffemodel # Caffe 模型权重
├── input0.jpg / input1.jpg # 校准图像
├── channel_mean_value.txt # 预处理参数
├── dataset0.txt / dataset1.txt # 各输入端口的校准数据配置
├── inputs_outputs.txt # 输出端口配置
├── multi_input.json # 模型结构(生成)
├── multi_input.data # 模型权重(生成)
├── multi_input_asymu8.quantize # 量化配置(生成)
├── multi_input_inputmeta.yml # 输入元数据(生成)
├── multi_input_postprocess_file.yml # 后处理配置(生成)
└── wksp/ # 工作空间(生成)
└── multi_input_asymu8_nbg_unify/
└── network_binary.nb # 最终 NBG 文件
相关文档
版本: 6.33.6+ 更新日期: 2026-06-18