LoginSignup
30
30

More than 5 years have passed since last update.

TensorFlow Object Detection APIをWindowsで使ってみた

Last updated at Posted at 2017-11-15

TODA.JPG

2017年6月にGoogle社から発表されたTensor Flow Object Detection APIのサンプルコードを動かしてみました。
UbuntuやMacOSで環境構築する方法がここここここに詳しく書かれていましたので、参考にさせていただきながらWindows環境で構築してみようと思います。

長々と記事を書いてしまったので、太字コードのインラインだけ入力したら動くように書いているつもりです。

記事は2017/11/14に書き始めていますので、以降はインストールするもののバージョンが新しくなっているかもしれません。

(2018/4/25追記:Anaconda navigator上での操作 ⑤Protobufのコンパイル で入力するコードのハイフンが1つ全角になっていましたので、正しいコードに修正しました。)

環境構築

①ANACONDAのインストール

ANACONDAからanaconda.JPGDownloadをクリックします。自動的に64bit版がインストールされます。
インストールはインストーラの指示通りに行いました。

②TensorFlowのモデルをダウンロード

githubにTensorFlow Modelsが置いてありますので、画面右側のmodel.JPGから、Download ZIPをクリックします。
ダウンロードしたmodels-master.zipを展開すると、フォルダmodels-masterが解凍されます。
私は、このmodels-masterをWindowsのユーザフォルダの中にフォルダAnacondaProjectsを作成し、その中に移動しました。(C:\Users\xlab_01\AnacondaProjects\models-master)
どこに置いているかを把握できていればどこでもよいと思います。

③Protobufのダウンロード

こちらもgithubにProtocol Buffersが置いてあります。画面を下にスクロールするとDownloadsがありますので、Windowsに対応したものをダウンロードします。今回はprotoc-3.4.0-win32.zipをダウンロードしました。
展開したフォルダ内のフォルダbinに入っているファイルprotoc.exeを、先ほどのmodels-master内のフォルダresearchの中に移動します。

④PYTHONPATHの設定

<最重要>
環境変数の設定からPYTHONPATHを通します。Windows10の環境下では、PCのプロパティから、画面左側のシステムの詳細設定に入ります。画面右下の環境変数をクリックすると、環境変数の設定画面に入ります。画面が二段に分かれていますが、上部のユーザ環境変数で新規をクリックします。変数名および変数値は以下のとおりです。
変数名:PYTHONPATH
変数値:~\models-master\research;~\models-master\research\slim

変数値にはmodels-master内のresearchと、さらにその中のslimの二ヵ所に設定します。
私の環境下では、変数値には以下のように入力しています。C:\Users\xlab_01\AnacondaProjects\models-master\research;C:\Users\xlab_01\AnacondaProjects\models-master\research\slim
環境変数を設定したら、パソコンを一度再起動してください。


以上が、事前準備になります。
特に、PYTHONPATHの設定ができていないと、後のObject Detection APIの動作確認でエラーが出てしまいます。後の作業でエラーが出てしまったら、ここに戻って確認してみてください。
では、ここからはAnaconda navigatorを起動して操作していきます。

Anaconda navigator上での操作

①Anaconda navigatorの起動

ananavi.JPG

Anaconda navigatorを起動したら、画面左側のEnvironmentsをクリックします。上図のような画面になりますが、まだ何も作成していなければ、真ん中は空っぽだと思います。これからObject Detection APIの実行環境を構築していきます。

②実行環境の構築

さきほどの画面の下部にある、Createをクリックします。実行環境の名前は任意に指定してください。Pythonのバージョンはデフォルトのままでよいのだと思います。私の場合は、名前はobj-detectとし、Pythonのバージョンは3.6としました。
実行環境が追加されたら、名前の右側にある三角ボタンをクリックしOpen Tarminalをクリックします。その後、自動的にコマンドプロンプトが起動します。

③tensorflowのインストール

