yam’s Lab

ハマったこと、学んだことを備忘録として記事にします。主にC++,Qt,ROS,Pythonについて取り扱います。

CPU環境でdarknetの高速化

CPU環境でdarknetの推論速度を高速化する手順を紹介します。

環境は以下となります。
環境:Raspberry Pi 4、Ubuntu MATE

使用するのは下記URLのdarknetとNNPACKを組み合わせたコードです。
GitHub - digitalbrain79/darknet-nnpack: Darknet with NNPACK

推論速度

640 x 424の画像に対してpre-trainedモデルを使用し推論速度を比較しました。
YOLOv3-tiny:0.67秒
YOLOv3:5.50秒

気をつける点

ソースコードは最新のNNPACKに対応していないため、NNPACKに関連するソースコードを一部古いバージョンに変更する必要があります。

ではインストール手順を紹介します。

PeachPy と confu のインストール

sudo pip install --upgrade git+https://github.com/Maratyszcza/PeachPy
sudo pip install --upgrade git+https://github.com/Maratyszcza/confu

Ninja のインストール

cd
git clone https://github.com/ninja-build/ninja.git
cd ninja
git checkout release
./configure.py --bootstrap
export NINJA_PATH=$PWD

clang のインストール

sudo apt install clang

**NNPACK-darknet インストール(1)
>|bash|
cd
git clone https://github.com/digitalbrain79/NNPACK-darknet.git
cd NNPACK-darknet
confu setup

NNPACK 関連のライブラリのバージョン変更

NNPACK 関連のライブラリの最新バージョンにNNPACK-darknetが対応していないため、deps フォルダ配下の NNPACK に関連するライブラリのバージョンを2018年11月8日以前に変更します。

cd deps/fp16
git checkout 34d4bf01bbf7376f2baa71b8fa148b18524d45cf
cd ../fxdiv
git checkout 811b482bcd9e8d98ad80c6c78d5302bb830184b0
cd ../psimd
git checkout 3d8bfe7318423462a6d9e0c6537e75efd4822c49
cd ../pthreadpool
git checkout 13da0b4c21d17f94150713366420baaf1b5a46f4

NNPACK-darknet インストール(2)

cd ../../
python3 ./configure.py --backend auto
$NINJA_PATH/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 のビルド

cd
git clone https://github.com/digitalbrain79/darknet-nnpack.git
cd darknet-nnpack
make