ncnn
ncnn
python wrapper of ncnn with pybind11, only support python3.x now.
Install from pip
ncnn is available as wheel packages for macOS, Windows and Linux distributions, you can install with pip:
python -m pip install -U pip
python -m pip install -U ncnn
Build from source
If you want to build ncnn with some options not as default, or just like to build everything yourself, it is not difficult to build ncnn from source.
Prerequisites
On Unix (Linux, OS X)
- A compiler with C++11 support
- CMake >= 3.4
On Mac
- A compiler with C++11 support
- CMake >= 3.4
On Windows
- Visual Studio 2015 or higher
- CMake >= 3.4
Build & Install
- clone ncnn and init submodule.
cd /pathto/ncnngit submodule init && git submodule update
- build and install.
python setup.py install
If you want to use a custom toolchain, you can install with the CMAKE_TOOLCHAIN_FILE
environment variable, like this:
CMAKE_TOOLCHAIN_FILE="../../toolchains/power9le-linux-gnu-vsx.clang.toolchain.cmake" python setup.py install
if you want to enable the usage of vulkan, you can install as following:
python setup.py install --vulkan=on
Attention:
To enable Vulkan support, you must first install the Vulkan SDK.
For Windows or Linux Users:
Ensure that the
VULKAN_SDK
environment variable is set to the path of the Vulkan SDK.For MacOS Users:
On MacOS, you will need to specify additional environment variables. For guidance on setting these variables, please refer to lines 279-286 in the following file: ncnn/.github/workflows/release-python.yml at master · Tencent/ncnn.
Custom-build & Install
- clone ncnn and init submodule.
cd /pathto/ncnngit submodule init && git submodule update
- build.
mkdir buildcd buildcmake -DNCNN_PYTHON=ON ..make
- install
cd /pathto/ncnnpip install .
if you use conda or miniconda, you can also install as following:
cd /pathto/ncnnpython3 setup.py install
Tests
test
cd /pathto/ncnn/pythonpython3 tests/test.py
benchmark
cd /pathto/ncnn/pythonpython3 tests/benchmark.py
Numpy
ncnn.Mat->numpy.array, with no memory copy
mat = ncnn.Mat(...)mat_np = np.array(mat)
numpy.array->ncnn.Mat, with no memory copy
mat_np = np.array(...)mat = ncnn.Mat(mat_np)
Model Zoo
install requirements
pip install -r requirements.txt
then you can import ncnn.model_zoo and get model list as follow:
import ncnnimport ncnn.model_zoo as model_zoo
print(model_zoo.get_model_list())
models now in model zoo are as list below:
mobilenet_yolov2mobilenetv2_yolov3yolov4_tinyyolov4yolov5syolactmobilenet_ssdsqueezenet_ssdmobilenetv2_ssdlitemobilenetv3_ssdlitesqueezenetfaster_rcnnpeleenet_ssdretinafacerfcnshufflenetv2simpleposenanodet
all model in model zoo has example in ncnn/python/examples folder
Custom Layer
custom layer demo is in ncnn/python/ncnn/model_zoo/yolov5.py:23