ヘッダーナビゲーション

2017年2月18日土曜日

Caffeをインストールする時のハマりどころ

Caffeをインストールするのにちょっと詰まったので、メモしておきます。
http://qiita.com/masato/items/dce7bac5b0c51489c93b に詳しいやり方が書いてあるので、ここに載っていないtipsについて。

Cudaに関するエラー

Makefile.configの中のCUDA_ARCH := に関する内容を、Cudaのバージョンに合わせて 、書き換えないと 以下のようなエラーがでます。

nvcc fatal : Unsupported gpu architecture 'compute_60' make: *** [.build_release/cuda/src/caffe/layers/conv_layer.o] Error 1
Makefile.configのコメントにも書いてあるのですが、 CUDA < 6.0 の際は、*_50~*_61を コメントアウト CUDA < 8.0 の際は、*_60~*_61を コメントアウト する必要があります。
Cudaのバージョンは、nvcc -Vで調べれるので、それに合わせて書き換えると問題が解消されると思います。

Python.hが 無いと怒られる

Pythonラッパーをインストールする際、
make pycaffe -j4
を実行しても、Python.hが無いと怒られます。
CPATHにPython.hが有る場所を設定してあげると正常に動きます。

Ubuntuの場合、.bashrcに
export CPATH="Pythonの includeディレクトリ"/python2.7/:$CPATH
を追記すると 問題は解消されます。

2017年2月5日日曜日

感情分析に使える安価な心電計

初めに

心拍活動は、人間の自律神経と関係していることが知られています。そして、自律神経には、人間の感情やストレス状況などが反映されることも知られます。そのため、心電計で観測した心拍活動から、感情推定やストレス状況推定が行えるとされています。このような解析は心拍変動解析(HRV)と言われます。情報系でも、そのような知見は、ヒューマンコンピュータインタラクションなどの分野では盛んに活用されています。

参考:
http://www.take-clinic.com/psm/hrv/hrv_autonomic2.htm
http://hclab.sakura.ne.jp/stress_novice_hartrate.html

そして、そのような解析を行うためには、サンプリングレートが1000Hz以上の心電計を用いることが推奨されます。しかし、日本国内では、高いサンプリングレートかつ、身につける人に負担を掛けないよう小型で、PCにデータを取り込め、医療的な認証がなされている、10万円以内の安価な心電計がなかなか無いようです。僕が探した範囲では見つけられませんでした。


解決策

上記の様な要望であれば、フィンランドのMega electronicsから出されている、eMotion Farosが良い選択肢なのでは無いかと思います。

仕様としては、サンプリングレート1000Hz、USBおよびBluetoothを通したデータ転送が可能とのことです。フォーマットは、EDFとASCIIフォーマットに対応しています。サイズも48 x 29 x 12 mmということで、かなり小さいです。そして、価格も、一番機能の少ないFaros 90°であれば、576€で売られています。今(2017年2月5日現在)、1ユーロ121円程度なので、大体7万円程度ですね。輸入に伴う費用を含めても10万円以内に収まりそうですね。

オプションで、電極や解析ソフトウェアも売られています。

精度・利用者への負荷に関しては、medical CE及びFDA認証を取得していると、ホームページに記載があります。medical CE及びFDA認証は、欧州とアメリカに於ける、日本での厚労省の医療機器認可の様なものと考えていいかと思います。

ホームページに紹介されている、主な用途としては、

  • 心臓学
  • 労働衛生学
  • ストレス管理
  • スポーツ科学
  • 研究
  • 生活習慣指導
  • 医療、病院での用途
  • 理学療法
  • 精神療法
と書いてあります。このような用途での利用をお考えの方は検討いただければと思います。
日本で購入を考えている方は、この代理店が扱っているようです。

時系列クラスタリング手法の分類とその長短

はじめに

近年IoTが流行ってきており, センサーデータなどの時系列情報から知見を取り出すことは有益である。そこで、時系列情報の解析において、代表的な操作である、時系列クラスタリングのための手法を紹介する。

