LoginSignup
12
22

More than 5 years have passed since last update.

だれでもできる物体検出

Last updated at Posted at 2019-02-22

はじめに

機械学習がもてはやされるので、試しにtensorflowを使って物体検出(Object Detection)をしてみたら、思いのほか簡単にできてしまったので、その記録。

やるべきこと

今回は、ローカルのマシンでやっってみたのだが、下記の感じでできた。

  • python3とライブラリの導入
  • トレーニングデータの作成
  • ベースとなるモデルの取得
  • トレーニングの設定
  • トレーニングの実行

結果

こんな感じに、ものを検出できます。

image.png

詳細

python3とライブラリの導入

CentOS7にはpython3が入っていないのでPython3を入れるところから始めよう。

sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install -y python36 python36-libs python36-devel python36-pip

ライブラリは次のものがあればよい。

pip3 install tensorflow
pip3 install pandas
pip3 install pillow
pip3 install Cython
pip3 install matplotlib

トレーニングデータの準備

下記のツールを使ってせっせとラベルづけします。
labelImg

モデルの生成

下記のリポジトリからモデルをcloneします。

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

また、このチュートリアルにあるツールをもらってきます。

git clone https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-Tutorial-Train-Multiple-Objects-Windows-10.git

generate_tfrecord.pyとxml_to_csv.py

モデル取得

今回はssd_mobilenet_v2_cocoを使用します。

wget http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v2_coco_2018_03_29.tar.gz

学習データの振り分け

学習データをトレーニング用とテスト用に分けます。例えば、images/testとimages/trainに分けます。

tfrecordの作成

チュートリアルのツールを使ってtfrecordを作成します。まずはcsvを作成してから、tfrecordを作成するという流れになります。ただし、tfrecord生成ツール(generate_tfrecord.py)はチュートリアル用に作成されているので、一部改変が必要です。具体的にはclass_text_to_int:の部分を検出したいものに変更する必要があります。

python36 xml_to_csv.py
python36 generate_tfrecord.py --csv_input=images/train_labels.csv --image_dir=images/train --output_path=train.record
python36 generate_tfrecord.py --csv_input=images/test_labels.csv --image_dir=images/test --output_path=test.record

学習の設定

トレーニングの設定をします。設定ファイルはtrainingフォルダに置くことにします。
ひな形のconfigをコピーして編集してください。labelmap.pbtxtはtfrecordに記載した情報に合わせて記載してください。

学習の実行

下記のコマンドでトレーニングを開始します。

python36 ./legacy/train.py --logtostderr --train_dir=log --pipeline_config_path=training/ssd_mobilenet_v2_coco.config

ちなみに、GPUを使わないとめちゃめちゃ時間がかかります。覚悟は必要。

参考、詳細

Tensorflowでライオンとネコを検出する: おおもとの記事です。

image.png

12
22
0

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
12
22