ヘッダーナビゲーション

2017年12月13日水曜日

UnityでiPhone用VRアプリを作る際の注意点

ハマったので、メモ。
UnityでGoogle CardBoard SDKを用いて、iPhone用アプリを作ることを想定しています。

Unityのバージョンについて

Unityのバージョン(Unity 2017.1.0f3, 2017.1.1p3, 2017.3 beta, 2017.2 RC, 2017.1などなど)によっては、正常に動作せずブラックスクリーンを表示します。 現状の最新版であるUnity 2017.3.0bであればその問題が解消されているので、そちらを用いることで回避できるかと思います。
問題についての詳細はこちらを参考にしてください。

Buildの仕方について

詳しくは、ここに書いているのですが、UnityでiPhone用VRアプリを作る際は、UnityでBuildした後Xcodeでコンパイルします。
その際、UnityのFile→Build SettingからBuildした場合、出力されたファイル群の中から*.xcworkspaceをXcodeで開いてコンパイルしてください。 *.xcodeprojを開いてコンパイルするとバグってうまくコンパイルできません。
紛らわしいですね...


2017年7月9日日曜日

Combining Model-Based and Model-Free Updates for Trajectory-Centric Reinforcement Learningを読んだ

ICML2017に採択されたCombining Model-Based and Model-Free Updates for Trajectory-Centric Reinforcement Learningを読んで、第4回:「NIPS+読み会・関西」で紹介しました。

概要としては、強化学習においてはモデルに仮定をかけたmodel-based、モデルに仮定をかけないmodel-free、2種類のアプローチが存在します。それぞれは、データ効率性、様々な環境に対する適用性に対して長短があります。今回の研究では、ポリシーに制約を加えた上で、それら2種類のアプローチに属するアルゴリズムを統合し、高いデータ効率性と様々な環境に対する高い適用性を同時に達成しました。適用性としてはmodel-freeより高い性能を達成した上で、データ効率性はmodel-basedに匹敵することが示されました。また、統合アルゴリズムをGuided Policy Searchのガイドとして用いることによって、任意のポリシーのモデリングが行えることも示したそうです。 更に、シミュレーションに留まらず、実世界でのロボット実験でも高い性能を達成したようです。

紹介に用いたスライドは以下においておきます。


また、実験結果のビデオは以下の通りです。

2017年5月18日木曜日

Slackで論文収集botを作る

目次


概要

SlackのIncoming Webhooksという機能を使うと、簡単にプログラム上からSlackに投稿ができます。その機能を用いて、Arxivから興味のある論文を自動で検索して投稿してくれるbotを作りたいと思います。

実装したプログラムはここに置いています。
https://github.com/kushanon/oreno-curator/blob/master/arxiv.py
開発環境はAnaconda2-4.3.0を用いています。

類似の機能を提供しているサービスとしては、Google Scholarのアラート機能があり、それを使うと設定したキーワードに関連する論文が投稿されたらメールでアラート送ってきてくれます。

それと比較して、今回提案するやり方の嬉しいところとしては、
  • Slack上のbotなので、botを既存の研究開発関連チャンネルに追加しておくことでスムーズな議論を行うことができる。僕の場合も、チームで研究開発をする際に、開発している内容に関連する情報を適宜教えてくれる用途で使っています。
  • 自分でプログラムを自由に書き換えられるので融通がきく
となっています。

1. arXivのAPIを通して、設定したキーワードに関連する論文を取得

arXivのAPIについての説明は、ここに概要が載っていて、ここに細かい仕様が載っています。
import urllib
url = 'http://export.arxiv.org/api/query?search_query=all:electron&start=0&max_results=1'
data = urllib.urlopen(url).read()
print data
From https://arxiv.org/help/api/index

こんな感じでHTTPのGETやPOSTリクエストを適切なURLに送ることでAPIを利用することができます。
そして、URL中のパラメータを変更することで取得する情報を変更することができます。
詳しい説明は先述のUser Manualを参照していただきたいのですが、このURLのパラメータに取得したい情報を記述します。

