Translate

2019年8月14日水曜日

Windows10上でRaspberry Pi Zero用Tensorflow Lite 静的ライブラリのコンパイル方法

Donkeycarのバージョンが3.1.0にあがってしまいました..
3.1.0の目玉はTensorRT対応とTensorflow Lite対応です。
TensorRTはGPUがそもそもないのでどうでもいいですがLiteのほうは..Zeroで自動走行にすると内部エラーで落ちる問題が解決できるかもしれない..ということでRaspberry Pi ZeroにTensorflow Liteをインストールしなくてはなりません。

でもそんなwheelファイル誰も公開していない..TawnさんにSlackできいても知らないとの答え..

しょうがないので公式ドキュメントに従ってコンパイルをすることになったわけです。

----

Tensorflow LiteドキュメントにはDockerコンテナ上でクロスコンパイルする手順がかかれていますが、あくまでarmv7l(3B/3B+)用であり、get started に whlファイルのダウンロード元URLがかかれているので、正直コンパイルするひつようがありません。

でもなぜかZero用のarmv6用は置かれていないので、自分でコンパイルするしかありません。

以下、手順を紹介しますが、すべての機能のテストをしていませんので、動かなくてもごめんなさい。
Tensorflow本体のビルドは40時間以上かかるというブログ記事情報もあったりしますが、ここに書かれている手順はLiteの静的ライブラリ作成だけなので、Lenovo T470で20分くらいだったとおもいます。

----

Docker Desktopのインストール

  • Windows10上にDocker Desktopをインストール
  • Docker Desktop>Settings>Shared Drives
  • Cドライブをシェア

クロスコンパイル環境コンテナの起動

  • コマンドプロンプトを管理者として起動
  • cd c:/Users/ユーザ名
  • mkdir tmp
  • docker run -it -v c:/Users/ユーザ名/tmp:/projects tensorflow/tensorflow:nightly-devel /bin/bash
(Proxy指定が必要な場合)
  • cat >> /etc/apt/apt.conf <
  • Acquire::http::Proxy "http://proxy.server:XXXX";
  • Acquire::https::Proxy "http://proxy.server:XXXX";
  • Ctrl+D


  • apt-get update
  • apt-get install crossbuild-essential-armhf vim

リポジトリのチェックアウト

(Proxy指定が必要な場合)
  • git config --global http.proxy http://peoxy.server:XXXX
  • git config --global https.proxy http://peoxy.server:XXXX

  • cd /projects
  • git clone https://github.com/tensorflow/tensorflow
  • cd tensorflow
  • git checkout master


Raspberry Pi Zero用設定に書き換え

  • vi vi tensorflow/lite/tools/make/targets/rpi_makefile.inc
  • 5行目:TARGET_ARCH := armv6 に変更
  • 38行目:-fPIC の末尾に \ 追加
  • 39行目:-marc 挿入
  • 46行目:-fPIC の末尾に \ 追加
  • 47行目:-marc 挿入
  • 53行目:-Wl,--as-needed の末尾に \ 追加
  • 54行目:-latomic 挿入

コンパイル実行

  • ./tensorflow/lite/tools/make/download_dependencies.sh
  • ./tensorflow/lite/tools/make/build_rpi_lib.sh
  • exit


静的ライブラリファイルのデプロイ

  • WinSCPなどを使って以下のファイルをRaspberry Pi Zero上の/usr/local/libなどにコピー
C:\Users\89004\tmp\tensorflow\tensorflow\lite\tools\make\gen\rpi_armv6\lib\libtensorflow-lite.a

------

..公式サイトにwheelファイルリンクがないのはもしかしたらZeroでは動作しないということなのかもしれないなあ..

そのあたりは自己責任でお願いします...



ps

WinSCP後の後始末

クロスコンパイル環境コンテナの削除

  • docker container ls -a でコンテナID先頭3文字を確認
  • docker container rm コンテナID先頭3文字


イメージの削除

  • docker image rm tensorflow/tensorflow:nightly-devel


作業ディレクトリの削除

  • cd c:/Users/ユーザ名
  • del /f tmpY選択

Raspberry Pi 4B(Raspbean buster lite) へ pyrealsense2 をインストールする

DonkeycarでIntel RealSense T265 トラッキングカメラを使おうと思ったのだけど、ドキュメントにUSB3.0推奨とある記述をみつけだ。 どうもUSB2.0でも動作するのだけど、イメージストリームを使う場合などは3.0のほうが良いのだろう。白黒の800...