あけましておめでとうございます。
おうちハッカー@リッテルラボラトリーの石田です。
画像から何かを検出したい、ユーザーの動きに連動して何か作りたい、なんて思うことがあると思います。 そんなときに、どんな技術を使えばよいのか迷うと思うのですが、そんなときに検討すべきライブラリ、API、デバイスを紹介したいと思います。
画像処理といったらlennaさん
オープンライブラリ系
こちらはソースが公開されている画像処理ライブラリで、自分で組み合わせて適切な処理を作成します。 ライブラリによって得手不得手があるので、単独というより、組み合わせて使うことが多いと思います。言語はC++, Pythonがメインになります。
OpenCV
画像処理といったらこれ!という定番ライブラリです。 動かせるプラットフォームも、windows,mac,Linux,Android, iOSと幅広いです。PCではC++,Pythonで書くことができます。 基本的に商用利用可能ですが、一部アルゴリズムは非商用のものがありますので、お気をつけてください。(SIFT, SURFなど)
どんなことができるのかは、こちらの動画を見たほうが早いかと思います。 www.youtube.com
dlib
最近注目され始めているライブラリです。 特定の物体の検出器の作成の簡単さや精度が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の人が書いたこちらの記事で性能を伺うことができます。
Orbeus ReKognition API
画像を送信すると、人の顔の認識から、動物、景観、建物などの情報を返してくれるWEB APIです。 「オブジェクト認識」と「顔認識」の2つがあるようです。SDKも充実しており、PHP,Ruby,Objective-C, C++などに対応しています。
デモはこちらで見られます。 www.rekognition.com
IBM Watson Visual Recognition
IBM Bluemixで使うことができる機能で、画像のクラス分類を行うことができます。 用意されている分類機のほかに、自分で画像を用意して任意の分類機を作成することができます。
デモがこちらで閲覧できます。 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に接続することができます。
どういったことができるのかは、こちらによくまとめられています。
Intel RealSense
インテルが出しているセンサデバイスです。Kinectと同様のセンサ類を搭載していますが、Kinectよりも近距離での顔の状態やジェスチャーに優れています。
主にPCへの組み込みを想定されており、組み込まれたPCでのイメージはこんな感じです。
また組み込みだけでなく、個別のデバイスとして、WindowsPCで利用可能です。
こちらに主要機能がまとめられています。 www.buildinsider.net
オムロン OKAO Vision HVCシリーズ
OKAO Vision|技術紹介|オムロン人画像センシングサイト:+SENSING
オムロンが出している、顔や人の認識に特化したカメラです。RealSenseよりもさらに顔に特化しており、
顔検出、顔認証、性別・年令推定、笑顔度推定、表情推定、顔向き・視線推定などができます。
BlueTooth接続でスマホからも簡単に使えるタイプ(HVC-C)と、
組み込みの基盤タイプ(HVC-P)があります。
公式ページより、使える機能が確認できます。
最後に
画像処理には様々な手法がありますが、それぞれメリットデメリットがありますので、仕様用途に適した手法を選択することが重要です。 画像処理系は、成果が見えやすくやってて楽しいので、ぜひお試しください。
*1:この点はOpenCVの検出器のパラメータ次第で改善できるとは思いますが。