時系列クラスタリング手法の3つの分類

  1. 距離に基づくアプローチ
    系列間の距離を定義し、特徴を作る。用いられる距離の例としては、ユークリッド距離、DTWなどが存在する。 そして、それに基づき教師なしクラスタリングであればk-NN、教師ありクラスタリングであればSVMなどを用いる。
  2. 特徴抽出に基づくアプローチ
    系列によって重要な特徴が既知である場合は、フィルターなどを用いて情報を取り出し特徴を作る。 その上で、距離に基づくアプローチ同様に、目的に合わせて解析を行う。
  3. 深層学習
    end-to-endに深層学習を用いて学習させ、特徴の設計もある程度自動化させる。具体的には、1次元畳み込みを行う、CNNを用いる場合が多いかと思います。
の3つがアプローチとして考えられます。

それぞれの長短

それぞれの手法の長短を書いておきます。間違いなどあればご指摘ください。
手法名 距離に基づくアプローチ 特徴抽出に基づくアプローチ 深層学習
特徴への知識 無くても可能 必要 無くても可能
計算コスト
学習データの量 そこそこ必要 少なくても可能 100オーダー以上は少なくとも必要
特徴設計コスト 距離の定義とモデルの設計のみ モデルの設計に加え、データのドメイン知識が必要 入出力定義、モデル選択とハイパーパラメータ選択
実現可能な精度 複雑なタスクでは出ない State of the art 相当を出すことが可能 State of the art 相当を出すことが可能

まとめ

このような感じとなっており、ケースに合わせて手法を使い分けることが必要かと思います。

Wasserstein GANがすごいらしいので、調べてみた

はじめに

近年GAN(Generative Adversarial Network)による画像生成が流行っていますがWasserstein GANというのがすごいと聞いたので調べてみました。内容は、速報レベルです笑


Wasserstein GANについての情報

Wasserstein GANについての情報をまとめます。

所感

論文のアブストによると、今回のWasserstein GANでは、以下の様に嬉しいことがあるそうです。
  1. GANは通常学習が安定しないことが知られますが、Wasserstein GANでは学習が安定する
  2. mode collapseなどの問題が無くなる
  3. 学習カーブが意味を持ち、ハイパーパラメータの調整がし易い
  4. 加えて、対応する最適化問題は解きやすく、他の分布間距離の問題に発展させていける
と書いてありました。

アルゴリズムの新規性

アルゴリズムとして、通常のGANと異なる面は、通常Discriminatorで使う分布間距離のJensen-Shannon Divergenceでは無く、Critic(GANでのDiscriminatorに相当する部分)でWasserstein distanceを用いるそうです。そうすると、勾配消失問題が解消されるとか。 ちゃんと読めていませんが、時間が有る時に読めれば追記しようと思います。

映画・虐殺器官を見てきた

日記です。ネタバレはしません。
今日は髪を切りに行き、Twitterで虐殺器官面白いらしいとの情報を得たので、なんとなく伊藤計劃原作の虐殺器官の映画を見に行った。ちなみに、PVはこんな感じです。後ほど聞いたのですが、度重なる公開延期を経てようやく公開されたファン大期待の作品だったようですね。

映画館は京都のTOHOシネマズ二条。
ここは、3年ほど前に、謎に男友達と2人でアナ雪のレイトショーを見に行き、映画が終わった頃には、終電も終わっていて歩いて帰ったという思い出の地。その前に飲んでいたんだけど、友達が狙ってた女の子が無理目で、ヤケクソで行ったとかそういう話だったはず。

伊藤計劃は知っていたけど、一般受けしなさそうな作品だし、予約しなくても大丈夫だと高をくくって、開始10分前に到着。思っていたより人気らしく、席の空き具合が△になっていた。端末を見てみると、なかなかの混み具合で、あと5席ほどしか残っていなかった。危なかった。。。

席に着いて、回りを見ると、歴長そうな、玄人っぽい感じの方が結構目についた。

内容としては、ここ2, 3年見た映画の中では一番良かったと思う。(それ以前は記憶が定かではない説があります)

最終的な展開が少しありきたりかもなあと思う一方、ストーリーも、描写も、最終的な展開、SF的要素も、それぞれ完成度が高い他、伝えたいだろうメッセージへの伏線として上手く機能していた様に思う。そして、この表現をするには、アニメ映画を取らざる負えないなあ、と納得感の行く演出だったように思う。ちょっと論理の飛躍が目立ったけど、それもいい味を出していた。気になる方は、是非劇場まで!笑 僕同様伊藤計劃の作品を全く知らない人も十分楽しめるように思います!

