読者です 読者をやめる 読者になる 読者になる

LIFULL Creators Blog

「株式会社LIFULL(ライフル)」の社員によるブログです。

画像処理を導入するときに検討すべき10の手法

あけましておめでとうございます。
おうちハッカー@リッテルラボラトリーの石田です。

画像から何かを検出したい、ユーザーの動きに連動して何か作りたい、なんて思うことがあると思います。 そんなときに、どんな技術を使えばよいのか迷うと思うのですが、そんなときに検討すべきライブラリ、API、デバイスを紹介したいと思います。

f:id:nextdeveloper:20160104130822p:plain
画像処理といったらlennaさん

オープンライブラリ系

こちらはソースが公開されている画像処理ライブラリで、自分で組み合わせて適切な処理を作成します。 ライブラリによって得手不得手があるので、単独というより、組み合わせて使うことが多いと思います。言語はC++, Pythonがメインになります。

OpenCV

OpenCV | OpenCV

画像処理といったらこれ!という定番ライブラリです。 動かせるプラットフォームも、windows,mac,Linux,Android, iOSと幅広いです。PCではC++,Pythonで書くことができます。 基本的に商用利用可能ですが、一部アルゴリズムは非商用のものがありますので、お気をつけてください。(SIFT, SURFなど)

どんなことができるのかは、こちらの動画を見たほうが早いかと思います。 www.youtube.com

dlib

dlib C++ Library

最近注目され始めているライブラリです。 特定の物体の検出器の作成の簡単さや精度がOpenCVのそれよりもよいとの評判です。 使い方に関する情報が少ないので、やや苦戦するかもしれません。

OpenCVとdlibの、顔検出のサンプルコードの比較動画です。

青がOpenCV, 赤がdlibのようです。OpenCVのほうは誤検出が多いですね*1 www.youtube.com

各種機械学習フレームワーク

写真に写っているものが何なのか、クラス分類を行うのに近年、いわゆるディープラーニングの手法であるCNN(Convolutional Neural Network)を用いた判別機が成果を上げています。 こちらを簡単に実装できるライブラリに、以下があります。どれも基本はPythonです。

名前 特徴
Pyleran2 初期のディープラニングライブラリ
Caffe 画像に強い
Chainer 国産ライブラリ
TensorFlow Google製でGoogleサービスで使われてる

CNNを用いることで、おそ松さんのような見分けづらいものの判別機を作ることもできます。

有償API系

こちらは主に、機能は限定されますが実装いらずで画像認識を行うことができるAPIです。 コールごとにお金がかかります。

Google Cloud Vision API

Google Cloud Platform Blog: Google Cloud Vision API changes the way applications understand images

最近発表されたばかりのAPIです。現時点ではLimited Previewなので、登録者のみお試しで使えます。 お試し版の情報を公開することができないので、現状では公式の動画およびGoogleの人が書いたこちらの記事で性能を伺うことができます。

www.youtube.com

qiita.com

Orbeus ReKognition API

画像を送信すると、人の顔の認識から、動物、景観、建物などの情報を返してくれるWEB APIです。 「オブジェクト認識」と「顔認識」の2つがあるようです。SDKも充実しており、PHP,Ruby,Objective-C, C++などに対応しています。

デモはこちらで見られます。 www.rekognition.com

IBM Watson Visual Recognition

IBM Bluemixで使うことができる機能で、画像のクラス分類を行うことができます。 用意されている分類機のほかに、自分で画像を用意して任意の分類機を作成することができます。

www.youtube.com

デモがこちらで閲覧できます。 Visual Recognition Demo

その他API

そのほかにも、多くのAPIがあります。

一般画像認識API
List of 14+ Image Recognition APIs - Mashape Blog

顔検出系API
List of 10+ Face Detection / Recognition APIs, libraries, and software - Mashape Blog

デバイス系

カメラとセットになった画像処理デバイスです。 デバイス内で大方の画像処理を行ってくれてその結果を簡単に利用することができます。人の動きのリアルタイムの処理に向いており、インタラクティブなコンテンツの作成を簡単にできるものが多いです。

Microsoft Kinect

マイクロソフトが出しているセンサデバイスです。通常のカメラのほかに、赤外線カメラ、深度センサを搭載しています。主に人体部位の3次元位置情報や深度、ジェスチャーを計測するのに適しています。 現行のものは、Xbox one用のKinectにアダプターを介して、WindowsPCに接続することができます。

http://compass.xbox.com/assets/3d/37/3d377852-0f21-4074-a3c2-35f418170848.jpg?n=chandler_xboxone_hardware_960x540_01.jpg

www.xbox.com

どういったことができるのかは、こちらによくまとめられています。

www.naturalsoftware.jp

Intel RealSense

インテルが出しているセンサデバイスです。Kinectと同様のセンサ類を搭載していますが、Kinectよりも近距離での顔の状態やジェスチャーに優れています。
主にPCへの組み込みを想定されており、組み込まれたPCでのイメージはこんな感じです。

www.youtube.com

また組み込みだけでなく、個別のデバイスとして、WindowsPCで利用可能です。

http://cdn-ak.f.st-hatena.com/images/fotolife/k/kaorun55/20150810/20150810110621.png

こちらに主要機能がまとめられています。 www.buildinsider.net

オムロン OKAO Vision HVCシリーズ

OKAO Vision|技術紹介|オムロン人画像センシングサイト:+SENSING

オムロンが出している、顔や人の認識に特化したカメラです。RealSenseよりもさらに顔に特化しており、
顔検出、顔認証、性別・年令推定、笑顔度推定、表情推定、顔向き・視線推定などができます。 BlueTooth接続でスマホからも簡単に使えるタイプ(HVC-C)と、

f:id:nextdeveloper:20160104152230p:plain

組み込みの基盤タイプ(HVC-P)があります。

f:id:nextdeveloper:20160104121609p:plain

公式ページより、使える機能が確認できます。

plus-sensing.omron.co.jp

最後に

画像処理には様々な手法がありますが、それぞれメリットデメリットがありますので、仕様用途に適した手法を選択することが重要です。 画像処理系は、成果が見えやすくやってて楽しいので、ぜひお試しください。

*1:この点はOpenCVの検出器のパラメータ次第で改善できるとは思いますが。