2017年5月27日土曜日

OpenPoseのサンプルプログラムでいろいろな画像を試してみた。(Detected bones of various images with OpenPose sample program)

1 例のマリオカート

初めに

OpenPoseを試せる環境ができたので、早速サンプルプログラムを試してみて、いろいろな画像でボーンが検出できるか試してみた。

OpenPoseのサンプルは、./build/examplesのフォルダーにいくつか提供されており、今回は、tutorialの1_extract_from_image.bin を試してみた

使用例

./build/examples/tutorial_pose/1_extract_from_image.bin --image_path /opt/work/p1.png

今回使用したサンプルは800x450画素に縮小している。大きな画像だと検出時間が長くなる。

プログラムを実行させ、検出に成功すると元の画像にボーンが上書きされる。終了するには、ESCキーを押せばよい。

検出例

説明をクリックすると別が面に大きな画像が表示されます

2 大道芸
3 人のパネル
4 アニメパネル
5 銅像

6 レゴ人形

7 トップハム・ハット卿とトーマス

8 アニメパネル2

9 アニメ壁画

2017年5月26日金曜日

既存の Caffe 上に OpenPose のみビルドした。 (built OpenPose on my own Caffe)

 
サンプル画像の検出結果

はじめに

OpenPoseは今月の初め普通のWebカメラの画像からボーンが取得できると、一部の界隈で話題になったので、試してみようとした。
当初、処理時間がかかってもCPUで何とかなるだろうと考え試してみたが、残念ながらこの試みは無駄に終わった。(後日簡単ないきさつをまとめる予定)
しかたがないのでGPUボードを新規に購入し、CUDA環境を整え、こちらも新規にGPU版のCaffeをビルドし、その環境の上に再度OpenPoseのビルドを試みた。

インストールの仕方は、ここを参考にした。それによれば、 install_openpose.sh を実行すればよいとのことだが、試してみるといくつか問題あった。結局、 install_openpose.sh の中の処理を手動で実行することで回避した。スクリプトの内部は以下手順がかかれている。

1 ubuntuのバージョンチェック
   14.04 と 15以降を別扱いに

2 CPUのコア数をチェック

3 Makefile.config.Ubuntu16.exampleをMakefile.configにコピーする。
  CUDA8が前提となっている。
  CUDA7の場合は、Makefile.config.Ubuntu16.cuda_7.example を使用することになる

4 コア数を指定し make allを実行

5 models ディレクトリに移動し、getModels.sh を実行し、モデルを取得する

  coco ディレクトリには、
  wget http://posefs1.perception.cs.cmu.edu/Users/tsimon/Projects/coco/data/models/coco/pose_iter_440000.caffemodel

  mpi ディレクトリには
  wget http://posefs1.perception.cs.cmu.edu/Users/tsimon/Projects/coco/data/models/mpi/pose_iter_160000.caffemodel

 によりモデルデータが取得される。

 モデルデータは、約200Mbyteぐらいあり、サーバが遅いのでそれぞれの取得に1時間以上かかる。

つまづいたポイント

オリジナルのMakefile.configでmakeを行うと

./include/openpose/core/netCaffe.hpp:8:25: fatal error: caffe/net.hpp: No such file or directory


/usr/bin/ld: cannot find -lcaffe
などのエラーが生じmakeに失敗する。

対策としてMakefile.configにCaffeのパスを追加すれば解決する。

INCLUDE_DIRS := /usr/local/include /usr/include/hdf5/serial /opt/caffe/build/include
LIBRARY_DIRS := /usr/local/lib /usr/lib /opt/caffe/build/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial


サンプルのプログラムに関しては次回に続く


環境

ubuntu 16.04  GPUボード GTX 1050Ti
CUDA 8.0 cuDNN 6

以上

2017年5月25日木曜日

人工知能学会全国大会(第31回)の気になった発表

はじめに

昨日立命館大学の発表で一部で話題になっている2017年度 第31回 人工知能学会全国大会(5/23-26 ウインクあいち)で気になったものをまとめた。
PDFファイルがダウンロードできるので、時間があれば見る

発表一覧はここ
twitterのハッシュタグ #jsai2017
 
ディープラーニングによる建物特性の抽出と台風被害想定の手法

絵コンテ識別のための深層畳み込みニューラルネットワークの進化的獲得

深層学習による胸部X線写真からの診断補助