あと、映画の前の予告で流れていた、「夜は短し歩けよ乙女」のトレイラーがよく出来ていて、見に行きたくなった。 多分これ。

2017年2月4日土曜日

VRにおける期待の技術

現状、ハイエンドVRには問題点が多数存在する様に思います。一方、それらを解決する技術も存在すると考えています。本日は、そのような技術を紹介します。

VRの問題点

まず、現状のハイエンドVRの問題点は、以下のようなものです。

  • 高性能パソコンが必要
  • ケーブルが邪魔
  • 装置自体が大きくて重い
  • Oculus Sensorなどの赤外線カメラが邪魔
  • 動画などの実世界コンテンツを作るのが難しい
などが主な問題点です。

期待している技術

一方、それらの問題を解決する可能性を持つ、期待している技術は以下の様になります。
  • Foveated Rendering
  • WiGig
  • 網膜照射ディスプレイ
  • 3Dセンシング技術
    • カメラ
    • ミリ波レーダ
    • LIDAR
    • Light Field Camera
以下、それぞれの技術について解説します。

Foveated Rendering

Foveated Renderingは、視線推定をした上で、見ているところだけ高解像度にレンダリングすることです。そうすることによって、VRにおいて、パソコンに対する負荷を大幅に減らすことができます。(大体2, 3割) そして、VRにおけるパソコンに対する要求スペックも下がり、今後安価なPCが利用できる様になったり、パソコンを必要としなくなる可能性が存在します。没入感という意味でも、人間が実世界を見る際、周辺視野は低解像度で情報をみているので、より没入感のある情報提示が行うことが出来ると言われています。
例としては、以下の動画の様になります。

実際にこの技術に取り組んでいる会社は、NVIDIAとSMIです。
アイトラッキングが出来ている前提であれば、周辺視野の解像度を下げる処理は比較的簡単に実現可能だと考えます。しかし、周辺視野のレンダリングをする際、そこだけ荒くレンダリングするのは、GPUのドライバーレベルの低レイヤの操作が必要だと考えます。そのため、GPUを開発している、NVIDIA、AMD、Intel辺りが比較的優位なのでは無いかと考えています。

WiGig

WiGigは60GHzの高周波数を利用する無線通信規格です。昨年10月に認証プログラムの実施が発表され、今年から導入が進んで行くとされています。このWiGigを用いると、10m程度の近距離では、最大7Gbpsでデータ通信が可能であると言われています。このスペックであれば、2K~4K程度の解像度の映像情報を遅延少なく無線で転送可能です。WiGigを用いることで、VRヘッドセットとパソコン間の通信を無線で行え、ケーブルを無くすことができると考えます。実際に、WiGigを用いたVive対応のワイヤレスキットTPCASTが今年発売予定です。以下は参考動画です。15ms程度の遅延だそうなので、あまり違和感はないようですね。 TPCASTは3万円程度で売り出される予定だそうです。

網膜照射ディスプレイ

網膜照射ディスプレイは、網膜に直接光を照射するディスプレイです。仕組みとしては、眼の水晶体の中心を通る光は水晶体の屈折の影響を受けないことを利用し、直接網膜に光を照射できるようになっています。現状VRヘッドセットでは、ディスプレイやレンズがサイズや重さを大きくさせている一因になっているのですが、網膜照射ディスプレイであればディスプレイが無く、レンズも小さくてすむので、軽量化に向きます。また、網膜に直接光を照射するので、視力に関わらず鮮明な情報を見ることができます。そして、原理的には、高い解像度や広い視野角も実現可能なので、開発が進むことで理想的な情報提示デバイスになる可能性があると考えています。また、解像度などは低いのですが、近しい小型網膜照射ディスプレイを日本のブラザー工業が発売しています。

3Dセンシング技術

VR空間で歩き回れる(いろんな視点から対象を見れる)様な、コンテンツを製作するには内部的に3Dモデルを保持する必要があります。そのため、実写コンテンツでVR空間を歩き回れる様なコンテンツを作るには、3Dセンシング技術が必要です。
僕が把握している範囲では、以下の3つの技術が有望なのかなと考えています。

  1. カメラ
  2. ミリ波レーダ
  3. LIDAR
  4. Light Field Camera



