python wrapper of ncnn with pybind11, only support python3.x now.
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
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.
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
- clone ncnn and init submodule.
cd /pathto/ncnn
git submodule init && git submodule update
- build.
mkdir build
cd build
cmake -DNCNN_PYTHON=ON ..
make
cd /pathto/ncnn
pip install .
if you use conda or miniconda, you can also install as following:
cd /pathto/ncnn
python3 setup.py install
test
cd /pathto/ncnn/python
python3 tests/test.py
benchmark
cd /pathto/ncnn/python
python3 tests/benchmark.py
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)
install requirements
pip install -r requirements.txt
then you can import ncnn.model_zoo and get model list as follow:
import ncnn
import ncnn.model_zoo as model_zoo
print(model_zoo.get_model_list())
models now in model zoo are as list below:
mobilenet_yolov2
mobilenetv2_yolov3
yolov4_tiny
yolov4
yolov5s
yolact
mobilenet_ssd
squeezenet_ssd
mobilenetv2_ssdlite
mobilenetv3_ssdlite
squeezenet
faster_rcnn
peleenet_ssd
retinaface
rfcn
shufflenetv2
simplepose
nanodet
all model in model zoo has example in ncnn/python/examples folder
custom layer demo is in ncnn/python/ncnn/model_zoo/yolov5.py:23