ホーム > カテゴリ > Python・人工知能・Django >

画像内の物体を検出するObject Detection APIの使用方法 [TensorFlow]

Python/TensorFlowの使い方(目次)

TensorFlowの「Object Detection API」のインストールと使用方法です。

Object Detection APIでは「一般物体検出アルゴリズム」のSSD(Single shot multibox detector)やFaster RCNNなどでCOCOデータセットを使用して訓練された学習済みモデルを使用します。

前提条件

次の「Docker/nvidia-docker2のコンテナ」を作成してAnaconda、TensorFlowをインストール済みとします。

Docker/nvidia-docker2のコンテナ上にAnacondaをインストール
TensorFlow(GPU版)/KerasのインストールからHello World

※主にUbuntuでの解説ですが、Windowsの方は読み替えてください。

1. ソースなどを一括ダウンロードする

apt install git
 
git clone https://github.com/tensorflow/models.git

[コマンド例]

root@xxx:~# git clone https://github.com/tensorflow/models.git

※今回はコンテナ上なので/rootに保存します。

2. protobuf-compilerのインストール

apt install protobuf-compiler

3. Protobufライブラリをコンパイル

cd models/research/

protoc object_detection/protos/*.proto --python_out=.

次のようなエラーが表示される場合があります。

object_detection/protos/ssd.proto:87:3: Expected "required", "optional", or "repeated".
object_detection/protos/ssd.proto:87:12: Expected field name.
object_detection/protos/model.proto: Import "object_detection/protos/ssd.proto" was not found or had errors.
object_detection/protos/model.proto:12:5: "Ssd" is not defined.

その場合は次のコマンドも実行します。

apt install unzip

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

./bin/protoc object_detection/protos/*.proto --python_out=.

protoc  ./bin/protoc object_detection/protos/*.proto --python_out=.

4. PYTHONPATHにライブラリを追加する

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

※このコマンドは一時的です。コンテナを再起動後する度に毎回実行する必要があります。

5. インストールのテスト

python object_detection/builders/model_builder_test.py

バージョンによっては次のようなエラーが表示されます。

Traceback (most recent call last):
  File "object_detection/builders/model_builder_test.py", line 311, in test_create_ssd_resnet_v1_fpn_model_from_config
    model = model_builder.build(model_proto, is_training=True)
  File "/root/models/research/object_detection/builders/model_builder.py", line 110, in build
    add_background_class)
  File "/root/models/research/object_detection/builders/model_builder.py", line 214, in _build_ssd_model
    ssd_config.anchor_generator)
  File "/root/models/research/object_detection/builders/anchor_generator_builder.py", line 91, in build
    cfg.normalize_coordinates
  File "/root/models/research/object_detection/anchor_generators/multiscale_grid_anchor_generator.py", line 61, in __init__
    for scale in xrange(scales_per_octave)]
NameError: name 'xrange' is not defined

xrangeはPython3では削除されている為に発生します。multiscale_grid_anchor_generator.pyの61行目にあるxrangeをrangeに変更します。

再度、テストを実行します。

6. チュートリアル

/root/models/research/object_detection/object_detection_tutorial.ipynbをJupyter NoteBookで開いて、上から順番に実行します。

In[]の横に「*」がある場合は実行中ですのでしばらく待ちましょう。

最後まで実行すると次のような画像が表示されます。

テスト画像を変更する場合は次の変数を変更します。

PATH_TO_TEST_IMAGES_DIR
TEST_IMAGE_PATHS

学習済みモデルを変更するには

MODEL_NAME

です。モデルはTensorflow検出モデル動物園で公開されています。

次は「mask_rcnn_inception_v2_coco」(http://download.tensorflow.org/models/object_detection/mask_rcnn_inception_v2_coco_2018_01_28.tar.gz)のモデルを使用した例です。

以上となります。

公式

公式のインストール方法 (英語)





関連記事



公開日:2018年08月05日 最終更新日:2018年08月24日
記事NO:02711


この記事を書いた人

💻 ITスキル・経験
サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。

画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ
プチモンテ代表、アーティスト名:プチモンテ
🎵 音楽制作
BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~

オリジナル曲を始めました✨

YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte

【男性ボーカル】DA・KA・RA | 新たな明日が風と共に訪れる

【男性、女性ボーカル】時空を超越する先に | 時空と風の交響曲

【女性、男性ボーカル】絆 | 穏やかな心に奏でる旋律