2017年6月7日水曜日

YOLO v2 を ubuntu 16.04上で試してみた。(I tried YOLO v2 on ubuntu 16.04.)

v2の検出結果

はじめに

OpenCV Advent Calendar 2016 18日目の記事
OpenCVとdarknetを連携させてみた
を書いた時、yoloのバージョンは、1.0であった。

上記記事を書いた直後にバージョン 2 (v2)がリリースされ、性能が向上したとのことなので、
YOLO v2がどのようなものか試してみた。

YOLO v2 の説明は、ここ。 1.0(old YOLO)の内容はほとんど同じである。

インストール

ソースはここから一式zipファイルでダウンロードして、適当なところに展開すると darknet-folder が作成される。中のMakefileでオプションが指定できるので、今回はOpenCVのみ設定し、makeを行った。

v1では、ライブラリを作成せず、スタティックリンクの形式だったので、ソースの修正ごとに全モジュールのビルドを行い使い勝手が今ひとつであった。(そのため自分でライブラを作成し、リンクするようにしていた)

それに対しv2では、共有ライブラリを作成するようになり、make を行うとフォルダー内に実行形式の darknet と libdarknet.a が作成される。

実行結果

前回と同じ電気機関車の画像を試してみた。
検出結果の画像は、上部の載せたものである。

処理時間と確証

train1.png: Predicted in 26.808136 seconds.
train: 68%
truck: 28%
car: 25%
car: 50%
car: 55%
car: 61%
train: 86%

比較用にv1の結果を載せておく

v1の検出結果
train1.png: Predicted in 13.032408 seconds.
train: 58%
train: 85%
car: 43%
car: 45%
car: 43%

v2 v1の比較

比較対象が1組みなので、1つの参考として
v2のほうが処理時間が倍になってしまったが、検出数を確証は向上している。

注意

weightのサイズが258Mと記載されているが、実際は約204Mなので注意すること。
1.0向けのweightとファイル名が同じなので間違わなようにすること。
2.0のコードに1.0のweightを使用してもエラーとはならず、物体が検出されないので気づかない可能性がある。

2017年6月5日月曜日

ubuntu 16.04 上で開発用の OpenCV の Configration を表示させてみた。

はじめに

CaffeやTensoFlowのインストールを行うときにOpenCVが必要となった場合、
apt install libopencv-dev でインストールすることができる。
この OpenCV の configration がどのようなものか気になったので表示させてみた。

使用するAPI

cv::getBuildInformation()

上記APIを表示されるソースファイルを作成し、
g++ -o config config.cpp `pkg-config --cflags opencv` `pkg-config --libs opencv`
で実行ファイルを作成する。
./configで実行するとターミナルに表示される
結果は、ここに保存した。

OpenCVの概略

・バージョン OpenCV 2.4.9.1
・有効モジュール
    core flann imgproc highgui features2d calib3d ml objdetect video contrib legacy photo gpu java ocl python stitching superres ts videostab
・3rd party
 Eigen TBB OpenCL

・共有ライブラリは、
/usr/lib/x86_64-linux-gnu/
にインストールされている。

以上

2017年6月1日木曜日

バイナリ形式でWindows版のOpenPoseがリリースされた。

Windows版 OpenPose.exe

はじめに

昨日の続き。
Windows版を自分でビルドすることはハードルが高いので、ビルズ済みを配布したらよいのにと思っていたら、Winsowsのインストール方法を、よく読んでみるとZIPファイルが配布されているのを見つけた。

試しにダウンロードしてみて展開してみると、exeファイルと一連のdll及び、モデルファイル一式が提供されていることが確認できた。

ダウンロードするファイルのサイズは、521Mと大きく、サーバの速度が遅く2時間くらいかかる。

ダウンロードした openpose_1.0.0rc2.zip を展開すると、
59 個のアイテム、サイズは 697.0 MB となる

ルートフォルダーには、bin, exsamples, models の3つのフォルダーがある。

・bin は、OpenPoseDemo.exe と関連するdll
・exsamples は、デモ用の画像
・modelsは、pose の下に、 coco mpi の2つのフォルダー
 pose_iter_440000.caffemodel も取得済み

WindowsのCUDA環境は整えていないので、動作確認はしていない。

デモの仕方

Windows Running on Video
 bin\OpenPoseDemo.exe --video examples/media/video.avi

