はじめに
こんにちわ、swim-loverです。PythonとPytorchで物体検出を行っています。 Pythonを始めたばかりですが、「使いながら覚える」をコンセプトに勉強しています。 前回、Pytorchによる物体検出として、Google Colab環境で物体検出(SSD)を動かしました。今回は、MobileNetという実装サンプルを使って物体検出を行いたいと思います。
物体検出 SSD 実行環境のダウンロード
今回は、MobileNetという実装サンプルを試してみます。モバイル端末でも動作するような実装とのことです。
Colab環境でダウンロードしたファイルなどは、一定の時間が経過すると消えてしまいます。Colab環境がリセットされてしまうことが原因のようですが、ダウントードしたファイル、パッケージ、学習データなどが消えて、最初からやり直しとなると大変です。
そこで、Google DriveのMy DriveをColab環境にマウントして、My Driver上で、ファイルを扱えば消えてしまう問題はなくなります。
まず、colab環境で以下のコマンドを実行します。この際、アクセス許可の確認画面が出てきますので許可をします。
from google.colab import drive drive.mount('/content/drive')
マウントに成功したかどうか早速、確認してみます。
cd drive
ls
MyDriveがマウントされてることが確認できました。
MyDrive/ Othercomputers/
pytorch-ssd-testというフォルダを作成し、ここで確認を進めたいと思います。
mkdir pytorch-ssd-test
cd pytorch-ssd-test/
次に、以下のgitコマンドにより、SSDの実行サンプルをダウンロードします。なお、colab環境では、Linuxコマンドの前に、エクスクラメーションマーク(“!”)を付ける必要があるようです。
しかし、上に出てきたコマンド(pwd,ls,cdなど)では、つけなくても実行できました。多用するコマンドは、つけなくても実行できるのかもしれません。(この内容は、後日訂正する可能性があります。)
!git clone https://github.com/qfgaohao/pytorch-ssd.git
Cloning into 'pytorch-ssd'... remote: Enumerating objects: 812, done. remote: Total 812 (delta 0), reused 0 (delta 0), pack-reused 812 Receiving objects: 100% (812/812), 1.05 MiB | 359.00 KiB/s, done. Resolving deltas: 100% (544/544), done
問題なくダウンロードできているか確認してみます。
cd pytorch-ssd
ls
ちゃんとダウンロードできていることが確認できました。
convert_to_caffe2_models.py README.md draw_eval_results.py readme_ssd_example.jpg eval_ssd.py run_ssd_example.py extract_tf_weights.py run_ssd_live_caffe2.py gun.jpg run_ssd_live_demo.py LICENSE train_ssd.py models/ translate_tf_mobilenetv1.py open_images_downloader.py vision/ prune_alexnet.py visual_tf_models.py
READMEの確認
ダウンロードしたファイルに含まれているREADMEファイルを確認してみます。
less README.md
lessコマンドを入力すると、ブラウザにヘルプ画面が現れ、READMEの中身が見れるようになりました。なかなか優秀な作りです。
今回は、MobilenetV1 SSDを動かしてみたいと思います。
学習モデルのダウンロード
上のgitコマンドでダウンロードしたのは、実行スクリプトのみです。そこで学習モデルをダウンロードします。(modelsの中身はまだ空になっています。)
以下のコマンドで、学習済みモデルとラベルをダウンロードします。コマンドの先頭にエクスクラメーションマークをつけて実行します。
・学習済みモデルデータ
!wget -P models https://storage.googleapis.com/models-hao/mobilenet-v1-ssd-mp-0_675.pth
・ラベルデータ
!wget -P models https://storage.googleapis.com/models-hao/voc-model-labels.txt
サンプルの実行
識別したい画像をpytorch_ssdフォルダに置きます。今回は自転車の画像を使用してみました。
サンプルのスクリプト “run_ssd_example.py”を実行します。
!python3 run_ssd_example.py mb1-ssd models/mobilenet-v1-ssd-mp-0_675.pth models/voc-model-labels.txt sample.jpg
出力ファイルとして、”run_ssd_example_output.jpg”が出力されました。
Inference time: 0.32605862617492676 Found 1 objects. The output image is run_ssd_example_output.jpg
自転車を認識しています。しかし、2台分の自転車を1台分として認識しています。少し難しい画像だったのかもしれません。
別の画像を試してみます。
今回は、4台分の自転車を認識できました。
まとめ
今回、Pytorchで物体検出(SSD)の実装サンプルであるMobile Netを使って、物体認識を行ってみました。次回以降も物体認識をしてみたいと思います。
組み込み系ソフトエンジニアをしています。これまでフロントエンド技術は避けてきましたが、食わず嫌いをやめて、勉強を始めました。
趣味は、水泳、ロードバイク、ランニング、登山です。
組み込み系技術ネタ、勉強したフロントエンド技術、たまに趣味の運動について発信していきます。
どうぞよろしくお願いします。
コメント