mirror of https://github.com/open-mmlab/mmcv.git
50 lines
1.2 KiB
Markdown
50 lines
1.2 KiB
Markdown
# Introduction of `onnx` module in MMCV (Experimental)
|
|
|
|
## register_extra_symbolics
|
|
|
|
Some extra symbolic functions need to be registered before exporting PyTorch model to ONNX.
|
|
|
|
### Example
|
|
|
|
```python
|
|
import mmcv
|
|
from mmcv.onnx import register_extra_symbolics
|
|
|
|
opset_version = 11
|
|
register_extra_symbolics(opset_version)
|
|
```
|
|
|
|
## ONNX simplify
|
|
|
|
### Intention
|
|
|
|
`mmcv.onnx.simplify` is based on [onnx-simplifier](https://github.com/daquexian/onnx-simplifier), which is a useful tool to make exported ONNX models slimmer by performing a series of optimization. However, for Pytorch models with custom op from `mmcv`, it would break down. Thus, custom ops for ONNX Runtime should be registered.
|
|
|
|
### Prerequisite
|
|
|
|
`mmcv.onnx.simplify` has three dependencies: `onnx`, `onnxoptimizer`, `onnxruntime`. After installation of `mmcv`, you have to install them manually using pip.
|
|
|
|
```bash
|
|
pip install onnx onnxoptimizer onnxruntime
|
|
```
|
|
|
|
### Usage
|
|
|
|
```python
|
|
import onnx
|
|
import numpy as np
|
|
|
|
import mmcv
|
|
from mmcv.onnx.simplify import simplify
|
|
|
|
dummy_input = np.random.randn(1, 3, 224, 224).astype(np.float32)
|
|
input = {'input':dummy_input}
|
|
input_file = 'sample.onnx'
|
|
output_file = 'slim.onnx'
|
|
model = simplify(input_file, [input], output_file)
|
|
```
|
|
|
|
### FAQs
|
|
|
|
- None
|