【DeepLearning】物体検出手法のSSD(Keras版)を試す (Ubuntu14.04)

公開日: : OpenCV, Ubuntu, ディープラーニング

スポンサーリンク

はやりのディープラーニングの物体検出手法の一つであるSSDのサンプルを動かしてみたのでそれまでのメモです。

環境

パソコンのスペックは下記です

CPU:Corei7-7700T
GPU:Geforce GTX 1080 Ti
OS:Ubuntu 14.04

環境はAnaconda3の仮想環境の機能を利用してその中にTensorflowやKerasをインストールしました。仮想環境を用いることで別のソフトが動かなくなることを避けることができます。Anacondaはインストール済みとして話を進めます。

Anaconda3の仮想環境作成

今回のSSD用にAnacondaで仮想環境を作成して、Tensorflowなどのライブラリはすべてその中でインストールします。まずは、ターミナルから「anaconda navigator」とうってナビゲータを開きます。

そして、EnvironmentタブからCreateで「keras」と言う名前の環境を作成しました(このときの名前は何でもいいです)。ちなみにPythonのバージョンは3.5で作成しました。

ターミナルを開いてkerasの環境を呼び出して各種ライブラリをインストールします。(冒頭に「#」でコメントとします。以下省略)

#仮想環境kerasを有効にする
source activate keras

#仮想環境を無効にする
source deactivate

成功すると冒頭に「(keras)」としるしが出ます。この状態でpipやcondaなどを行うとこのkeras状態限定でインストールができます。ナビゲータからもライブラリはインストールできるようなのでどちらでやってもかまいません。
以下のインストール作業はこの状態で実施しました。

Kerasインストール

KerasとTensorflowとOpenCVをインストールします。今回動作させるSSD「rykov8/ssd_keras」のreadmeを読むと必要なライブラリとそのバージョン情報が書いてあります。

Keras:v1.2.2
Tensorflow:v1.0.0
OpenCV:v3.1.0-dev

バージョンが違うと動かない場合があるので、それに合ったバージョンをインストールしてください。現段階(2017/07)では上記のものが書かれていました。

pip install tensorflow==1.0.0
#pip install tensorflow-gpu==1.0.0
pip install keras==1.2.2
conda install -c menpo opencv3

GPU版を使う場合は「pip install tensorflow-gpu==1.0.0」を実行します。
CPU版は1~2Hzで動作しますが、GPU版ならそれ以上(今環境の場合は20~30Hz)で動作します。

また、実際に動かすうちに色々とエラーが出ると思うのでその都度不足しているモジュールなりをインストールしてください。

ssd_kerasを動かす

rykov8/ssd_kerasからソースコードをクローンしてきます。

git clone https://github.com/rykov8/ssd_keras.git
cd ssd_keras

GitHubのページにあるリンク先から「weights_SSD300.hdf5」という学習済みモデルをダウンロードして「ssd_keras」以下に保存します。

Jupyterで画像物体検出

ssd_kerasディレクトリの中にはJupyter Notebookで動作させることのできる「SSD.ipynb」という画像からの物体検出のサンプルが入っています。ただし、そのままJupyter Notebookでこれを開いても先ほど作成した環境を反映させられないのでうまく動きません。

今回作成した環境をJupyterNotebookに反映させて動かすにはこちらのパッケージのインストールが必要です。

#パッケージのインストール
pip install environment_kernels

#コンフィグ作成
jupyter notebook --generate-config

「~/.jupyter/jupyter_notebook_config.py」に下記を追加します。(参考リンク先より引用)

c.NotebookApp.kernel_spec_manager_class = ‘environment_kernels.EnvironmentKernelSpecManager’

さらにAnaconda NavigatorでJupyter Notebookをインストールします。「Application On」を「keras」に切り替えると、一覧のJupyter Notebookに「Install」とあるのでそれを押してインストールします。これをしないとカーネルの切り替え先一覧にkerasは出てきません。


(上の画像はインストール済みのものです)

すると、ターミナルから「jupyter notebook」でノートブックを立ち上げて「Kernel」タブの「Change kernel」から先ほど作成した環境を選択できるようになります。

Restart&Run Allなどで実行すればサンプルの物体検出が見ることができます。ソースをいじれば自分の画像ファイルに対しても動作確認できます。

動画からの物体検出

「ssd_keras/testing_utils」の「videotest_example.py」を実行すると動画の物体検出を試すことができます。「videotest_example.py」を開くと末尾に処理対象ファイルパスが直接描かれているのでそれを編集します。

videotest_example.py

vid_test.run('path/to/your/video.mkv')


編集例)

