0
0
この記事誰得? 私しか得しないニッチな技術で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

LuckfoxPicoMaxでncnnをクロスコンパイルしてbenckmarkを実行する手順

Last updated at Posted at 2024-07-03

目的

PC(Ubuntu)にクロスコンパイル環境を構築して、ディープラーニングフレームワークのncnnとベンチマークソフトウェアのbenchmarkビルドし、LuckfoxPicoMaxでncnn benchmarkを実行します。

また、こちらのリポジトリで、これまでにCoreMP135、Raspberry Pi Zero 2 W、M5Stack_UnitV2、LicheeNano RV、Luckfox Pico Maxでのncnn benchmarkを比較した結果を公開しています。

PC環境

まず以下のバージョンのUbuntuをインストールしたPC環境で、クロスコンパイル環境を構築します。

Ubuntu 22.04.3 LTS(x64)

コンパイルにツールチェインのインストール

コンパイルに必要なツールチェインを含むパッケージをaptからインストールします

$ sudo apt install crossbuild-essential-armhf crossbuild-essential-arm64

以下のコマンドを実行して、コンパイラのバージョン情報が出てれくれば、ツールチェインのインストールが完了です。

$ arm-linux-gnueabihf-g++ -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabihf/11/lto-wrapper
Target: arm-linux-gnueabihf
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)

ncnnのインストール

ncnnは、Tencentが開発しているモバイルプラットフォーム向けに最適化された高性能なニューラルネットワーク推論コンピューティングフレームワークです。

このシェルスクリプトで、ARMプロセッサ向けにncnnライブラリをgitからクローン、ビルド、そしてインストールします。

$ git clone https://github.com/Tencent/ncnn.git -b 20240410 --depth 1 
$ cd ncnn/
$ cmake -B build/arm_luckfox -DCMAKE_TOOLCHAIN_FILE=./toolchains/arm-linux-gnueabihf.toolchain.cmake -DNCNN_SIMPLEOCV=ON -DCMAKE_BUILD_TYPE=Release -DNCNN_VULKAN=OFF -DNCNN_BUILD_EXAMPLES=OFF .
$ cmake --build build/arm_luckfox &&  cmake --install build/arm_luckfox --prefix install/arm_luckfox

ncnn benckmarkのインストール

ncnnディレクトリ内でbenckmarkのファイルを整理し、それをzip圧縮します。

$ cd ncnn
$ mkdir install/arm_luckfox/benchmark
$ cp ./build/arm_luckfox/benchmark/benchncnn ./install/arm_luckfox/benchmark
$ cp ./benchmark/*.param ./install/arm_luckfox/benchmark
$ zip -r ./install/arm_coremp135/arm_luckfox_ncnn_benchmark.zip ./install/arm_luckfox/benchmark

LuckfoxPicoMaxでのベンチマークの実行

zipファイルをLuckfoxPicoMaxにscpでコピー、LuckfoxPicoMaxでncnn benchmarkを実行します。

# unzip arm_luckfox_ncnn_benchmark.zip 
# cd benchmark
# ./benchncnn 4 1 0 -1 1
loop_count = 4
num_threads = 1
powersave = 0
gpu_device = -1
cooling_down = 1
        squeezenet  min =  459.52  max =  460.33  avg =  459.80
     squeezenet_int8  min =  309.75  max =  310.10  avg =  309.92
           mobilenet  min =  797.15  max =  797.50  avg =  797.37
      mobilenet_int8  min =  414.08  max =  414.60  avg =  414.35
        mobilenet_v2  min =  517.26  max =  518.28  avg =  517.69
        mobilenet_v3  min =  422.17  max =  422.56  avg =  422.37
          shufflenet  min =  275.52  max =  276.03  avg =  275.78
       shufflenet_v2  min =  247.08  max =  247.42  avg =  247.29
             mnasnet  min =  514.06  max =  514.51  avg =  514.22
     proxylessnasnet  min =  590.52  max =  590.94  avg =  590.71
     efficientnet_b0  min =  873.99  max =  874.59  avg =  874.19
   efficientnetv2_b0  min = 1028.21  max = 1029.42  avg = 1028.89
        regnety_400m  min =  628.44  max =  628.85  avg =  628.62
           blazeface  min =   73.65  max =   74.32  avg =   74.12
           googlenet  min = 1477.98  max = 1479.47  avg = 1478.75
      googlenet_int8  min =  947.31  max =  949.72  avg =  948.40
Killed

LuckfoxPicoMaxでncnnをクロスコンパイルしてbenckmarkを実行することができました。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0