WindowsにTensorflow1.15のObject Detection 環境を作ってみた。


Tensorflow の Object Detection API を今更ながら、Windows10 で試したので、構築からAPIのデモまでのメモです。
他の人もいっぱい書いているので需要があるか分からないけど、 Qiita 初投稿の練習も兼ねて書いてみた。

インストール環境

・OS:Windows 10 Home バージョン 1909
・CPU:Intel core i5-2450M
・メモリ:8G
・HDD:SSD 500GByte

Windowsのアップデート

・先ずは、Windows Update で更新プログラムの更新を行う。
注意:20H2 への機能更新はしないでください。(2020/12/12時点)
numpyが対応していないようで、Object Detection APIのセットアップでエラーを吐きます。
間違えて更新してしまった場合、10日間は戻せますので、「設定」→「更新とセキュリティ」→「回復」から更新を戻す。

Pythonのインストール

WindowsのPythonをダウンロードして、インストールする。
Python japan の下記URL を参照し、パッケージのダウンロードを参考に Python のパッケージ(python-3.7.9-amd64.exe)をダウンロードしてインストーラーを実行
https://www.python.jp/install/windows/install.html
注)Tensorflow 1.15 が対応している Python のバージョンが 3.7 なので、バージョンを間違えないよう注意

Python virtualenv のインストール・仮想環境の作成

今後、色々なバージョンの Python や Tensorflow を利用する可能性を考え、virtualenv を導入しておく。
Anaconda でも良かったのですが、有償化の規約がちょっとアレだったので、virtualenv を利用

コマンドプロンプトを実行して、下記のコマンドで virtualenv をインストール

> pip install virtualenv

Python のインストールフォルダを確認

> where python
C:\Users\[ユーザ名]\AppData\Local\Programs\Python\Python37\python.exe
C:\Users\[ユーザ名]\AppData\Local\Microsoft\WindowsApps\python.exe

仮想環境の作成時に \AppData\Local\Programs\ の方のPython を指定

仮想環境を作成
仮想環境名には利用する Tensorflow のバージョンを指定することにした。

> python -m virtualenv --python=C:\Users\[ユーザ名]\AppData\Local\Programs\Python\Python37\python.exe tf-1153

仮想環境に入るとコマンドプロンプトに仮想環境名が表示される。

> tf-1153\Scripts\activate
(tf-1153) C:\Users\[ユーザ名]>

Git をインストール

下記のGitのサイトからインストーラーをダウンロードし、インストーラーを実行します。
https://gitforwindows.org/

基本的には、設定の変更を行わず「Next >」ボタン進み、「Install」ボタンでそのままインストールしてOKです。

Tensorflow をインストール

Tensorflow のバージョン 1.15.3 をインストール
パソコンに NVIDIA の GPU がついている場合は、CUDA や cuDNN など 必要なモジュールをインストールしたうえで「tensorflow」を「tensorflow-gpu」に変更して GPU 対応版の Tensorflow をインストール

> pip install tensorflow==1.15.3

OpenCV をインストール

何かと画像処理が必要になることもあるので、OpenCV をインストール

> pip install opencv-python

Object Detection API のモジュールを取得

作業用のフォルダを作成

> mkdir wtf1153
> cd wtf1153
(tf-1153) C:\Users\[ユーザ名]\wtf1153>

github から Object Detection API を取得

> git clone https://github.com/tensorflow/models

protocol buffers をインストール

Tensorflow で利用するモジュールをインストール
・github から Windows 用のバイナリ(protoc-3.14.0-win64.zip)をダウンロードする。
 https://github.com/protocolbuffers/protobuf/releases/
・ダウンロードしたバイナリを適当なフォルダに展開
C:\Program Files\フォルダの下にフォルダ「protoc」を作成
・展開した protocol buffers を作成した「protoc」フォルダに移動
 C:\Program Files\protoc\protoc-3.14.0-win64
・protoc フォルダに path を通す
①[スタート]を右クリック → [システム]の「システム情報」をクリック → [システム]の「システムの詳細設定」をクリック → [システムのプロパティ]を表示
②[詳細設定]タブ下の[環境変数(N)…]ボタンをクリック
③[ユーザ名]のユーザー環境変数(U) Path を選択し、[編集(E)…]ボタンをクリック
④環境変数名の編集で[新規(N)]ボタンをクリックし、C:\Program Files\protoc\protoc-3.14.0-win64\bin\を入力
⑤[OK]ボタンをクリックして「環境変数名の編集」「環境変数」「システムのプロパティ」を閉じる
⑥新しいコマンドプロンプトを実行し、protocのバージョンを確認

> protoc --version
libprotoc 3.14.0

バージョンが表示されれば、protocol buffers のインストールは完了

Object Detection で利用する protocol buffers のモジュールをコンパイル

> tf-1153\Scripts\activate
(tf-1153)> cd wtf1153\modules\research
(tf-1153)> protoc object_detection\protos\*.proto --python_out=.

object_detection\protos に拡張子が .py のファイルが出来ていれば完了

C++ ランタイムライブラリのインストール

Object Detection のセットアップで使用する、VC++ のランタイムを下記のURLからダウンロードして、インストーラーを実行
https://support.microsoft.com/ja-jp/topic/%E6%9C%80%E6%96%B0%E3%81%AE%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%82%8B-visual-c-%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89-2647da03-1eea-4433-9aff-95f26a218cc0

C++ コンパイラのインストール

Object Detection のセットアップで使用する、Visual Studio Build tools を下記のURLからダウンロードして、インストーラーを実行
https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16

build Tools が起動したら、C++ Build Toolsを選択してインストールを実行

Object Detection のセットアップ

Object Detection のセットアップファイルをコピーして、セットアップを実行

(tf-1153)> copy object_detection/packages/tf1/setup.py .
(tf-1153)> python -m pip install .

Object Detection のセットアップ結果を確認

セットアップ結果の確認を行うツールを実行し、セットアップが正常に行えていることを確認

(tf-1153)> python object_detection/builders/model_builder_tf1_test.py
  ~
 ~
----------------------------------------------------------------------
Ran 21 tests in 0.290s

OK (skipped=1)

最後にOK (skipped=1)と表示されていれば、Object Detection 環境の構築は完了

Jupyter notebook のインストール、起動

動作確認のチュートリアルを実行するため、Jupyter notebookをインストール

(tf-1153)> pip install notebook

Object Detectopn のチュートリアル実行

チュートリアルを実行するための、.ipynb を取得

(tf-1153)> cd %homepath%\wtf1153
(tf-1153)> git clone https://github.com/Mogtan3939/tf115-od-tutorial.git
(tf-1153)> cd tf115-od-tutorial
(tf-1153)> jupyter notebook

ブラウザが起動し Jupyter notebook の起動フォルダのファイル一覧が表示される。
チュートリアルファイルOD-tf1153-test01.ipynbをクリック
チュートリアルが新規タブで表示れるので [▶Run] ボタンをクリックして上から順番に実行していく

最後に Object Detecton 画像が表示される(ハズ)

何だか認識精度が低いけど・・・気にしない。