Top Shot:Google Pixel 3でベストショットを自動で撮影してくれる機能(1/2)

学習手法

1.Top Shot:Google Pixel 3でベストショットを自動で選択してくれる機能(1/2)まとめ

・Google Pixel3搭載カメラアプリの機能の1つであるTop Shotの紹介
・シャッターを押す前後1.5秒の最大90枚の画像からベストショットを選択し、高解像度化して提案
・機能的な品質、客観的な属性、主観的な品質の3つの観点からベストショットを判断する

2.Google Pixel 3のTop Shotを実現している技術

以下、ai.googleblog.comより「Top Shot on Pixel 3」の意訳です。元記事の投稿は2018年12月20日、Li ZhangさんとWei (Alex) Hongさんによる投稿です。後半はこちら

人生は、大切な瞬間でいっぱいです。子供が初めて歩いた瞬間や友人が嬉しさのあまり飛び跳ねている場面など。しかし、これらの瞬間はいつ発生するか予測できないことが多いため、完璧なシャッターチャンスを逃してしまう事は、スマートフォンのカメラで撮影していると日常的に直面するイライラする問題となります。Google Clipsの開発で得た経験を生かして、Pixel 3搭載のカメラでは、誰もが常に完璧なショットを撮影できる新しい技術を開発する方法がないか考えました。

訳注)上記にあるようにTop ShotはGoogle Clipsで培った技術が基礎になっています。Google Clipsは日本未発売の事もあり、日本ではそんなに大きくは注目されませんでしたが、過去記事「シャッターチャンスを認識して自動で撮影するGoogle Clipsの実現方法」を読んでおかないとどうやって人工知能に写真を主観的な評価をさせたのか?がわからないので読んでおくこと推奨です。

Top Shotは、Pixel 3に搭載された新機能で、シャッターボタンを押すだけで大切な瞬間を正確かつ自動的に捉えることができます。Top Shotは、コンピュータビジョン技術を使用して、デバイスのシャッターを押す前後の写真をリアルタイムで保存および分析し、数枚の高品質HDR+画像をベストショット候補として提案します。


Pixel 3のトップショットの例。左側では、より笑顔の瞬間をお勧め(recommended)しています。右側には、より高いジャンプの瞬間をお勧めしています。推奨される写真はHDR+化した高品質な写真です。

複数の瞬間を捉える
ユーザーがPixel 3のカメラアプリを開くと、Top Shotがデフォルトで有効になっており、シャッターを押す前後で撮影した画像を分析してくれるので、完璧な瞬間を捉えることができます。各画像は、プライバシーを保護し待ち時間を最小限に抑えるために、リアルタイムで完全にカメラ内で処理されます。いくつかの定性的特徴(例えば、対象が笑っているかいないか)が分析され、各画像は、画像のオプティカルフロー、露光時間、およびジャイロセンサデータなどの追加信号と関連付けられて、フレームの品質をスコア付けされます。

シャッターボタンを押すと、Top Shotはシャッターを押す前後1.5秒から最大90枚の画像を取り出し、最大2つの代替ショットを選択して高解像度で保存します。元のシャッターを押した瞬間の画像とPixel 3がベストショットと判断した代替案です。(他のフレームも低解像度ですが必要に応じて確認できます)。シャッターを押した瞬間の画像が最初に処理され保存されます。代替ショットは後で処理されます。Pixel 3に搭載されたGoogleのPixel Visual Coreテクノロジーを使用して、代替ショットはごくわずかな処理時間でHDR+画像化され、更にMotion Photoファイルに拡張されます。


Top Shopのダイヤグラム

Top Shotはバックグラウンドプロセスとしてカメラ内で実行されるため、消費電力は非常に少なくなければなりません。そのため、Top Shotは、ハードウェアアクセラレーションによるMobileNetベースのシングルショット検出器(SSD)を使用します。最適化モデルは、電力と実行時の発熱についても考慮する必要があります。

ベストショットを認識する
人々が自分のカメラで最高の瞬間を捉えることができるようにする方法を設計した時、私達は以下の3つの重要な属性に焦点を合わせました。

1)機能的な品質(照明など)
2)客観的な属性(被写体の目は開いていますか?彼らは笑っていますか?)
3)主観的な品質(感情表現など)

低レイテンシ(早い応答速度)且つオンデバイスモードで動作しながらこれらの属性を認識できるように、コンピュータビジョンモデルを設計しました。

私達の開発プロセスでは、何も改良していない素のMobileNetモデルをベースに、Top Shotのために最適化を行いました。そして、精度、待ち時間、電力のトレードオフの制約下で良好に動作するようにカスタマイズしました。私達のニューラルネットワークデザインでは、初期段階で低レベルの視覚的属性(被写体がぼやけているかなど)を検出し、次に複雑な客観的属性(被写体の目が開いているかなど)、そして主観的属性(一番の笑顔やジャンプの瞬間などベストショットと見なせるか否か)について追加の計算とパラメータを費やします。

トレーニングと推論の両方で、量子化(量子コンピュータの量子ではなくてパラメータの値を浮動小数点ではなく整数で扱う手法)と多種多様な顔画像に対して知識蒸留(Distilling the Knowledge:複数のモデルの出力を平均するアンサンブル学習を1つのモデルで実現する手法)を使用してモデルをトレーニングしました。

次に、階層化一般化加法モデル(GAM)を採用して、写っているそれぞれの顔の品質スコアを求め、それらを加重平均して「フレーム毎の顔スコア」にまとめました。このモデルにより、成功または失敗の正確な原因を解釈および特定することが容易になり、属性モデルの品質とパフォーマンスを向上させるための迅速な作業が可能になりました。フリーパラメータの数は数十レベルであったため、GoogleのブラックボックスオプティマイザであるVizierを使用して、選択品質に影響を与える他のパラメータと統合させてこれらを最適化できました。

(Top Shot:Google Pixel 3でベストショットを自動で選択してくれる機能(2/2)に続きます)

3.Top Shot:Google Pixel 3でベストショットを自動で選択してくれる機能(1/2)関連リンク

1)ai.googleblog.com
Top Shot on Pixel 3

2)arxiv.org
Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference

3)ai.google
Distilling the Knowledge in a Neural Network
Google Vizier: A Service for Black-Box Optimization

コメント

タイトルとURLをコピーしました