Running on Webcam
 bin\OpenPoseDemo.exe

Running on Images

 bin\OpenPoseDemo.exe --image_dir examples/media/

以上

ubuntuの各種ツール、ライブラリのバージョン確認方法をまとめてみた。(summarized the version check method of various tools and libraries on ubuntu)

はじめに

環境構築時に影響を及ぼす、各種ツール、ライブラリのバージョンの確認方法をメモしたものである

 

ubuntu 

 cat /etc/lsb-release  
 DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
    DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS" (2017/10/4)

kernel

 uname -r
 4.4.0-78-generic
    4.4.0-96-generic (2017/10/4)

CPU情報

 cat /proc/cpuinfo
 

gcc

 gcc --version
 gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609

 

docker

 docker --version
 Docker version 17.05.0-ce, build 89658be

 

GPUボード情報

 nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.39                 Driver Version: 375.39                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 105...  Off  | 0000:01:00.0      On |                  N/A |
| 43%   31C    P0    35W /  75W |    202MiB /  4037MiB |      3%      Default |
+-------------------------------+----------------------+----------------------+
                                                                              
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      1106    G   /usr/lib/xorg/Xorg                             159MiB |
|    0      2237    G   compiz                                          39MiB |
|    0      2575    G   unity-control-center                             1MiB |
+-----------------------------------------------------------------------------+

  +-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.66                 Driver Version: 375.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 105...  Off  | 0000:01:00.0      On |                  N/A |
| 43%   27C    P8    35W /  75W |    393MiB /  4037MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                             
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      1005    G   /usr/lib/xorg/Xorg                             206MiB |
|    0      1821    G   compiz                                         128MiB |
|    0      2517    G   ...el-token=12D20A7A54878E99355325DC34B176F3    55MiB |
+-----------------------------------------------------------------------------+

CUDA

 nvcc -V
 nvcc: NVIDIA (R) Cuda compiler driver
 Cuda compilation tools, release 8.0, V8.0.61

 

cuDNN

 ls /usr/lib/x86_64-linux-gnu/libcu*
 /usr/lib/x86_64-linux-gnu/libcudnn.so.5.1.10

 

python

 python --version
 Python 2.7.12

 

Caffe

 caffe --version
 caffe version 1.0.0

TensorFlow

 pip list | grep tensorflow
 tensorflow-gpu (1.1.0)


現在共有ライブラリーで有効なOpenCVのバージョンを表示する

 pkg-config --modversion opencv

python OpenCV

 print cv2.__version__
 2.4.9.1

順次追加予定

OpenPoseの高速化に関して

本文とは関係ありません。

はじめに

インストールのページを見ていと、ページ下段にFAQがあり、そこに処理速度が遅い場合の対処方法があったのでメモしておく

・cuDNN 5.1を使用すること、 cuDNN 6 は10%くらい遅いとのこと
・複数GPUがある場合、 --num_gpu を設定すること
・ --net_resolution で 画像を小さくすること (例 320x176) ただし、精度は落ちる
・MPI_4_layers モデルを使用する。 検出する部位が少なくなり、精度は落ちる


補足

ベンチマークを公開しているので結果を書いてほしいとのこと

Windows版のOpenPoseがリリースされた。

OpenPose github


環境に依存しているので、バイナリの配布が良さそうな気がするが、自分でmakeしないといけない
6/1 追記
バイナリで提供されているのを確認しました。

インストールの仕方は、ここに記載されている。

補足

正確には1.0.0rc2とのこと

WebDNNを試してみた


Neural Style Transfer デモ

はじめに

WebDNNはウェブブラウザを利用したインストールフリーなDNN実行環境とのこと
5/28日に東京大学大学院 原田・牛久研究室から公開された。

概略に関しては、ここをみれば分かる

上記ページにアクセスすると、画面の下のほうに2つのデモが公開されている
1つは、Neural Style Transfer であり、もう一つは、ResNet50 による画像分類である。

試した結果

FireFox,Chrome 双方とも WebAssembly backend モードで実行される。


ResNet50 による画像分類

ResNet50 による画像分類の時間 firefoxが約2秒、chromeは約4秒と倍の差が生じた。

結果の追加 6/1 

Chorme bookで試して見たところ、動作したので驚いたが、CPUはARMではなくIntel製なので納計算時間は
、Cerelonなので15秒かかっている。