機械学習エンジニアから見たWWDC2018

cover

Dwangoの中の、機械学習の研究開発部署Dwango Media Villageで働くエンジニアの大垣です。 今回はAppleのWWDCに機械学習エンジニアとして参加してきたので、スマホアプリエンジニアとはおそらく少し異なる視点からのレポートになるだろうと思い、自分なりにWWDCの機械学習系のセッションのまとめをしようと思います。

AR関連技術を推しに推した基調講演

画像はWWDC 2018基調講演のハイライトシーンより。ARKit2のデモゲーム"SwiftShot"

https://developer.apple.com/videos/play/wwdc2018/101/

基調講演については他のブログでたくさん触れられてるので網羅的には書かなくても良いかなと思います。 私は10:00からの基調講演に対して9:00過ぎくらいに会場ついたのですが、だいたい会場全体の前から2/3くらいの席だったので、そこまで熾烈な席取り競争ということはないです。ただし、前方の席の盛り上がりはすごいので、スピーカーの一挙手一投足に拍手するあの感じを味わいたい人は絶対に早朝から並ぶべきです。

ここで発表されたもののうち、気になったものは

AR

  • Memoji アバターの簡易作成
  • Portrait Segmentation 人物写真の前景背景分離
  • Gaze Tracking 視線トラッキング
  • USDZ ARでプレビュー可能な3Dモデルフォーマット

機械学習

  • CreateML Swiftで書かれたCoreML用のモデルの学習フレームワーク

その他

  • Dark Mode UI全体をダークトーンにする機能
  • Walkie Talkie トランシーバー機能

と、私の興味の偏りもありますが、やはりARKit周りの発表が多かったように感じます。ARを推すなら機械学習も一緒に推してくるだろう、と思ってたんですが結構熱量は違うかな、という感触でした。

マップ共有、そして顔、のARKit関連セッション

画像はApple previews iOS 12より

Gaze and Tongue とにかくGazeTrackingがすごい。iPhoneXのカメラを用いて視線追跡をすることが出来る。 もちろんAnimoji/Memojiで目をそらす・合わせるというコミュニケーションが出来るようになります。目が合うってのは相手の実在感に大きな役割を果たすと考えられるのでとても楽しみです。 また、従来から視線追跡が役立つと言われていたアプリケーション、たとえばwebデザインの評価をするための調査アプリなども今後現れてくると考えられるのでわくわくします。なお現地ではGazeと同じくらい舌のトラッキングもアピールされてたんですが、正直そういう派手なコミュニケーションをしない私には舌の使用機会の想像は難しいかもという感想でした。。。

Saving World Model これは来るだろうと予想されていた機能の一つ。ARKitを用いて作成された環境マップをシリアライズしてsave/loadできる。一度アプリを閉じて再起動しても閉じる前に置いておいた仮想物体が使えるとか、さらにはネットワーク越しに送信できるので、複数人で座標系を同期したAR体験ができるようになりました。会場では会期中常設でAppleの複数人ARゲームのデモアプリ"SwiftShot"が遊べるようになっていて、私も2回プレイしました。

Environment Texturing これはAR空間に置いた仮想物体の実在性を高める機能としてとても印象に残りました。金属製のボウルのような光沢の有る仮想物体を置いたときに、現実側のテクスチャをちゃんと反映させる機能です。そのボウルの置かれた点から見た世界のテクスチャマップを自動でつくる機能という感じです。詳細は不明ですが、滑らかに複数視点のテクスチャマップをつないで補完するのはコンピュータビジョン技術を用いているとのことです。

Portrait Segmentation 機械学習屋さんの私としては、データセット作成にもアプリの性能向上にも使えると思った機能。iPhoneXの深度カメラを利用して、前景である人間領域だけ抜き取った画像を返してくれるAPI。たとえばこれを利用すれば背景の影響を除いた人間のデータセットが作れるし、あるいは個人認証のようなアプリケーションでも背景を除いてから実行できるのでロバストになる、と、応用先がかなりある技術と感じました。アプリケーションとしては、背景を差し替えるとか、顔を半透明にしてホログラム風とか、ってのをデモしてました。

誰でも、そして高速に、機械学習

CreateML Something native, Something swifty. Swiftで書かれた機械学習フレームワーク。機械学習フレームワークとしてはかなり高級なフレームワークのようで、よく知られたモデルを自前のデータで学習したい、というような用途に向いているように感じました。Nvidia Digitsとかを思い出しました。たとえば私の所属するDwango Media Villageで論文を書くための実験に使うには少し高級すぎるんじゃないかな、とは思います。面白いのは、ディープラーニング一辺倒ではなくRandomForestなどもきっちりカバーしてること。CoreMLはすでにtensorflowやONNX(chainerやmxnetなどから変換可能)やscikit-learnなどのモデルを利用することが出来るけれど、やっぱりswiftで書かれててswiftで使えるってとこを推してるんじゃないかなって思います。ちなみにturiという今はapple傘下のフレームワークもあって、これはpython用のものとなってます。turiも割と高級な機能がメインで、appleはそういうユーザー向けに機械学習機能を開発していくのかなと感じました。

Weight Quantization しれっとCoreMLにモデル圧縮機能が入った、これはとても印象深かかったです。モバイル向け機械学習業界ではたしかに激しく研究されている分野なので。float32で表現されてるResnet50のモデルをuint4に量子化してたった14MBでもある程度の精度を保つことが出来る、というデモをしていました。学習フレームワークからfloatでモデル吐き出して、coreml toolで圧縮して、iPhoneで使う、という流れが作られています。なお、精度が変わらない、というのをプレゼン映えさせるのにStyle Transferの例を出して、floatのモデルと見た目が変わらないことをデモしていて、とてもわかり易いなーーーって思いました(2bitまで圧縮すると流石に崩れる)。

個人的な感想

cover

Labs 現地で参加することの面白い点としては、Technology Labsという名前で、appleのエンジニアがチームごとに別れて相談に乗ってくれる時間が有ることです。本当にフランクに話しかけて相談に乗ってくれます。私はARKit LabとMachine Learning Labに参加して自分の開発中のアプリの相談をしたりしました。ちなみに"こういう機能追加する予定ないの?“という探りは流石にスルーされました。純粋にいまの機能の使い方を質問しましょう。審査やデザインについて質問できるLabも有るらしくて、そちらは超人気という話を聞きました。

cover

Bash 私は普段人と話すよりコーディングしてる時間のほうが圧倒的に長いタイプの人間なので、正直パーティー的なものには苦手意識が有るんですが、Bashは楽しかったです。楽しかったですが、じゃあすぐ東京で他の企業が真似したら嬉しいかと言われるとたぶん参加しないので難しいですね。Appleのスタッフやそもそも参加者たちが作り出すフランクな雰囲気があってこそ成立してる会なのだと思います。ちなみにハード面でも真似するのは難しくて、公園まるごと貸し切りで野外ライブもあったりとか、スケールでかいです。

Bashも含めてですが、基本的にAppleのスタッフ自身が楽しんでいる(のを見せる)のがいいな、うまいな、と思いました。列整理をしてるだけなのに踊ってるスタッフとか普通にいるんで、異次元の文化でした。そういう空気感だからこそ、参加者も盛り上がりやすく、また、逆に各セッションを盛り上げようという気分になるんだなと学びました。