クックパッドにおけるDeep Learningを用いた料理画像判別の取り組み

家庭やオフィス内の動作認識用大規模動画データセットの構築

アメリカンフットボールにおけるオフェンシブライン選手の動作認識

地球観測衛星画像上で自動検知した熱源の深層学習による自動種別判定

深層特徴量を用いた類似間取り図検索

DCGANの作る仮想世界と現実空間のMap

車いすセンシングと畳み込みニューラルネットを利用した路面特徴の分類と評価

Deep Learningでの地図タイル活用の検討 5/30 追加

補足

twitterで知ったのだがManga109というサイトがあるとのこと

日本漫画のメディア処理の学術研究使用のために,東京大学 大学院情報理工学系研究科 電子情報学専攻 相澤・山崎研究室によりとりまとめらた漫画のデータセット
利用には申請が必要。

以上

2017年5月15日月曜日

CPU版のCaffe を ubuntu 16.04 でビルドした。 (Installation of CPU-only Caffe on ubuntu 16.04)

はじめに

両方リリースされて時間が経過しており、今頃感があるが、備忘録としてまとめておく

実は、14.04の開発マシンの更新を様子見していたが、16.04に更新を試みたところ、なぜかパーティション情報が消えてしまし、開発データすべてを失ってしまった。

折れた心を立ち直らせ、新規に開発環境を構築するついでにHDDからSSDに変更した。ubuntu16.04をクリーンインストールし、再度開発環境を構築した。

メインマシンのノートPCが、CUDAに対応していないため、CPU版でcaffeをビルドした。
なお、試したソースは、2107/5/13日なので、今後変わる可能性もある

準備

必要なライブラリを事前にインストールし、ここからソースをダウンロードする。

展開後、ディレクトリーを移動する。
そのままmakeを行うと、hdf5関連のエラーが生じるので下記のように修正する

Makefile
181行目
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

Makefile.config
94行目
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

修正後 make -j4を実行し、makeが成功すれば、次に、make runtestを行う

[----------] Global test environment tear-down
[==========] 1106 tests from 150 test cases ran. (58161 ms total)
[  PASSED  ] 1106 tests.

が表示されれば、問題なくmakeができている。

pycaffeの作成

sudo pip install setuptools
pip install --upgrade pip
sudo pip install -r python/requirements.txt

を実行。

最後に、
echo export PYTHONPATH=/home/hoge/caffe-master/python:$PYTHONPATH >> /home/hoge/.bashrc
でパスの設定を行う

pythonを起動し
import caffeが成功すればOK

以前はpythonでimportするときに、
libdc1394 error: Failed to initialize libdc1394
が表示されたが、いまは解決している。

以上

2017年5月14日日曜日

Dlib 19.04 を ubuntu 16.04 上でビルドした。(built Dlib 19.04 on ubuntu 16.04.)

はじめに

両方リリースされて時間が経過しており、今頃感があるが、備忘録としてまとめておく

実は、14.04の開発マシンの更新を様子見していたが、16.04に更新を試みたところ、なぜかパーティション情報が消えてしまし、開発データすべてを失ってしまった。

折れた心を立ち直らせ、新規に開発環境を構築するついでにHDDからSSDに変更した。ubuntu16.04をクリーンインストールし、再度開発環境を構築した。

Dlib関連は、なくなったHDD内にいくつかのメモを書いてあったが、バックアップや備忘録もなかったので、なくなく手探りで再構築している。

Dlibに関しては、2016アドベントカレンダー向けに作成した記事
OpenCVで顔向き推定を行う
で触れている。

ソースの取得とビルド

http://dlib.net/のページに移動

左メニュー下 ダウンロードボタンを押す
dlib-19.4.tar.bz2をダウンロード 9.0M

ホームに展開後、ディレクトリーに移動し、
cmake ..
cmake --build . --config Release
を実行する。

サンプルプログラムのコンパイルと実行

exsamplesのフォルダーに移動し、定番の顔検出 face_detection_ex.cpp を試してみる

コンパイルの仕方は、本家のページに、
g++ -std=c++11 -O3 -I.. ../dlib/all/source.cpp -lpthread -lX11 example_program_name.cpp

と書かれているが、実行すると
../dlib/all/../gui_widgets/nativefont.h:27:22: fatal error: X11/Xlib.h: そのようなファイルやディレクトリはありません
とエラーとなる。

対処
ubuntu16.4には、x11の開発環境がないため、
sudo apt-get install libx11-dev
を実行し、再度コンパイルを試してみると今度はうまくビルドできた。

exsamples/facesにサンプル画像が格納されているので、
./a.out faces/2009_004587.jpg を実行すると、

processing image faces/2009_004587.jpg

exception thrown!
Unable to load image in file faces/2009_004587.jpg.

が表示される。

googleで調べてみると、
-DDLIB_JPEG_SUPPORT と -ljpegのオプションが必要とのこと

最終的には、
g++ -std=c++11 -O3 -I.. ../dlib/all/source.cpp -lpthread -lX11 -ljpeg face_detection_ex.cpp -DDLIB_JPEG_SUPPORT
を行うことでaoutが作成され
./a.out faces/2009_004587.jpg を実行すると画面に検出結果が表示される。

以上

OpenCV 3.1.0 + contrib 3.1.0 をubuntu 16.04 64bitでビルドした (built OpenCV 3.1.0 with contrib 3.1.0 on ubuntu 16.04 64 bit)

はじめに

両方リリースされて時間が経過しており、今頃感があるが、備忘録としてまとめておく

実は、14.04の開発マシンの更新を様子見していたが、16.04に更新を試みたところ、なぜかパーティション情報が消えてしまし、開発データすべてを失ってしまった。

折れた心を立ち直らせ、新規に開発環境を構築するついでにHDDからSSDに変更した。ubuntu16.04をクリーンインストールし、再度開発環境を構築した。OpenCV関連は、自分の備忘録を手がかりに、再構築を行っている。

14.04 上では、問題なくビルドできた(Ubuntu 14.04上でOpenCV 3.1.0 + Contrib 3.1をビルドしてみた )が、16.04では、2点の問題が生じてしまったので、対処方法を残しておく

ビルド手順は、Raspberry Pi 2 で OpenCV 3.1.0 + contrib 3.1.0 をビルドした を参考としている。

修正点


/home/opencv/opencv_contrib-3.1.0/modules/tracking/include/opencv2/tracking/onlineMIL.hpp:57:22: error: expected unqualified-id before '>' token
 #define  sign(s)  ((s>0) ? 1 : ((s<0) ? -1 : 0))
のエラーに対しては、

opencv_contrib-3.1.0/modules/tracking/include/opencv2/tracking/onlineMIL.hpp
の57行目の定義をsignから別名に変更し

opencv_contrib-3.1.0/modules/tracking/src/onlineMIL.cpp
の310,339行目のsignを変更した名前とする


/home/opencv/opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatal error: hdf5.h: No such file or directory
のエラーに対しては、ファイル

opencv-3.1.0/modules/python/common.cmake
の最後に下記、2行を追加する

find_package(HDF5)
include_directories(${HDF5_INCLUDE_DIRS})

参考

1 まっさらなUbuntu16.04LTSにOpenCV3.1とopencv_contribをインストール
2 Opencv build for python crashes on link to hdf5.h on ubuntu 15.10

OpenCV 2.4.13.2をubuntu 16.04 64bitでビルドした (built OpenCV 2.4.13.2 on ubuntu 16.04 64bit)

両方リリースされて時間が経過しており、今頃感があるが、備忘録としてまとめておく

実は、14.04の開発マシンの更新を様子見していたが、16.04に更新を試みたところ、なぜかパーティション情報が消えてしまし、開発データすべてを失ってしまった。

折れた心を立ち直らせ、新規に開発環境を構築するついでにHDDからSSDに変更した。ubuntu16.04をクリーンインストールし、再度開発環境を構築した。OpenCV関連は、自分の備忘録を手がかりに、再構築を行っている。

ソースは、ここからダウンロードし展開を行う。

手順的には、
Raspberry Pi 3 で OpenCV 2.4.13.1 をビルドした
に記載した手順で問題なくビルドできる。

注意 -DENABLE_VFPV3=ON -DENABLE_NEON=ON はARM向けなので使用しない


ビルド中にtbb関連で赤い文字のメッセージが表示されるが、tbbが動作しているので気にしない。
ソースに添付されているtbbの3rdparty/tbb/CMakeLists.txtを見ると、

set(tbb_url "http://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb43_20141204oss_src.tgz")と定義されている。

tbbを自分で準備すれば、新しいバージョンを使用しビルドするようなので、別の機会に試してみる。

以上