目的
YoctoでTensorFlow Liteのpip
packageをビルド、インストールするレシピを作成する。
bitbakeしたイメージをラズパイ4で動かしてみる。
動機
TensorFlowのレシピはあったりするが(以前ブログにした)、TensorFlow LiteのPython
interpreterのレシピがなかったこと、あとからpipでインストールするのが結構めんどくさいので、レシピを作成することにした。
meta-tensorflow-lite
meta-tensorflow-liteとしてGitHubにレシピを公開している。v2.3.1に対応。
リファレンス
TensorFlow Liteのビルドは以下が参考になる。
ビルド
リポジトリのREADMEにもある通り。
- 確認はラズパイ4の32 / 64bitで実施。
- イメージはcore-image-weston(他も動くはず)。
- dunfell, zeusに対応。
zeusは人生初めてPRをもらった!(Support also zeus version #1)
必要なリポジトリをClone。
$ git clone git://git.yoctoproject.org/poky.git $ git clone git://git.yoctoproject.org/meta-raspberrypi $ git clone git://git.openembedded.org/meta-openembedded $ git clone https://github.com/NobuoTsukamoto/meta-tensorflow-lite.git $ source poky/oe-init-build-env rpi-build
レイヤーの追加
$ bitbake-layers add-layer ../meta-openembedded/meta-oe/ $ bitbake-layers add-layer ../meta-openembedded/meta-python/ $ bitbake-layers add-layer ../meta-openembedded/meta-networking/ $ bitbake-layers add-layer ../meta-openembedded/meta-multimedia/ $ bitbake-layers add-layer ../meta-raspberrypi/ $ bitbake-layers add-layer ../meta-tensorflow-lite/
conf/local.confにpython3-tensorflow-liteを追加。あと、opencvのpythonやgitも追加すると楽。
MACHINE ?= "raspberrypi4-64" IMAGE_INSTALL_append = " python3-tensorflow-lite"
あとはBitbakeしてSDカードに書き込み。
$ bitbake core-image-weston
このリポジトリでTensorFlow Liteモデル(Float, INT8)が動くことを確認。
(注意:Edge TPUは動作しません)
TensorFlow Lite Python interpreterをビルドするYoctoのrecipeを作成してみた。
— nb.o (@Nextremer_nb_o) July 12, 2020
ラズパイ4 AArch64、core-image-weston
(たぶんarm32bitもOK)
ようやく、picamera+opencv pythonが動くところまで確認できた(picameraが認識できなくて一週間悩んだ...)。https://t.co/nW38Oe58MQ pic.twitter.com/DdetVOi7Tz
その他
やったこと
tensorflow/lite/tools/pip_package/build_pip_package.shでpip packageを作成してインストールするレシピを作成。
-
curlがつかえないのでwgetに置き換える。
001-Change-curl-to-wget-command.patch
-
クロスコンパイラが「arm-linux-gnueabihf-g++」、「aarch64-linux-gnu-g++」固定なので、yoctoのクロスコンパイラを指定するようにする。
001-Remove-toolchain-setup-and-pybind11.patch
-
あわせて、tensorflow/lite/tools/make/Makefile
001-TensorFlow-Lite_Makefile.patch
-
作成したpip packageがどこにあるのか分からなかった...
とても長いパス...
PiCameraが有効にならなかった
meta-rasberrypiの設定でPiCameraを有効としてもまったく認識しなくて1週間悩んでいた...
Interface誌で「My オリジナルLinuxの作り方」連載されている!みつきんさん(@yusuke_mitsuki)!!にもアドバイスいただいたのだが認識せず。。。(その節はありがとうございます!)
picameraが認識できなかった件、みつきんさん(@yusuke_mitsuki)にいろいろアドバイスいただきました。
— nb.o (@Nextremer_nb_o) July 12, 2020
ありがとうございます!!
(Interface誌の連載、読んでます!)https://t.co/R3THlZuxmd
結局はboot/config.txtのPiCameraを有効にする「start_x=1」を643行目?以降に記述するとカメラを認識できなくなるようだ...
同じような事象で困っていた人は他にもいたようだ...
(個体なのか何なのか)認識する場合もあるので、もし、ラズパイ4で同じ事象があったら、行数を意識すること。
終わりに
あとは、Edge TPUも動かしてみたいなぁ...
0 件のコメント:
コメントを投稿