继续摧残 RaspberryPi 系列……
反正 Telegram 上群友已经看不下去了:“放过它吧…… 它只是个树莓派啊……”
原版 Darknet
原版 Darknet 使用纯 C 编写,可以说什么依赖都没有,直接编译即可。十分“灵活”。
git clone https://github.com/pjreddie/darknet
cd darknet
make
然后下载 weights 跑 demo。使用 yolo
检测 dogs.jpg
大概耗时 385 秒。
AlexyAB 版
对于没有GPU又不想折腾的用户来说,AlexyAB版是最好的选择。不仅修复了许多错误,而且加入了一些选项,使得纯CPU的情况下运行速度更快。
git clone https://github.com/AlexyAB/darknet
cd darknet
make
YOLOv3 Tiny在15秒左右。
不过为了获取更快的速度, 我们需要安装一些其他依赖。
libgomp1
libomp-dev
libfcml-dev
之后修改一下Makefile
,打开上述依赖。YOLO v3 Tiny在11秒左右。
同时,gcc可以针对arm进行一些特殊的优化,也可以打开: 在CFLAGS
的末尾加上-marm
即可。亲测,加上这个之后,YOLO v3 Tiny在7.3秒左右。
darknet-nnpack
当然了,原版 Darknet 因为各种没有加优化,在 GPU 上速度很快,但是在 CPU 上速度简直不能忍。做项目的时候找到了 “darknet-nnpack” 这个东西。
安装依赖
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
这就是提速用的点金石了。
首先获取原码:
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
下面主角出场:
git clone https://github.com/thomaspark-pkj/darknet-nnpack.git
cd darknet-nnpack
make
应该能顺利完成编译。
下载 weights 跑 demo。使用 yolo
检测 dogs.jpg
大概耗时 8.3 秒。使用TinyYolov2大概1秒。并且可以使用RealTimeCamera的例子,大概0.8帧/秒。和AlexyAB版本一样,打开一些优化选项之后,可以达到1帧/秒。
问题解决办法
python3 configure 出错
参考这个Issue
发表回复