LoginSignup
3
6

More than 5 years have passed since last update.

Raspberry Pi3でTensorflowのObject Detection APIを使えるようにしてみる

Last updated at Posted at 2019-04-29

※この文書は個人用のメモです。

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

3
6
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6