Light Field Cameraは、基本性能に関しては、全て◯〜◎の印象です。

以下それぞれの技術の紹介です。

カメラ

RealSenseやKinectなどのことですね。近距離であれば、(カリブレーション頑張ってすれば)ミリ単位の精度を出せるので3Dスキャンに用いれます。一方、オクルージョンがひどいので、VRコンテンツなどで使う場合は工夫は必要かと思います。また、IntelはRealSenseを付けることで、外部センサを必要としないVRヘッドセットを売り出そうとしています。(Project Alloy)
以下は、GoogleのTangoプロジェクトの動画です。Tangoでも3DセンシングにはRealSenseを用いています。

ミリ波レーダー、LIDAR

ミリ波レーダとLIDARは、先ほどの表にある通り、分解能や検知距離が一長一短なのですが、組み合わせることで極めて高い性能を発揮します。現状それぞれ数十万~数百万円するのですが、近年自動車の安全運転支援や自動運転車の開発のため量産化が進み、安価になり普及が進むと考えられます。みんなが運転する自動車から、データが吸い上げられて、街の3Dモデルが生成される時代も近いかもですね。 自動車が、YouTuberとかの、VR用の撮影スタジオになったりしたらおもしろいかも。

Light Field Camera

Light Field Cameraとは何処から光が来たかまで記録することが出来るカメラのことです。一時期、焦点を撮影したあとに合わせれるカメラとして有名になりました。
VR用のLight Field Cameraとしては、Lytro ImmergeNokia OZOなどが発売予定です。そのような高性能なものだと、約500万円ほどするようですね。いいお値段。
実際に撮られた動画が以下の様なのですが、CGも混ぜているようですが、値段に見合うだけ高品質なコンテンツが作れている様に見えます。
VR Demo By Lytro from Lytro on Vimeo.

以上、僕がVR分野において期待している技術の紹介となります。

2017年2月1日水曜日

Pokemonデータセット

Kaggleにポケモンのデータセットが公開されていました。

721体のポケモンの、名前、タイプ、副タイプ、以下のパラメータの合計値、HP、攻撃力、防御力、スペシャル攻撃力、スペシャル防御力、素早さが入っているそうです。

Forumには、Seabornで可視化してみたスレッドが立っていますね。
パラメータの合計値で見ると、200~800近くまであり、かなり分散が大きいですね。
一方、HPと攻撃力のjointplotを見てみると、各パラメータが高いもの同士では、いい感じにトレードオフのような関係があるようにも見える。

これからは、ポケモンもデータ分析で定量的に最適化するのが一般的な時代が到来するのでしょうか。

そう言えば、高校の同級生がポケモン好きで、ノートにパラメータまとめて分析とかしていたのを思い出しました笑

若い年代の人だと、ポケモンに対してはある程度事前知識があるでしょうから、データ分析をする際の導入などに使えそうだなとか思います。

ポケモンの機械学習関連の話題としては、僕は2つだけ認識しています。
1. ぱろすけさんが、「音象徴の機械学習による再現:最強のポケモンの生成」と題して、最強のポケモンっぽい名前を生成する話。今は論文は削除されてしまったようです。
2. GANによるポケモン画像生成上手くいっていなかったようですが。


学習データ少なすぎるかもしれないけど、ポケモンドット絵からpix2pixで、ポケモン画像を生成させたり出来たりしないのかな。
パラメータ空間とドット絵の関係性も解析して、パラメータに対応するポケモン画像の生成とか出来たらおもしろいんだけどなあ。

ウレロ☆未確認少女面白いかも

Netflixを見ていたら、ウレロ☆未確認少女があったので、少し見てみた。
内容としては、劇団ひとりが社長を務める弱小芸能事務所を舞台にして、バカリズム、東京03らが演じる社員たちがアイドルグループ「未確認少女隊UFI」を売り出し、事務所再建を目指すというもの。(WIkipediaを参考)

初めは、早見あかりかわいいな。ぐらいの印象だったけど、キャラ設定から面白く、劇団ひとりがキャバ嬢に入れ込んでたり、バカリズムが美人を相手にすると、まともに話せなくなったりする。あと、コメディだから、おもしろおかしくするのは当然なのかな。と思うけれど、世界観が全体的に絶妙にちょっとアングラっぽいずれ方をしていて、僕は好き。バカリズムが作ったらしきイラストや、突然アニメについて熱く語りだす東京03豊本とか。

バカリズムと言えば、バカリズムが出演していた素敵な選TAXIもおもしろかった。これもNetflixで見た。

素敵な選TAXIは、竹野内豊が演じる主人公・枝分は、乗客が望む過去まで連れて行くことの出来る選TAXIの運転手。様々な人生の選択肢の失敗に悩む乗客に対して、枝分がユーモアを交えながらアドバイスを送り、人生の再生へ向かわせる。(これもWikipediaを参考)

枝分が毎話訪れる、行きつけのカフェのマスターが、バカリズム。ストーリー自体も面白いけど、アングラな雰囲気、枝分やバカリズムが時折さりげなくはさむユーモアがたまらなく好き。

ウレロ☆未確認少女と素敵な選TAXIの世界観好きだなあと思って調べていたら、両方共脚本がオークラさんとバカリズムが関わっているよう。

脚本さんを軸に作品調べても面白いかも。

PaintsChainerやってみた

導入

帯状疱疹にかかってしまい、薬のせいで頭が回らないので雑文でも記しておこうかと思います。

深層学習関連の研究開発で有名なPFN社の方である、たいやまさん(@tai2tanさん)が作成された、PaintsChainerという、深層学習を応用した線画自動色塗りアプリが流行っているそうです。

技術的なことを詳しく知りたい方は、tai2tanさんが書かれている、自動色塗りをどの様に行っているかについての記事「初心者がchainerで線画着色してみた。わりとできた。」が参考になるかと思います。また、PaintsChainerの使い方に関しては、「線画着色webサービスPaintsChainerを公開してみた」に詳しく述べられています。

技術的には、モデルはU-Netをベースにしており、入力のチャネルを1層増やし、ヒントを与えて自動着色が行える様にしているおり、Adversarial Netも連結して訓練したそうです。元画像と線画から着色された画像をDicriminatorで見分ける様に敵対的に学習させたという認識で大丈夫かと思います。

やってみた

今回は、「お絵描きIRADUKAI」さんから画像をお借りして、遊んでみました。


まず、

線画提供 - ひこの様
この画像を入れてみます。


PaintsChainerのホームページは2017/2/1現在、以下の様になっています。
Set sketchの右にあるChoose Fileで線画の画像ファイルを選ぶと、以下の様に自動的に色が塗られた画像が表示されます。その時のアクセス数にも依るかと思いますが、だいたい5秒程度で生成されます。(一体、どれほどのGPUが裏で回されているのかと思うと興奮しますね笑)

ヒントを付け加えたい際は、左の線画を塗っていき、Colorizeを押すとヒントを考慮した上での線画着色が行なえます。
分かりづらいですが、目のところに青い点のヒントを加えたら、綾波レイ顔負けのきれいな青髪の女の子が生成されましたw RGB空間で色を学習してるはずなので、赤、緑、青の原色だと、周辺も関係してしまうほど激しい影響が出てしまうのかもですね。



金髪碧眼にしたかったので、髪に黄色のヒントを細かく打っていったらきれいな金髪になりました。



目が青すぎたので、すこし緑を混ぜてみました。背景に影響が出た際は、背景に対してもヒントを打つことで綺麗にできます。綺麗ですね!

ヒントの与え方が結構コツが入りそうですが、一から塗る場合と比較してかなり手間を省けるので素晴らしいと思います。絵心が無い自分としては、こういう自動化ツールを使ってクリエイティブな気分を味わえるのはとても嬉しいです。

また、学習済みモデル、ソースコードは全てhttps://github.com/pfnet/PaintsChainer にて公開されており、お手持ちのパソコンでも動かすことができるようです。CPUの実行は現状サポートされていない様なので、GPUを持っていない場合ソースコードの改変が必要かと思います。ヒントを与える際、何度も試行錯誤する様に思うので、遅延少なく遊びたい方はお手持ちの環境でやってみても良いのかなと思います。