この実行環境にtensorflowをインストールします。
まず、コマンドプロンプトで以下のコマンドを入力します。
pip install tensorflow
GPU版のtensorflowをインストールする場合は、先ほどのコマンドの代わりに以下のコマンドを入力します。
pip install tensorflow-gpu

④ライブラリのインストール
  • Protobuf 2.6
  • Pillow 1.0
  • lxml
  • Jupyter notebook
  • Matplotlib

これらをインストールするために、以下のコマンドを入力します。
pip install Protobuf Pillow lxml
pip install Jupyter
pip install Matplotlib

⑤Protobufのコンパイル

コマンドプロンプト上で、フォルダmodels-master内のフォルダresearchの中まで移動します。以下のコマンドで移動しますが、~~の部分は各々の環境に合わせて下さい。
cd ~~\AnacondaProjects\models-master\research
私の環境下では、以下のコマンドになります。
cd C:\Users\xlab_01\AnacondaProjects\models-master\research

移動できたら、以下のコマンドを入力してProtobufをコンパイルします。
環境構築の③Protobufのダウンロードを事前に終わらせてから実行してください。
protoc object_detection/protos/*.proto --python_out=.
問題がなければ下図のように、何事もなく処理が終了します。

compile.jpg

⑥テスト

以上の処理で、環境が構築できているはずなので、テストしてみます。
⑤と同じ場所で以下のコマンドを入力します。
python object_detection/builders/model_builder_test.py

実行後に、OKと表示されれば環境構築が正しくできています。
line21にエラーが出てしまった場合は、環境構築の④PYTHONPATHの設定に失敗しています。もう一度やり直してみてください。

Object Detection APIの実行

①jupyter notebookの起動

さきほどの⑥テストの続きから進めていきます。
まず、cd コマンドでobject_detectionに移動します。
そして、以下のコマンドでjupyter notebookを起動します。
jupyter notebook

juputer.jpg

②実行

jupyter notebookが起動したら、object_detection_tutorial.ipynbをクリックします。
そして、下図のようにobject_detection_tutorial.ipynbが開いたら、Cellを押してRun Allをクリックします。
exe.jpg

以下の写真のように判定結果が表示されます。本サイトのトップに表示していた写真も表示されるはずです。
dog.jpg

③新たな写真を追加し判定させる

用意されている写真での判定ができましたので、自由な写真を使ってObject Detection APIによる判定をしてみます。
このワンちゃんと海辺の写真は以下のフォルダに格納されています。
~~\models-master\research\object_detection\test_images
私の環境下では、
C:\Users\xlab_01\AnacondaProjects\models\research\object_detection\test_images
です。
ワンちゃんの写真はimage1.jpg、海辺の写真はimage2.jpgです。
ここに、同じ命名規則で写真を保存します。
私は、下図のようにimage3.jpgとimage4.jpgを追加しました。
pict.jpg

次にjupyter notebook上でソースコードを書き換えます。といっても、for文の繰り返し処理の終了条件を変更するだけです。下図中の赤丸で囲んでいる部分の後ろの数字が終了条件になります。
range(1, 〇)の〇の部分を「保存した画像のナンバー+1」に変更することで新たに追加した写真を判定してくれます。もし、ワンちゃんと海辺の写真はもう判定不要であれば、前の数字を3にしてください。

for.jpg

おわりに

以上で、今回のTensorFlow Object Detection APIをWindowsで使ってみた。のすべてになります。
私はPythonを使ったことがないのに、tensorflow使ってみたい!とはじめてみたのでPYTHONPATHを通すところで何度かつまづいていました。

次は、sentdexさんが以下の動画のシリーズでやっているように、自分で学習させて判定してみたいと思います。(マカロニチーズはもう見たくない。。。(笑))
Intro - TensorFlow Object Detection API Tutorial p.1
https://www.youtube.com/watch?v=COlbP62-B-U

30
30
2

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
30
30