今回の記事はTensorFlowの「Object Detection API」の環境構築をDockerで行い、「jupyter notebook」で実行する方法をご紹介する内容です。Windows、Mac両方を解説しております。初心者にも分かりやすいように記載していきますので是非参考にして見て下さい。
「Object Detection API」をDockerに環境構築
ではまずはdockerの環境を構築しいきます。
tensorflowのimageをビルド
docker run -it -p 8888:8888 tensorflow/tensorflow /bin/bash
#
上記のubuntuサーバにbashを立ち上げられています。
「Object Detection API」に必要なモジュールインストールとコンパイル
TensorFlowをベースにしたdockerコンテナ内で下記を順に実行していってください。
apt-get update
apt-get install git
apt-get install wget
apt-get install unzip
sudo apt-get install protobuf-compiler python-pil python-lxml python-tk
apt-getのアップデートからOSに必要なものをインストールしました。
必要なpythonモジュールもインストールです。
pip install --user Cython
pip install --user contextlib2
pip install --user pillow
pip install --user lxml
pip install --user jupyter notebook
pip install --user matplotlib
pip install --user tf_slim
pip install --user pycocotools#これもしかしたらOSによってerrorになるかもです。ここでエラーになった方は下の方でもう一度pip installしてください。
現在のカレントで下記実行
git clone https://github.com/tensorflow/models.git
git clone https://github.com/tensorflow/tensorflow.git
現在のディレクトリ配下のフォルダ一覧表示
ls
bin dev home lib64 mnt opt root sbin sys usr
boot etc lib media models proc run srv tmp var tensorflow
models,tensorflowが作成されていますね!!
では次にcocoapiをインストールします。
git clone https://github.com/cocodataset/cocoapi.git
ディレクトリを移動してコンパイルしていきます。
ls
bin cocoapi etc lib media models proc run srv tmp var
boot dev home lib64 mnt opt root sbin sys usr
cocoapiのフォルダがダウンロードされていますね!
cd cocoapi/PythonAPI
make
#予備、上記でインストールできていない方はここで
#pip install --user pycocotools
できたものを先ほどのmodelsの中の下記pathにコピー
cp -r pycocotools /models/research/
これでこのdockerコンテナ内ではcocoapiを利用できるようになりました。
次にTensorflow Object Detection API を利用利用するためにProtobuf librariesをコンパイルする必要が御座います。
そのためにコンパイルをしようと下記を実行したのですがエラーが出ました。
cd ../.. && cd models/research
cloneしたmodels/researchのフォルダにて下記実行
protoc object_detection/protos/*.proto --python_out=.
結果:エラー
protobuf-compilerの使い方がマニュアルにありましたのでそれに従ってインストールと解凍そしてコンパイルを行っていきます。
wget -O protobuf.zip https://github.com/google/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip
unzip protobuf.zip
includeとbinwフォルダが作成されております。
では再度上記のエラーになった操作を行なっていきます。
protocはbinフォルダに入っているので下記です。
./bin/protoc object_detection/protos/*.proto --python_out=.
このコンパイル時に国の情報を聞かれることがあります。Macでは聞かれたがWindowでは聞かれなかった。。
とりあえずこれでコンパイル終了。
Windowsの場合はこのprotobuf-compiler自体もインストールしてくる必要があります。
指定のtarファイルをtar xvfみたいなコマンドで(詳しくは調べてください)回答してきたものをresearchフォルダに置いてからprotocでコンパイルです。(Macの方が楽です。。)
次にpathの追加。
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
sourceに書き込み
source ~/.bashrc
下記でできてるか確認できるそうです。
python object_detection/builders/model_builder_tf1_test.py
Macでは表示:OK
Winではエラーになりました。でもjupyter notebookでは動いたのでまあOKかな?
おそらくsourceに書き込みができていなかったのかもですがまあ最終的に動くので気になるかたは上記一度実行してみて教えていただきたい。
ではこれで準備完了ですのでjupyter notebookで確認して見ましょう。
長い戦いでした。。
Dockerでjupyter notebook起動
cd ../..
jupyter notebook --ip=0.0.0.0 --allow-root
カレントディレクトリで開けます。
ちなみに引数で--notebook-dir=~で指定したいディレクトリで開けます。
これでURLが出たと思うのでブラウザで開き、フォルダの「models/research/object-detection/colab-tutorials/object_detection_tutorial.ipynb」を開いて実行していってください。
実行した結果はこちらご参照ください。
ちょっと設定をいちいちするのがめんどくさいので、Dockerfileに記載してbuildして実行できるようにしておく必要を感じたので別記事にて記載しておきます。
「dockerfileで「Object Detection API」環境構築と「Jupyter Notebook」使用を簡略化」
今回の記事は以上です。他にもtensorflow、dockerなど多数記事を書いているので気になる方は参考にしてください。
コメント
[…] […]
[…] […]
[…] ・TensorFlowとObject Detection APIの実行環境を構築 DockerでTensorFlow、Object Detection API実行環境構築方法・画像の整理(これは自身の好きな画像にする場合は適宜コード置き換えてください。) 自身の物体検知させたい画像を選択してください。・画像の水増し(必要な場合) 画像の輝度調整、水平垂直移動方法・アノテーション作業 アノテーション作業とは、アノテーション自動化・転移学習 転移学習方法、TFRecord形式のデータを転移学習する方法・TensorFlow学習グラフ(.pb)をTensorFlowLite形式(.tflite)に変換 pbからtfliteへの変換方法・googleテンプレートの指定箇所に自作モデルを置き換える Object Detection APIに自作学習モデルを入れ込む方法・Xcodeにてbuild カメラ関連アプリの実機テスト方法、 […]
[…] […]
[…] […]
[…] 【Docker/TensorFlow】DockerコンテナでTensorFlow Object Detection APIの環境構築を行いJ… […]
[…] 【Docker/TensorFlow】DockerコンテナでTensorFlow Object Detection APIの環境構築を行いJ… […]
[…] docker上で Python + jupyter notebookの環境を構築する方法 […]
[…] docker上で Python + jupyter notebookの環境を構築する方法 […]
[…] 【Docker/TensorFlow】DockerコンテナでTensorFlow Object Detection APIの環境構築を行いJ… […]
[…] また、本書ではdocker上でtensorflow環境を構築しており、そこでjupyterでブラウザによる操作を行なって今うす。難しいことを言っているように聞こえるかもですが、かなり簡単に環境構築を行うことができるので、環境構築に困っている方はこちらの記事を参考に「docker上にtensorflow+jupyter notebookの環境を構築」して見ましょう。 […]
[…] 「【Docker】「Object Detection API」環境構築と「Jupyter Notebook」使用手順。」 […]
[…] 「「Object Detection API」の環境構築をローカルPCに行う方法。」「「Object Detection API」の環境構築をDocker上に行う方法。」 […]
[…] 「「Object Detection API」の環境構築をローカルPCに行う方法。」「「Object Detection API」の環境構築をDocker上に行う方法。」 […]