search_queryの部分で引っ張ってくる論文の選び方を指定できます。例えばsearch_queryで、ti:Machine\ Learningとうつと、Machine Learningという単語がタイトルに入っている論文を引っ張ってきてくれます。ti以外のprefixも色々と用意されています。例えば、Abstractはabs、catはarXivでのカテゴリーです。arXivでのカテゴリーについてもUser Manualにくわしい記載があります。
また、Boolean演算子やグルーピング演算子も使えるので細かい指定も可能です。

例えば、サンプルプログラムにあるように、
(cat:stat.ML+OR+cat:cs.CV+OR+cs.HC+OR+cs.IR)+AND+((abs:emotion)+OR+(abs:ECG)+OR+(abs:time\ series))のようにうすると、

カテゴリーが、stat.ML、cs.CV、cs.HC、cs.IRのいずれかで、アブストの中にemotion、ECG、time seriesという単語のいずれかが含まれる論文を検索することができます。


2. Incoming Webhooksを通して、対象となる論文をSlackに投稿

https://my.slack.com/services/new/incoming-webhook/にアクセスしてもらうと、

こんな画面が出てくると思います。
①の箇所でbotを追加したいSlackチームを選んで、
②の箇所でbotを追加したいチャンネルを選んで、
③を押します。

すると以下のようなページが出てきます。
④にURLがあるのでそれをメモしてください。

ちなみに、このページに書かれて居るように、botの見かけや、アカウント名を変えたり、表示する文字をカスタマイズできたりします。

PythonでこのURLにポストする場合こんな感じでかけます。

api_urlの部分に先程メモしたURLを貼り付けて実行すると、設定したSlackチームのチャネルにHello!と投稿されます。


以上をまとめたPythonのプログラムは
のようになります。
既にSlackに投稿したものはログをとっておき投稿しないようにし、arxivのstat.ML, cs.CV, cs.HC, cs.IRカテゴリから,アブストの中にemotion, アブストの中にECG, アブストの中にtime seriesが入っている最新の論文から順番に10本ずつSlackに投稿してくれるような仕組みになっています。 これをcronを用いて定期実行できるようにします。

3. cronを用いて定期実行できるようにする。

cronはスクリプトを自動実行できるデーモンプロセスで、Unix系OSではデフォルトで入っています。詳しくはhttp://www.server-memo.net/tips/crontab.htmlなどに書かれています。

注意すべき事項としては、cronではrootからのpathでアクセスされるので、上記プログラムではプログラムを実行する前に、cdをしてプログラムが置いてあるディレクトリに移動する必要があります。また、PyenvやAnacondaなどの環境を用いている場合は、
/home/***/.pyenv/versions/anaconda2-4.3.0/bin//python arxiv.py

のように、Pythonの実行ファイルを指定する必要があります。

実行例

実行するとこんな感じで投稿してくれます。


2017年5月14日日曜日

100万円の女たち

最近Netflixで100万円の女たちというドラマをよく見るのですが、面白いです。
概要は公式サイトよりこのような感じです。


主演は映画「君の名は。」の音楽を担当し、日本アカデミー賞最優秀音楽賞を受賞、幅広い世代に絶大な人気を誇るバンドRADWIMPSのヴォーカルとして、映画『トイレのピエタ』では日本アカデミー賞新人俳優賞受賞するなど役者としても類まれな才能を開花させ続ける野田洋次郎。野田は今回がテレビドラマ初出演&初主演。 野田が演じるのは売れない小説家、道間慎。彼はある日どこからともなくやってきた、まったく素性の知れない5人の美女たちと1つ屋根の下で暮らすことになる。女たちは毎月100万円もの大金を家賃および生活費として支払う。彼女たちは何の目的で慎のもとに集まってきたのか。どんな人間なのか・・・。回を追うごとにひとつ、またひとつと解明されていく謎。そして、女たちとの奇妙な共同生活を通して慎は思いもよらなかった大きな運命に翻弄されていく・・・。謎が謎を呼ぶ、密室ミステリードラマ!!! テレビ東京が深夜ドラマで培ってきたノウハウと『ハウス・オブ・カード』『ストレンジャー・シングス』『火花』など数々の傑作オリジナルドラマを生み出してきたNetflixが手を取り合い、テレビに新たな旋風を巻き起こします!!
作品自体はミステリアスなラブコメといった感じです。
キャストは野田洋次郎を始めとして、女たちでも福島リラや松井玲奈が、主要人物以外でもリリー・フランキー、池田鉄洋など豪華なキャストが演じています。野田洋次郎の売れない小説家を初めとして、女たちも謎が多い感じをうまく演じれており作品としての一体感が高く総じて良いと思います。

ストーリーに関しても、ラブコメは通常途中から予想が容易なストーリーとなり、ぐだぐだ感が出やすいと思うのですが、本作品では謎の共同生活という状況や女たちの謎も多く、次から次へと小さな事件が起きていき、それらが伏線となり大きな展開を生むといった流れで夢中になってしまいます。

映像に関しては、Netflix作品に良くあるように、良い意味で日本のテレビドラマっぽくなく、心象を写した表現をしている印象を受けます。 個人的には、全体的にライトの当て方やカメラワークが映画っぽい感じがします。

また、主題歌はコトリンゴの”漂う感情”なのですが、作品の影のある雰囲気とも合っていて素晴らしいと思います。気に入ったのでiTunesでダウンロードしてしまいました。

感想はこんな感じです。

そういえば、松井玲奈もともとそんなに好きじゃなかったんですが、作中の塚本ひとみの性格、服装が好き過ぎてファンになってしまいそう...

2017年5月2日火曜日

VRエンジニア養成読本を読んでみた

Software Design PlusシリーズのVRエンジニア養成読本が面白そうなので購入して読んでみました。
(From http://gihyo.jp/book/2017/978-4-7741-8894-2) Gihyo Digital Publishingにて、EPUB, PDF同梱版が2180円で売られており、ここからダウンロードできます。 Amazonでも売っていますが、Amazonで売っているのはちょっと高いのとKindleでしか読めないようです。値段は、VR関連書籍としては安い部類かと思います。
内容は、オムニバス形式で各章の担当著者がそれぞれ記事を書いています

目次は技術評論社のホームページに記載されてる通り、
  1. ~VR のしくみと可能性を正しく理解~ 最新ハードで学ぶVR の今とこれから 
  2. ~Unityで作る~ 入門! VR アプリ開発
  3. ~「没入感」を生み出すコンセプト開発と空間設計~ VRアプリデザイン実践入門
  4. ~PCやスマホで手軽に体験できる~360度動画入門
  5.  ~複合現実の世界へようこそ~ HoloLens 入門 
  6. ~3Dプリンター&ジェネラティブアート~ VRで広がる空間技術
のようになっています。

5,6はVR関係無くていらないな...笑と思う一方、1~4はかなり充実しているように思いました。

各章についての感想を以下で述べます。

1. 最新ハードで学ぶVRの今とこれから

VRヘッドセットの仕組みから始まり、製品の分類、よりプレゼンスを出すための仕組みなど、近年の動向を踏まえた多岐にわたる説明がなされていて、読み応えがありました。 ネットを調べていてもわかることが多い印象でしたが、体系的にまとまっており読む価値はあるのかなと思います。 これまでVRについて全く知らない人もこの章を読めば大体の流れは掴めるようになります。

2. 入門! VR アプリ開発

Google Cardboard, Oculus Riftにおける入門アプリの作成方法を図やソースコードを交えてわかりやすく解説してあります。 Google Cardboardでは壁打ちゲーム、Oculus Riftではユニティちゃんが動き回るアプリの作り方が紹介されています。 加えて、頭の動きを使ったインタラクティブなアプリ開発の作り方も書いてあります。 スマホVRであれば、人間が物理的にインタラクションできる情報が頭の動きだけなので、マス向けアプリを作る際かなり有用になる資料なのかなと思います。

3. VRアプリデザイン実践入門

この章が一番秀逸だなと思ったのですが、まず実際の至近距離接近ガールVRというVRアプリを題材にしながら、どのようにアプリを設計していくかが書かれています。 全体のコンセプトから始まり、ビジュアルコンセプト、オーディオコンセプト、そしてそれを実際にどうやって実現するかに至るまで細かく書かれています。 ここまで細かくVRゲームのデザインについて言及し、実際のケースまで紹介してくれるものは初めてです。 次に、VRアプリの空間デザインとして、道に迷いにくい空間設計について認知科学っぽい観点から述べられています。 こちらも、ルームスケールVRアプリを作る際に大いに役に立つかと思います。

4. 360度動画入門

こちらは360度動画の概要が紹介されています。入門向けといった感じであんまり詳しいことは述べられていませんが、初学者には役に立ちそうです。 5,6については割愛します。

まとめ

まとめると、VRの基礎から包括的に説明しており、簡易的なVRアプリの作りかた、VRアプリのデザインの仕方までわかりやすく述べられています。 VR初学者はもとより、Unityも触ったことがない方や、簡単なVRアプリは作ったことがあるけど市販アプリのようなものをどう作れば良いのかわからない方におすすめです。



2017年4月30日日曜日

現実と仮想空間を繋げるVIVE Tracker

HTC社とValve社によって開発・販売されているVRヘッドセットHTC VIVEは有名ですが、HTC VIVEと同時に利用することが想定されたトラッカーVIVE Trackerが便利そうです。

通常VR空間では、没入感を出すためにユーザーの頭の動きをトラッキングします。仕組みとしては、赤外線カメラやジャイロ、加速度センサーのデータを統合して正確な姿勢を推定しています。VRヘッドセットの中でもHTC VIVEはLight Houseという、広範囲を高精度にトラッキングできる技術をウリの一つとしています。

VIVE Trackerを用いれば、その高性能なトラッキング機能を活用しユーザーの頭に限らずあらゆるものをトラッキングできるようになります。

From https://www.vive.com

具体的には、以下の動画に出てくるガムテープ弱の大きさのセンサーがVIVE Trackerなのですが、これをトラッキングさせたいものに装着すると、VR上でトラッキングできゲームなどで有効活用できるようです。

下の動画では、VIVE Trackerを銃状のものに装着し、ゲーム上で使える銃として利用しています。


また、VR空間上でスプレー缶でお絵かきをしたり


VIVE Trackerのホームページでは、VIVE Trackerをカメラに装着すると自分がゲーム空間にいる様子を記録することもできると述べています。しかし、ゲーム空間の像と対応するカメラの写真が取れれば合成できそうなのはわかりますが、カメラの写真から人の部分をどうセグメンテーションするのか謎ですね。

また、個人的に最も注目している応用先として、VIVE Trackerを体に付けてモーションキャプチャをすることによって、極めて安価かつ高精度なモーションキャプチャシステムの構築が行えるのでは無いかと思っています。
以下が実際にLighthouseと、VIVE Trackerと逆運動学的な姿勢推定を用いてモーションキャプチャを行った際の、ポスプロ(記録後の動画の修正)をしていない動画だそうです。

かなり高精度に取れていることが分かりますが、現状のモーションキャプチャシステムが数百万するのと比較し、上図のように安価なシステム(PC, HTC VIVE含めても20万程度)が普及すれば、人間の動作を用いたアプリケーションの研究開発がより盛んになるのかなと思います。詳しい記事はこちら

このように、VIVE Trackerを使えば、インターフェースにそれほど依存すること無く、実世界と仮想空間を物理的につなげ易くなるみたいです。活用することによって、より自由度の高い表現、データの保持が可能になりそうですね。

下記のVIVE公式ブログで、VIVE Trackerのチュートリアルやコードが公開されています。
New Project Code and Tutorials Released for VIVE Tracker


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を持っていない場合ソースコードの改変が必要かと思います。ヒントを与える際、何度も試行錯誤する様に思うので、遅延少なく遊びたい方はお手持ちの環境でやってみても良いのかなと思います。

2017年1月31日火曜日

Python3で、cStringIOやStringIOでエラーが起きた時の対処法

問題

Python3ではcStringIOやStringIOが存在しないようで、使用しているプログラムをPython3で実行しようとすると以下のようにエラーが起きます。
import cStringIO
では、
ImportError: No module named 'cStringIO'
のようなエラーが。

import StringIO
では、
ImportError: No module named 'StringIO' 
のようなエラーが当然ですが出てきます。

解決策

対処法としては、対象プログラム中で
import io as cStringIO
もしくは、
from io import StringIO
のように記述し、cStringIOやStringIOをimport している箇所をコメントアウトすれば動くかと思います。

2017年1月30日月曜日

PythonでCtrl-C押した際の処理を書ける様にする

はじめに

PythonでDeep Learning回してて、Ctrl-Cでプログラムを終了させる際、押したらモデル保存してくれる様にしたかったので調べました。

解決策

Ctrl-C押して、送信されたSIGINTシグナルを掴めるイベントハンドラを作成します。
signal.signal(signal.SIGINT, handler)
のように、handler関数を、SIGINTシグナルが来た際のイベントハンドラとして登録します。
そして、handler関数の中にやりたい処理を書けば、Ctrl-Cを押した際に実行されます。
Chainerなら
chainer.serializers.save_npz(なんちゃら
と書いて於けばモデルを保存してくれます。

注意点としては、みんな大好きkillコマンドを使用する際は、指定をしなければSIGINTシグナルではなくSIGTERMシグナルなので、間違えないでくださいね。
参考: http://equj65.net/tech/linuxprocessgroup/

実装


ソースは以下の様になります。
whileループ中でCtrl-Cを押されると、叫びます。

2017年1月28日土曜日

Gaussian Processを試してみる

Scikit-learnのGaussian Processで遊んでいたのですが、Scikit-learn公式ドキュメントではv0.17におけるシンプルな回帰と可視化のプログラムの記述が無さそうだったので、書いておきます。最新バージョンのv0.18対応のものは記述されているのですが、v0.17においてそのままでは動かないようです。スクロールすると下まで見れます。
Gaussian Process(ガウス過程)に興味の有る方は、http://www.ism.ac.jp/~daichi/lectures/H26-GaussianProcess/gp-lecture1-matsui.pdfが分かりやすいので、参考にしてください。

2017年1月23日月曜日

VRを入門から始めるのにおすすめの本

はじめに

近年、注目を集めている技術の1つにVirtual Realityというものが存在します。
Virtual Reallity (VR) とは、目や耳を覆うハードウェアを装着し、 利用者の物理状態を計測した上で、 その物理 状態に合わせて外界の情報を遮断した上で情報提示を行うことで、 没入感のある情報提示を行うシステムのことです。

VRの市場は近年急速に拡大しており、Goldman Sachsが出している報告書によると、2025年には1億台出荷されるとの見込みのことです。

問題点

近年注目を集めているVRなのですが、VRに用いられている技術は、情報処理デバイスと人間の相互作用の仕方に対する研究であるHuman Computer Interaction, 没入感を出すための正確な位置推定にはRoboticsやComputer Visionの研究や, 違和感を感じさせないための低遅延なレンダリングにはComputer Graphicsが絡んでおり, 多岐にわたる研究分野が関係しています。

そのため、VRに関係しそうな、確度の高い情報を収集しようとすると、多岐にわたって調査する必要があり、時間と手間がひどくかかると感じていました。

そこで、VRに関して包括的にまとめられている、論拠のしっかりしている資料が無いかとさがしていました。日本の書籍・論文などでは、近年急速に進歩しているVR技術に関して、包括的かつ最新の情報が論理的に主張されているものを発見できませんでした。(あれば是非知りたいので教えてください)。

解決策

調べていたところ、英語の書籍なのですが、イリノイ大学のSteven.M.La Valle教授が書いていらっしゃるVIRTUAL REALITYという本が非常に良いように感じました。内容は、人間の知覚情報処理から始まり、レンダリングや、VRで良く用いられるトラッキングの仕組み、インタラクション、VRシステムの評価についてなど多岐に渡っています。 Steven.M.La Valle教授は2014年8月までOculus, incでhead scientistを勤めていた方だそうです。

現在ホームページで無料で公開されているようなので、興味の有る方は是非読んで見てみると良いかと思います。