mirror of
https://github.com/Tencent/ncnn.git
synced 2026-10-16 20:32:33 +08:00
d72e9dd693
This option enables the use of the pybind11 package available in the official repositories of Linux distributions.
179 lines
3.4 KiB
Markdown
179 lines
3.4 KiB
Markdown
# ncnn
|
|
python wrapper of ncnn with [pybind11](https://github.com/pybind/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
|
|
|
|
1. clone ncnn and init submodule.
|
|
|
|
```bash
|
|
cd /pathto/ncnn
|
|
git submodule init && git submodule update
|
|
```
|
|
|
|
2. 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](https://github.com/Tencent/ncnn/blob/master/.github/workflows/release-python.yml).
|
|
|
|
## Custom-build & Install
|
|
|
|
1. clone ncnn and init submodule.
|
|
```bash
|
|
cd /pathto/ncnn
|
|
git submodule init && git submodule update
|
|
```
|
|
2. build.
|
|
```bash
|
|
mkdir build
|
|
cd build
|
|
cmake -DNCNN_PYTHON=ON ..
|
|
make
|
|
```
|
|
|
|
To use the pybind11 package provided by your system, set the CMake variable `NCNN_SYSTEM_PYBIND11` to `ON` during the build process, like this:
|
|
|
|
```bash
|
|
mkdir build
|
|
cd build
|
|
cmake -DNCNN_PYTHON=ON -DNCNN_SYSTEM_PYBIND11=ON ..
|
|
make
|
|
```
|
|
|
|
3. install
|
|
|
|
```bash
|
|
cd /pathto/ncnn
|
|
pip install .
|
|
```
|
|
|
|
if you use conda or miniconda, you can also install as following:
|
|
```bash
|
|
cd /pathto/ncnn
|
|
python3 setup.py install
|
|
```
|
|
|
|
## Tests
|
|
|
|
**test**
|
|
```bash
|
|
cd /pathto/ncnn/python
|
|
python3 tests/test.py
|
|
```
|
|
|
|
**benchmark**
|
|
|
|
```bash
|
|
cd /pathto/ncnn/python
|
|
python3 tests/benchmark.py
|
|
```
|
|
|
|
## Numpy
|
|
**ncnn.Mat->numpy.array, with no memory copy**
|
|
|
|
```bash
|
|
mat = ncnn.Mat(...)
|
|
mat_np = np.array(mat)
|
|
```
|
|
|
|
**numpy.array->ncnn.Mat, with no memory copy**
|
|
```bash
|
|
mat_np = np.array(...)
|
|
mat = ncnn.Mat(mat_np)
|
|
```
|
|
|
|
# Model Zoo
|
|
install requirements
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
then you can import ncnn.model_zoo and get model list as follow:
|
|
```bash
|
|
import ncnn
|
|
import ncnn.model_zoo as model_zoo
|
|
|
|
print(model_zoo.get_model_list())
|
|
```
|
|
models now in model zoo are as list below:
|
|
```bash
|
|
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
|
|
|
|
custom layer demo is in ncnn/python/ncnn/model_zoo/yolov5.py:23
|