TensorFlow Object Detection APIの環境構築と実行のまとめ – MacOSとUbuntu 16.04に対応

シェアしていただけると嬉しいです

Object Detection APIの実行結果

Googleから一般物体検知の新しいAPIが発表されました。(Tensorflow Object Detection API

このAPIは最新の一般物体検知技術と様々な画像認識(分類)技術を組み合わせた、学習済みのディープラーニングネットワークを利用することができます。

今回は、Object Detection APIの環境構築と実行までを解説したいと思います。

基本環境
OS: macOS Sierra 10.12.5
TensorFlow: 1.2 (virtualenv実行)
Python: 2.7.10

TensorFlow Object Detection APIのコードをGitHubからcloneする

TensorFlow Object Detection APIはTensorFlowの機械学習モデルの一つとしてオープンソースで公開されています。(GitHub公開: TensorFlow Models

TensorFlow Object Detection APIを動かすには、まずソースコードをローカルPCにダウンロードするかCloneします。

ここでは、Cloneして動作させたいと思います。

作業フォルダに移動して、git cloneを実行します。

TensorFlow Object Detection APIのセットアップ

Object Detection APIを動かすには依存ライブラリをインストールする必要があります。

依存ライブラリ
Protobuf 2.6
Pillow 1.0
lxml
Jupyter notebook
Matplotlib

pythonパッケージの場合はpipコマンでインストールできますが、「Protobuf」はpipでインストールできないので、パッケージ管理ソフトからインストールします。

Ubuntuの場合は「apt-get」を利用します。

MacOSの場合は最近一般的な「homebrew」を利用します。

ライブラリのインストールが終わったら、cloneしたmodelsフォルダに移動して以下の作業を行います。

Protobufのコンパイル

APIを利用する前にProtobufをコンパイルします。

PYTHONPATHの追記

PYTHONPATHにslimディレクトリのパスを追記します。因みに、slimディレクトリはCloneしたmodelsフォルダに含まれています。(virtualenvでTensorFlowを動かしている場合は、起動の度に毎回実行する必要があります。面倒な場合は.bashrcに追記しておくと良いでしょう。)

Testコマンドの実行

APIを動かす環境の準備が正しく完了したかどうかtestスクリプトを実行して確認します。

「OK」と表示されたらObject Detection APIを動かす準備が整いました。

TensorFlow Object Detection APIの実行

Object Detection APIを実行させる準備が完了したので、サンプルコードを動かしてみます。

サンプルコードはjupyterベースになっているので、簡単にステップバイステップで動かすことができます。

models/object_detectionに移動して、jupyterを実行させます。

ブラウザからjupyterのローカルホストにアクセスして、「object_detection_tutorial.ipynb」をクリックして開きます。

jupyterの実行

上部の実行ボタンをクリックするとコードが逐次実行されるので、最後のコードまでボタンを押して実行させます。(途中の「Download Model」のところでしばらく時間がかかります。)

最後まで実行させると、以下のような画像が表示されて正しく物体検知できていることが確認できます。

Object Detection APIの実行結果

Object Detection APIの実行結果

テスト画像の変更

物体検知させる画像を変更するには、「TEST_IMAGE_PATHS」部分のコードを変更します。

物体検知モデルの変更

サンプルコードでは物体検知のディープラーニングネットワークに、Single Shot Multibox Detector (SSD)にMobileNetを組み込んだネットワークモデルを使っています。

Object Detection APIでは下記の学習済みネットワークモデルを使用できます。

学習済みモデル ネットワークモデル名
SSD with MobileNet ssd_mobilenet_v1_coco_11_06_2017
SSD with Inception V2 ssd_inception_v2_coco_11_06_2017
R-FCN with Resnet 101 object_detection/rfcn_resnet101_coco_11_06_2017
Faster RCNN with Resnet 101 faster_rcnn_resnet101_coco_11_06_2017
Faster RCNN with Inception Resnet v2 faster_rcnn_inception_resnet_v2_atrous_coco_11_06_2017

ネットワークモデルを変更するには、ソースコードの「MODEL_NAME」の箇所を上記のネットワークモデル名に変更します。

シェアしていただけると嬉しいです

フォローしていただけると、ブログ更新を見逃しません

feedly2 push7

follow us in feedly


TensorFlow Object Detection APIの環境構築と実行のまとめ – MacOSとUbuntu 16.04に対応
この記事をお届けした
アイデアハックの最新ニュース情報を、
いいねしてチェックしよう!