Implementation:Tencent Ncnn Ncnnoptimize
| Knowledge Sources | |
|---|---|
| Domains | Model_Optimization, Model_Deployment |
| Last Updated | 2026-02-09 00:00 GMT |
Overview
External CLI tool for applying graph-level operator fusion, dead code elimination, and shape inference to ncnn models.
Description
ncnnoptimize is a command-line tool that loads an ncnn model, applies a comprehensive set of graph optimization passes, and writes the optimized model. It is implemented as the NetOptimize class (extending ModelWriter) and applies dozens of fusion patterns including Conv+BN, Conv+ReLU, Conv+BN+ReLU, Deconvolution fusions, InnerProduct fusions, and more.
The tool also performs dead code elimination (removing unreachable layers), shape inference (pre-computing intermediate tensor shapes), and optional fp16 weight conversion for model size reduction.
Usage
Use after PNNX conversion and before quantization or deployment. The flag parameter controls output precision: 0 for fp32, 1 for fp16 storage. The optional cutstart/cutend parameters enable subgraph extraction.
Code Reference
Source Location
- Repository: ncnn
- File: tools/ncnnoptimize.cpp
- Lines: L36 (class NetOptimize : public ModelWriter), L2751-2850 (main function)
Signature
ncnnoptimize [inparam] [inbin] [outparam] [outbin] [flag] [cutstart] [cutend]
Import
# Built from ncnn source tree
# Located in build/tools/ncnnoptimize after cmake build
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| inparam | file path | Yes | Input .param file (network structure) |
| inbin | file path | Yes | Input .bin file (network weights) |
| flag | int | No | 0 = fp32 output (default), 1 = fp16 storage |
| cutstart | string | No | Layer name to start subgraph extraction |
| cutend | string | No | Layer name to end subgraph extraction |
Outputs
| Name | Type | Description |
|---|---|---|
| outparam | File | Optimized .param with fused operators |
| outbin | File | Optimized .bin with merged weights |
Usage Examples
Basic Optimization (fp32)
ncnnoptimize model.ncnn.param model.ncnn.bin model-opt.ncnn.param model-opt.ncnn.bin 0
Optimization with fp16 Storage
ncnnoptimize model.ncnn.param model.ncnn.bin model-opt-fp16.ncnn.param model-opt-fp16.ncnn.bin 1
Subgraph Extraction
ncnnoptimize model.ncnn.param model.ncnn.bin sub.param sub.bin 0 conv1 pool5