前言
darknet-nnpack
是针对Arm
处理器进行优化的YOLO
版本,虽然只能执行YOLO-tiny
,但是不需要GPU
即可运行,使用YOLOv3-tiny
模型预测用时约为1~1.2s
,是树莓派的合适之选。
步骤
1.安装基本环境镜像
2.安装opencv可以看我的这篇博客树莓派opencv安装以及输出摄像头灰度视频_Y_Hungry的博客-优快云博客
3.安装make
sudo apt-get install -y cmake make
4.安装NNPACK-darknet
首先,进入安放文件的文件夹。
下载并编译NNPACK-darknet
git clone https://github.com/mrhosseini/NNPACK-darknet
mkdir build
cd build
cmake .. -DCMAKE_C_FLAGS=-march=armv6k
make
退回NNPACK-darknet
文件夹后配置环境变量
cd ..
sudo cp `find . -name "*.a" ` /usr/lib/
sudo cp include/nnpack.h /usr/include/
sudo cp deps/pthreadpool/include/pthreadpool.h /usr/include/
5.下载darknet-nnpack
安装依赖项
sudo apt-get install -y clang
下载并编译darknet-nnpack
git clone https://github.com/digitalbrain79/darknet-nnpack.git
cd darknet-nnpack
rm -rf build
mkdir build
然后,编辑Makefile
文件,将文件开头的OPENCV=0
改为OPENCV=1
。
进行编译
cd build
cmake .. -DCMAKE_C_FLAGS=-march=armv6k
make
这个适合估计会报错找不着opencv2
把opencv的环境变量弄一下
sudo ln -s /usr/include/opencv4/opencv2/ /usr/local/include/opencv2
cp /usr/include/opencv4/opencv2 /usr/include/opencv2
同时修改makefile的opencv版本
然后重新make
使用YOLO进行预测
可以用来检测图像和视频。命令分别是
图像:./darknet detector test xxx
视频:./darknet detector demo xxx
检测图像
因为默认是coco
数据集(80个分类),所以这里也用对应的coco
数据集的权重文件,否则需要特别修改分类数量来对应起来。
下载yolov3-tiny.weights
权重文件
wget https://pjreddie.com/media/files/yolov3-tiny.weights
把darknet拷贝到darknet-nnpack
目录下,输入命令开始预测
./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg