takminの書きっぱなし備忘録 @はてなブログ

主にコンピュータビジョンなど技術について、たまに自分自身のことや思いついたことなど

ORB-SLAM2コードリーディング

昨日こちらの「第一回 AI Code Review」というイベントで発表してきました。

https://aich.connpass.com/event/83405/


発表を打診された時、ちょっと表に出せるような機械学習系のコードを書いておらず、一度断りました。ただ仕事で取り組んでいるORB-SLAM2のコードレビューでも構わないということで、こちらの勉強会の趣旨に反して、AIでもなければ自分で書いたコードでもないけど、参考になればと思い発表しました。


基本は以下で発表した資料が基になってます。
http://d.hatena.ne.jp/takmin/20170613/1497334760


今回、参加者が機械学習系の人たちで、三次元画像処理は初心者だろうという想定で、原理の説明にやや時間を使って、コードの解説は全体の構成を説明するにとどめました。

来月あたり、別の勉強会でもっとコードの詳細に突っ込んだ話をする予定です。

2018/04/21 CV勉強会「CVでこんなもの作りました大LT大会3」発表資料まとめ

第45回コンピュータビジョン勉強会@関東は、「コンピュータビジョンでこんなプログラム作りました大LT大会3」というテーマで、株式会社サイバーエージェント様の会場をお借りして行いました。


例によって発表資料をまとめます。



コンピュータビジョン勉強会@関東

http://sites.google.com/site/cvsaisentan/


開催プログラム

https://kantocv.connpass.com/event/81006/


Tweetまとめ

https://togetter.com/li/1220201


今回は、今までUstreamで行っていた配信をYoutubeに変えました。
まだ扱いが不慣れなため、配信を停止するたびにURLが変更になり、視聴していた方にはご不便おかけしました。

以下で録画を確認できます。
https://youtu.be/AuHmjI8GrLY
https://youtu.be/FN-uiJmp1LQ
https://youtu.be/WrFlfZ9W8ro
https://youtu.be/2N_XWnpnCpA


取り急ぎ、発表者ごとに資料のリンクをまとめます。(敬称略)


発表者: Kazuhiro Ota
内容: CycleGANで画像変換


発表者: sumisumith
内容: ROSの話
https://www.slideshare.net/sumisumith/20180421cvlt


発表者: lunardog
内容:料理検出と実装
http://techlife.cookpad.com/entry/2018/04/06/124455


発表者: marsee101
内容:FPGAで白線検出してミニカーを走らせる
https://www.slideshare.net/marsee101/fpga-robot-car


発表者: xchiex17
内容: Androidで3Dポーズ推定
https://niconare.nicovideo.jp/watch/kn3002


発表者: Yusuke Suzuki
内容: TensorFlowで遊んだ話
https://drive.google.com/file/d/1T6FgxbUyeNxPar0AIKEjvNgttQAwe63_/view?ts=5adaed9b


発表者: satoshi_toriumi
内容: 画像解析プラットフォームScorerの紹介


発表者: yuyu2172
内容: ChainerCVの紹介
https://www.slideshare.net/YusukeNiitani1/45-chainercv


発表者: えすじ
内容:4コマ漫画のコマ切り出し
https://slideship.com/users/@esuji/presentations/2018/04/9EL6HYZ9jsGb9Qngj9ZYhH/


発表者: tkato_
内容: Depth画像からポーズ推定(脱Kinect
https://www.slideshare.net/tetsurokato/depth-image-keypoint-detection


発表者: dandelion1124
内容: VisionWorks Tips
https://www.slideshare.net/YasuhiroYoshimura/45nvidia-visionworks-tips


発表者: ミクミンP
内容: アノテーションツールを自作した話
https://www.slideshare.net/ksasao/ss-94564856


発表者: Shun Hasegawa
内容: HoloLensでDiminished Reality
https://drive.google.com/file/d/10eFfJoCBjmyLFT6uQ67kyH1dv2DJiUfG/view?ts=5ad98b82


発表者: kazunari takeichi
内容:足のサイズ測定とランニング解析


発表者: いしたー
内容:SSDで道路の傷検出
https://qiita.com/IshitaTakeshi/items/915de731d8081e711ae5


発表者: tomoaki_teshima
内容: モバイル上でOpenCL
https://www.slideshare.net/tomoaki0705/cvim-saisentangpuopen-cl


今回はLTで発表者が多いので、リンクまとめるだけでも一仕事。。。

学習画像/動画作成用アノテーションツールを調べてみた

アノテーションツールは画像を使った機械学習のタスクで、画像に教師ラベルを付与するためのGUIツールです。

昔、物体検出用のアノテーションツールとしてこんなの作りましたが、今はもっと良いものが色々とあるみたいなので、調べてみて良さそうだったものをいくつかピックアップしました。
ちなみに調べただけで、imglab以外はまだ使ってません。

アノテーションツールのリストはここが参考になります。
https://en.wikipedia.org/wiki/List_of_manual_image_annotation_tools

オンラインツール

LabelBox

LabelBoxはオンラインで使用可能なアノテーションツールで、年5000ラベルまで無料で使えます。画像データをLobelBox上のサーバーへアップするか、もしくはAWS上の自社データに対して使用することが可能です。物体検出用のBounding Boxだけでなく、Semantic Segmentationで使用可能なPolygon、姿勢推定に使用できるPointなどもサポートしています。
また出力フォーマットもCSVJSONの他、Pascal VOCやCOCOなどのデータセットに準拠した形式でも出力可能です。
https://www.labelbox.io/

Image Annotation Programme

Webブラウザから使用できるアノテーションツールで、MITライセンスによりコードが公開されています。Pascal VOCフォーマットでBounding Boxを出力します。
https://github.com/frederictost/images_annotation_programme

LabelMe

MITで開発されたSemantic Segmentationに使用可能なアノテーションツールです。サーバー上にインストールすることで、Webブラウザ上からアノテーション可能です。
http://labelme.csail.mit.edu

VATIC

ブラウザから動画のアノテーションが行えるツールです。コードをダウンロードし、自ら立ち上げたサーバー上で運用する必要があります(MITライセンス)。
動画のフレームに対しBounding Boxを設定し、そこに物体名の他、Actionなどをラベル付けできます。数フレームおきにアノテーションをした際、その間を自動補間する機能があります。
http://carlvondrick.com/vatic/

尚、上記プロジェクトページからだとコードへのリンクがわかりづらいので、こちらにも張っておきます。
https://github.com/cvondrick/vatic


オフラインツール

LEAR Image Annotation Tool

Semantic Segmentation用のラベルを作成するためのツールです。C++とQtライブラリを用いて開発されており、GPLライセンスです。
https://lear.inrialpes.fr/people/klaeser/software_image_annotation

imglab

imglabはdlib(http://dlib.net/)というC/C++ベースのコンピュータビジョンライブラリに同梱されている画像アノテーションツールです。(Boost Software License)
物体検出用のBounding Boxおよび、姿勢推定等に使用可能な特徴点をプロット可能です。
https://github.com/davisking/dlib/tree/master/tools/imglab

アウトソース

このようにツールを使って自分たちでアノテーションをかける以外にアウトソースすることも考えられます。

機械学習ディープラーニング用正解データセット作成支援

グローバルウォーカーズ株式会社では、機械学習用のデータセット作成サービスを請け負っています。画像自体の作成から、アノテーションツールの作成、アノテーション作業まで依頼することが可能です。
http://www.globalwalkers.co.jp/service/servicemovie/

Amazon Mechanical Turk

Amazonが提供するクラウドソーシングサービスです。多くの研究者がデータ作成に利用した実績があります。
https://aws.amazon.com/jp/mturk/

まとめ

人工知能ブームのおかげで、これからもこの手の便利なツールは増えていくと思われます。
自分でツール作る前にこの辺の利用できるものは積極的に利用した方が良さそうですね。

Boost.PythonをAnaconda3の環境でビルド

Anaconda3を入れた状態でBoost.Pythonのビルドに手間取ったのでメモ。
"conda install boost"ではなく、わけあってBoostをソースからビルドしました。


作業環境は以下の通り

  • Ubuntu 16.0.4
  • Anaconda3-5.1.0
  • Boost 1.66.0

ここで、Anaconda3は

/home/takmin/anaconda3

に既にインストールされているものとします。


Boostをダウンロード

$ wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gz


以下のサイトに従ってBoostを解凍してコンフィグレーション
http://www.boost.org/doc/libs/1_66_0/more/getting_started/unix-variants.html

$ tar zxvf boost_1_66_0.tar.gz
$ cd boost_1_66_0
$ ./bootstrap.sh --with-python=/home/takmin/anaconda3/bin/python --with-ptyhon-root=/home/takmin/anaconda3


ここまではOK。次にb2コマンドでビルドしようとするとエラーが出ます。

$ ./b2
In file included from ./boost/python/detail/prefix.hpp:13:0,
                 from ./boost/python/list.hpp:8,
                 from libs/python/src/list.cpp:5:
./boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: そのようなファイルやディレクトリはありません
compilation terminated.


おそらく

~/anaconda3/include

へのパスは設定されても

~/anaconda3/include/python3.6m

へのパスが設定されていないためと思われます。
(OpenCV Pythonのビルドも同じところでハマった)


そこで、/home/takminの下にuser-config.jamというファイルを作成し、以下のように内容を編集します。


user-config.jam

using python : : /home/takmin/anaconda3/bin/python : /home/takmin/anaconda3/include/python3.6m /home/takmin/anaconda3/include : /home/takmin/anaconda3/lib ;


ここで"~/anaconda3/include/python3.6m"のように書くとビルドに失敗します。

$ ./b2
$ sudo ./b2 install

で無事ビルドとインストールに成功し、

/usr/local/lib/libboost_python3.so

が作成されていることも確認できました。