※この文書は個人用のメモです。
Object Detection APIをラズパイで使えるようにしてみる。
元ネタはこちら( https://github.com/EdjeElectronics/TensorFlow-Object-Detection-on-the-Raspberry-Pi )
使ったのはデバイスはRaspberry Pi 3B。
SDカードは8Gのものを使ったが、容量ギリギリなので16G以上を推奨する。
OSの準備
ここ( https://www.raspberrypi.org/downloads/raspbian/ )からRaspbianのイメージをダウンロードし、SDカードを作成する。今回はRaspbian Stretch with desktop 2019-04-08を使用した。
最新の状態にアップデートする
$ sudo apt-get update
$ sudo apt-get dist-upgrade
Tensorflowのインストール
$ sudo apt install libatlas-base-dev
$ pip3 install tensorflow
libatlasはNumpyが依存する線形代数ライブラリでtensorflowを入れる前に導入されている必要があるとのこと。aptでATLASを入れた後にpipでtensorflowをインストールする。使ったバージョンは1.13。
必要なライブラリのインストール
$ sudo apt install libxml2-dev libxslt1-dev
$ sudo pip3 install pillow lxml jupyter matplotlib cython
OpenCVのインストール
先に必要なライブラリをインストールする。
$ sudo apt install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
$ sudo apt install libavcodec-dev libavformat-dev libv4l-dev
$ sudo apt install libxvidcore-dev libx264-dev
$ sudo apt install qt4-dev-tools
$ sudo apt install libswscale-dev
ライブラリをインストールしたらpipでOpenCVをインストールする。
$ pip3 install opencv-python
protocolbuffersをインストール
最初に必要なツール類をインストールする。
$ sudo apt install autoconf automake libtool curl
protocolbufferのソースコードを取得する。
$ wget https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-all-3.7.1.tar.gz
取得したファイルを展開する。
$ tar -zxvf protobuf-all-3.7.1.tar.gz
$ cd protobuf-3.7.1
ビルドする。ビルドにはかなり時間がかかる(数時間くらい)
$ ./configure
$ make
$ make check
終わったらインストールする。
$ sudo make install
ライブラリのパスを設定し、pythonのモジュールをインストールする。
$ cd python
$ export LD_LIBRARY_PATH=../src/.libs
$ python3 setup.py build --cpp_implementation
$ python3 setup.py test --cpp_implementation
$ sudo python3 setup.py install --cpp_implementation```
環境変数を設定する。
$ export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
$ export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=3
ライブラリのパスを更新する。
$ sudo ldconfig
protoc
とコマンドプロンプトから入力し、正常に実行できればOK。
ここで一度再起動を行う。
$ sudo reboot
Tensor Flowのディレクトリ構造の作成と環境変数の設定
home directoryの直下にtensorflow用のディレクトリを作成する。
$ mkdir tensorflow
$ cd tensorflow
Tensorflowのレポジトリからgit cloneする。
git clone --recurse-submodules https://github.com/tensorflow/models.git
cloneが終わったら.bashrc
に以下のパスを追記する。
export PYTHONPATH=$PYTHONPATH:/home/pi/tensorflow/models/research:/home/pi/tensorflow/models/research/slim
変更したら、一度シェルを抜けて再度入りなおし、設定を有効にする。
Object Detection APIのprotoファイルをコンパイルする。
cd /home/pi/tensorflow/models/research
protoc object_detection/protos/*.proto --python_out=.
終わったらカレントディレクトリを移動し学習済みデータをダウンロードする。
cd /home/pi/tensorflow/models/research/object_detection
wget http://download.tensorflow.org/models/object_detection/ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz
tar -xzvf ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz
動作テスト
参考情報のURLからテスト用プログラムをダウンロードし、実行してみる。
wget https://raw.githubusercontent.com/EdjeElectronics/TensorFlow-Object-Detection-on-the-Raspberry-Pi/master/Object_detection_picamera.py
ダウンロードしたら以下のコマンドを入力し、実行してみる。
正常に動作したらOK。
python3 Object_detection_picamera.py --usbcam
※内蔵カメラを使う場合はオプションをとること。
参考情報
https://github.com/EdjeElectronics/TensorFlow-Object-Detection-on-the-Raspberry-Pi
https://qiita.com/hidakanoko/items/5292ca79e3ff53867e40
https://www.amelt.net/imc/programming/python/4942/
https://github.com/protocolbuffers/protobuf
kobayuta様
質問 させて頂きたいです。
以下のビルドが出来ません。
どのようにすれば出来るかアドバイスを頂ければ助かります。
使用環境 raspberry pi 3 Model B に
OS、RaspbianのNOOBSをインストールしています。
windows10のPCでjupyter notebookを使ってネットのWIFI経由で操作しています。
(ラズベリーの本体は目の前にあります。)
>>> 以下出来ないコマンドです。
ビルドする。ビルドにはかなり時間がかかる(数時間くらい)
$ ./configure
$ make
$ make check
aireborn様
私が確認したOSはRaspbian Stretch with desktop 2019-04-08であり、最新のBusterではこの手順は試していません。
ですのでその部分が影響している可能性があります。
また、操作時にはWin10のクライアントからTeraTermを使ってSSH経由で捜査しており、jupyter notebook上では試していないですが、そちらの環境によるのかもしれません。
エラーメッセージをみると、configureの実行時にPATH上にgccが見つからないとのことなので、
・build環境が正常にインストールされているか?(gccなど)
・path上にgccが存在するか?
を再度確認されるのが良いかと思います。
kobayuta様
ご指摘ありがとうございます。最新のBusterでしたので、もう一度OSを入れなおしてみます。
また、環境はjupyter notebookを使わずに、ディスプレイ関係を接続して直接操作してみます。
どうもうまく行かないので別の方法を探していましたが、週末に一からやり直して確認をしてみます。
ありがとうございました。
kobayuta様
![2無題.png](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![IMG_3955.JPG](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![IMG_3958.JPG](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![IMG_3959.JPG](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
ご指摘頂いた通り、Raspbian Stretch with desktop 2019-04-08で、
動作をさせることが出来ました。
途中、ImportError:No module named 'matplotlib'というエラーメッセージがでたので、
”matplotlibのインストール”というサイトでインポートしました。
https://teratail.com/questions/157875
ずっと解決せずに困っていましたので、大変助かりました、
ありがとうございました。
※シルバニアファミリーのうさぎ人形をCAT: 58%で認識されたのは少し笑えました。