Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:Tencent Ncnn Ncnnoptimize

From Leeroopedia


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

Related Pages

Implements Principle

Requires Environment

Uses Heuristic

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment