2020年11月3日火曜日

YoctoでTensorFlow Lite (Build pip package)

目的


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/tools/pip_package/build_pip_package.shでpip packageを作成してインストールするレシピを作成。



PiCameraが有効にならなかった


meta-rasberrypiの設定でPiCameraを有効としてもまったく認識しなくて1週間悩んでいた...
Interface誌で「My オリジナルLinuxの作り方」連載されている!みつきんさん(@yusuke_mitsuki)!!にもアドバイスいただいたのだが認識せず。。。(その節はありがとうございます!)


結局はboot/config.txtのPiCameraを有効にする「start_x=1」を643行目?以降に記述するとカメラを認識できなくなるようだ...
同じような事象で困っていた人は他にもいたようだ...

(個体なのか何なのか)認識する場合もあるので、もし、ラズパイ4で同じ事象があったら、行数を意識すること。


終わりに


あとは、Edge TPUも動かしてみたいなぁ...

0 件のコメント:

コメントを投稿