映像からの物体検出(SSD_Keras)に挑戦 for ubuntu

映像からの物体検出

リアルタイム映像からの物体検出に挑戦してみました。

ただし簡単にはできず、色々ハマってえらく苦労したので、同じ悩みを持っている人の助けになればと思い実装までの手順を記事にします。

この手順に則って環境準備から始めて頂ければ、素人でも自分のPC場で映像からの物体検出が実装できるようになります。

それでは始めてみましょう。

参考にさせて頂いたサイト

以下のサイトを参考にさせて頂きました。

SSD: Single Shot MultiBox Detector 高速リアルタイム物体検出デモをKerasで試す

こちらのサイトは素人の筆者でもなんとか実装できるぐらいまで丁寧に説明してくださっていますので、リアルタイムからの物体検出を実行する上で、大変参考になりました。

 

また、これからDeep Learningの勉強をするなら、こちらで紹介する書籍が参考になります。

 

まっさらなubuntu16.4の準備

まっさらな状態から始めましょう。

私はすでに色々なモジュールを組み込んでいたせいか、エラーばかり発生してまともにプログラムが動きませんでした。

そのため、ubuntuのインストールからやり直し、なんとか実装することができました。

無駄に苦労したくない方は、ubuntuをインストールしたまんまの環境を準備してください。

 

ubuntuのインストールはフリーのVirtualBoxで十分事足ります。

ちなみに筆者はimacで実装しました。

 

python3-pipのインストール

ubuntuのインストールが完了したら、python3系のpipのインストールから始めましょう。

ターミナルを起動し、以下のコマンドを打ち込みます。

 

tensorflow-1.1.0のインストール

続いてtensorflow-1.1.0のインストールです。

バージョンは非常に重要です。

これにハマりました。

結局動いたバージョンが、tensorflow-1.1.0でした。

 

今回はGPUを使用しないので、以下のコマンドでtensorflowをインストールしてください。

 

keras-1.2.2のインストール

続いてkeras-1.2.2のインストールです。

最新版のバージョン2をインストールしてしまいますと、全く動きません。

自力で直せない方は、keras-1.2.2をインストールしましょう。

筆者はここでも苦労しました。

結局バージョン2は筆者の実力ではどうにもできませんでした。

 

 

opencvのインストール

opencvはたくさんのコマンドからインストールすることになります。

anacondaの一発インストールではうまく行きませんでした。

 

それに、そこそこ時間がかかります。

imac2012のVirtualBox ubuntuインストール版では約1時間ぐらいかかりました。

以下のコマンドを順番に打ち込んでください。

 

Open Source Computer Vision Libraryのダウンロード

以下のサイトからライブラリーを一式ダンロードします。

ダウンロードが完了したらbuildします。

インストールしましょう。

 

jupyter notebookのインストール

pythonを実行する上で便利なjupyter notebookをインストールしましょう。

 

ssd_kerasのダウンロード

ssd_kerasは映像からの物体検出を可能とするライブラリー群になります。

これを公開してくださった方に感謝ですね。

こちらのライブラリーをダウンロードして、映像からの物体検出を行うことになります。

 

学習済みモデルは個別にサイトからダウンロードする必要があります。

ダウンロードする場所は、以下の画面を参考にしてください

 

クリックして、しばらく読み込みが始まった後に以下の画面が表示されますので、weights_SSD300.hdf5をダウンロードしてください。

これが学習モデルになります。

 

以上で環境準備は完了です。

 

サンプル写真からの物体検出

環境準備が完了したら、早速サンプルソースを使って物体検出を試してみましょう。

さきほどインストールしたjupyter notebookを使用します。

ダウンロードしたssd_kerasディレクトリに移動してjupyter notebookを起動してください。

 

実行するファイルは、SSD.ipynb です。

 

SSD.ipynbを起動したら実行しましょう。

 

するとmatplotlib.pyplotがimportできないと叱られます。

もし上記のようなエラーが発生した場合は、以下のコマンドでmatplotlibをインストールしてください。

 

再度実行し直すと、またまた以下のようなエラーになります。

こちらも上記画像と同じようなエラーになった場合は、h5pyをインストールすれば解消します。

以下のコマンドでインストールしてください。

 

3度目の正直で再度実行し直せば、今度は動くはずです。

無事に動くと以下のようにサンプル画像から物体を検出した画像が表示されます。

 

ここまでできたら、映像からの物体検出ができる条件が整ったことを意味します。

 

早速挑戦。でもその前に

早速、映像の物体検出をやりたいところですが、サンプルソースに誤りがあります。

まずはそれを修正しましょう。

ssd_keras/testing_utils/videotest.pyの87行目に以下のロジックがあります。

このロジックを以下のように修正してください。

物体検出結果をターミナルで確認したい場合は、162行目に以下のprint文を追加してください。

 

続いて動画ファイルの指定です。

動画ファイルの指定は、ssd_keras/testing_utils/videotest_example.pyで指定します。

24行目にファイルのパスを指定しているロジックがありますので、再生したいファイルのパスを指定してください。

 

以上で準備完了です。

 

videotest_example.pyの実行

では動かしてみましょう。

ディレクトリを移動して、videotest_example.pyを起動します。

以下のように映像と物体検出している様子が確認できるはずです。

 

GPU仕様ではないのでFPSが1という、とてつもなく遅い動画となりましたが、なんとか動くはずです。

 

頑張って実装してみてください。

 


その他の物体検出記事はこちらから

 

それではまた。

あなたにオススメの記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP