人工知性を作りたい

私が日々、挑戦したことや学んだことなどを紹介していく雑記ブログです。 (新しいAI技術HTM, 専門の音声信号処理, 趣味のアニメ等も書いてます。)

Raspberry PiでMediapipeの環境構築とBuild、Run【フリーズ問題解決】

f:id:hiro-htm877:20211213193606p:plain

本記事の特徴

・OpenCVのセットアップでフリーズ

・ハローワールドのビルドでフリーズ

上記の問題を解決します。

 

本記事のテーマ

【Raspberry PiでMediapipeのビルドが止まる問題の解決!】

・exampleにあるHallo Worldを動かす

環境構築からHalloWorldの手順

主に公式のInstallationの通りに行うのが良いと思います。

Installation - mediapipe

他の日本の方がまとめているサイトで参考にしたのは下記のサイトです。

dev.classmethod.jp

 

※追記:問題1と問題2を同時に解決する方法

スワップファイルを拡張することで解決できました!

ラズパイ(Raspbian Jessie)とスワップメモリ容量の変更(環境設定の続き) - 今日も微速転進

☆引用

エディタで/etc/dphys-swapfileを開き、CONF_SWAPSIZE という行の値を変更。例えば2048MB(2GB)なら以下のように変更。

CONF_SWAPSIZE=2048

設定したいSwapのサイズをMB単位で指定。

$ sudo systemctl stop dphys-swapfile
$ sudo systemctl start dphys-swapfile

systemctl経由でstop/start する。実際に呼び出されるのは/etc/init.d/dphys-swapfile。 なお、swapの容量を変更した直後は内部でddコマンドが呼び出されるので非常に時間がかかります。

最後にfree -hで意図した容量に設定されているか確認。

$ free -h
             total       used       free     shared    buffers     cached
Mem:          862M       833M        28M       6.3M        36M       656M
-/+ buffers/cache:       140M       721M
Swap:         2.0G         0B       2.0G

 

問題1:OpenCVビルドでフリーズ

Installationの3Install OpenCV and FFmpeg.のOption2であるsetup_opencv.shを実行すると途中でフリーズするという現象に会いました。

試行錯誤した結果、viなどでsetup_opencv.shを以下のように変更するとフリーズせずにビルドが通るようになりました。

77行めのmake -j 16を -j4に変更する。(使用する並列処理の数を減らす)


77    make -j 16 → make -j 4
78    sudo make install
79    rm -rf /tmp/build_opencv
80    echo "OpenCV has been built. You can find the header files and libraries in /usr/local/include/opencv2/ and /usr/local/lib"

 

問題2:bazel runでフリーズ

問題1と同様にjobsを下げてみたがそれでもフリーズした。

調査した結果、bazelには--jobsだけでなく,--local_ram_resourcesでCPUのリソースの調整もできるらしい。

少しずつCPUの使用率を減らしていった結果、次のパラメータでビルドが通るようになった。(しかし2回失敗した後、3回めで成功。)


    # cd ~/mediapipe
    export GLOG_logtostderr=1

    bazel run --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 \
    mediapipe/examples/desktop/hello_world:hello_world --jobs 4\
    --local_ram_resources 280

ramのリソースは使用するラズパイのCPUによって変わるため、コマンド(free -h)を用いて最大使用できるCPUリソースを確認してから減らすと良いと思います。

・freeコマンドの使い方(サイト内のメモリ容量参照)

Linux のメモリ容量・CPUコア数・ディスク容量を確認する - 猫でもわかるWebプログラミングと副業

 

参考文献

・bazelのjobsリファレンス

Command-Line Reference - Bazel main

・bazelのlocal_ram_resources

Command-Line Reference - Bazel 0.23.0

 

 

以上、ご参考になると幸いです!

質問などは下のコメント欄でお待ちしております!