darknet-NNPACK版本在ubuntu系统编译运行
安装依赖
sudo apt install ninja-build
sudo apt install clang
sudo pip3 install --upgrade git+https://github.com/Maratyszcza/PeachPy
sudo pip3 install --upgrade git+https://github.com/Maratyszcza/confu
NNPACK-darknet
NNPACK
git clone https://github.com/thomaspark-pkj/NNPACK-darknet.git
之后可以看一下 ninja 的版本。这里编译需要 ninja1.7+,如果 ninja 的版本不满足(例如,使用的是 1.5 版本)的话,可以修改 build.ninja 文件,将开头的 ninja_required_version,将 1.7 改为 1.5 即可继续编译。
再然后就是编译 NNPACK-darknet 了:
confu setup
python ./configure.py
ninja
sudo cp -a lib/* /usr/lib/
sudo cp include/nnpack.h /usr/include/
sudo cp deps/pthreadpool/include/pthreadpool.h /usr/include/
darknet-nnpack
编译darknet-nnpack
参考链接:https://github.com/thomaspark-pkj/darknet-nnpack
git clone https://github.com/thomaspark-pkj/darknet-nnpack.git
cd darknet-nnpack
make
遇上的问题
出现问题:ninja时出现问题(找不到模型PeachPy)
解决方案:因为安装的环境是python3,但是系统运行的时候是在python2的环境下,所以应该修改
出现问题:make时出现fatal error: arm_neon.h: 没有那个文件或目录
或者 unrecognized command line option ‘-mfpu=neon-vfpv4’
解决方案:将makefile文件的arm依赖项置为0
# darknet-NNPACK版本SDK开发
编译命令
编译命令中有opencv的支持
g++ BITStructureDetectRPIv1.c -o test -I /home/qc/dl/RPI/Project/darknet/include/ -L /home/qc/dl/RPI/Project/darknet/lib/ -ldarknet -lgoogletest-core -lnnpack -lpthreadpool -lpthread -I /home/qc/video_progress/opencv-3.4.1/build/install/include -L /home/qc/video_progress/opencv-3.4.1/build/install/lib -lopencv_highgui -lopencv_imgcodecs -lopencv_core -lopencv_imgproc -lopencv_videoio
编译命令中没有opencv的支持
g++ test.c -o test -I /home/qc/dl/RPI/Project/darknet/include/ -L /home/qc/dl/RPI/Project/darknet/lib/ -ldarknet -lgoogletest-core -lnnpack -lpthreadpool -lpthread
问题以及解决方案
出现问题: error: conflicting declaration of C function ‘nnp_status nnp_convolution_output(nnp_convolution_algorithm, size_t, size_t, size_t, nnp_size, nnp_padding, nnp_size, const float*, const float*, const float*, float*, pthreadpool_t, nnp_profile*)’
解决方案:将darknet.h中的nnpack.h注释掉,并在编译的文件中增加以下代码,注意nnpack.h要以C++来进行编译
#define NNPACK
#include <nnpack.h>
extern "C"
{
#include "darknet.h"
}
出现问题:无法加载库 error while loading shared libraries: libdarknet.so: cannot open shared object file: No such file or directory
解决方案:指定库的路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/qc/dl/RPI/Project/darknet/lib