vid_test.run('/home/user/video/sample.mp4')

後は実行するだけです

python videotest_example.py

ただし、これをやっても動画読み込みに対応していないので実行できないと思います。下記リンク先などを参考にしながらOpenCVをソースからビルドすれば動作させることができるようになります。(詳細略)

実行すると仮想環境下へインストールされます。下記にインストール時に出てくるコメントの一例を掲載します。

— Install configuration: “RELEASE”
— Installing: /home/user/anaconda3/envs/keras/share/OpenCV/3rdparty/lib/libippicv.a
— Installing: /home/user/anaconda3/envs/keras/include/opencv2/cvconfig.h
— Installing: /home/user/anaconda3/envs/keras/include/opencv2/opencv_modules.hpp
(以下省略)

結果

CC0ライセンスの動画で試しました。

左上にフレームレートが表示され、各物体には囲いとその名前、確率が標記されます。
車はもちろん、人は見きれていますがちゃんと検出できていますし、20~30Hzとかなり高速に動作しています。

スポンサーリンク
Amazon
  • このエントリーをはてなブックマークに追加

関連記事

【2017年度】GeForce 1080 Ti搭載BTOパソコン比較

はじめに 最近ディープラーニング用にGPUのないPCにDIGITSをインストールしたのですがやはり

記事を読む

チェスボード画像自動生成ツール

1マスのサイズ(ピクセル) マスの数× 左上が白 枠をつけるか 枠の色白黒

記事を読む

NVIDIA DIGITSをSupervisorを使って自動起動する

はじめに 先日Ubuntu14.04にDIGITS 5をGPUなしPCにインストールしたという記事

記事を読む

Ubuntu14.04のChainer1.9でGPU(CUDA)を使う

ChainerでCUDAを使おうとしたら下記エラーが現れてしまいGPUを使うことができませんでしたが

記事を読む

OpenCV3.1のTracking APIでトラッキングを試す

はじめに 先日OpenCV3.1をopencv_contrib付きでインストールしてTrackin

記事を読む

Windows7とUbuntu14.04のデュアルブート

Windows7の入っているノートPCにUbuntu14.04 LTSをマルチブートできるようにした

記事を読む

OpenCV3.1をopencv_contrib付きでVisual Studio2013でビルドしてインストールする

はじめに OpenCV3.1でトラッキングがしたいと思いインストーラでインストールしたのですが、ど

記事を読む

【C++/OpenCV】cv::Matの画像にインパルスノイズを付加する

OpenCVで画像にノイズを付け足したいと思って調べたところ、Python版のサンプルは見つかるので

記事を読む

OpenCVで矢印を描画する

OpenCVで矢印を描画するという関数が無いみたいだったので作りました。書いていることは参考リンク先

記事を読む

MNISTをDIGITS 5のCPUのみで試す(GPUなし)

はじめに DIGITSを使えばGUI操作で簡単にディープラーニングができると聞いて自分も使ってみよ

記事を読む

【Unity】他のスクリプトを一括で取得して有効化・無効化を制御する

Unityを使っていて他のスクリプトを一時的に停止させたいと思ったので

テレビの録画をPCやNASで共有する

今までテレビはテレビ用のモニターで見ればいいやと思っていたのですが、さ

【DeepLearning】物体検出手法のSSD(Keras版)を試す (Ubuntu14.04)

はやりのディープラーニングの物体検出手法の一つであるSSDのサンプルを

【Laravel5】既存のDBからデータを取得して表示する

はじめに 今まで作ったWebサイトをLaravel5で見れるようにし

【C++/OpenCV】cv::Matの画像にインパルスノイズを付加する

OpenCVで画像にノイズを付け足したいと思って調べたところ、Pyth

Intel Corei7-7700TでHTC Viveの動作確認

はじめに HTC ViveというVRヘッドセットで遊んでみたのでその

【Python】フォルダ内のカッコ付き数字ファイルを一括でリネームするスクリプト

はじめに タイトルどおりなのですが、指定フォルダ内のファイルのファイ

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