3D
コンピュータビジョン

小さな2D画像から3Dオブジェクトを生成する賢いアルゴリズム

次の記事

GoogleのCloud Platformが自社の高速ネットワークを使わない低能力な廉価版ネットワーキングを提供

世界を観察することで、私たちは知覚に情報を与え続けている。そのことで私たちは片側しか見ることのできない、或いは一瞬しか見ることのできない物体の全体像を想像することを、かなり上手にできるようになる。しかし、コンピュータにとってそれはただ苦手な仕事だ。しかし幸いなことに、 バークレーのAI研究者が作成した賢い手法が、その性能を大幅に向上させてくれるかもしれない。

何かを2Dで見て、実際の大きさを正確に推測することができるなら便利だ。それはARやVR、クリエイティブなワークフローなどの中でオブジェクトを追跡することを助ける。だが、それは難しい!

次元を上げるということは、考えなければならないデータが大幅に増えるということだ。各辺が100ピクセルあり、全体で1万ピクセルの画像を考えてみよう。それを正確に再現しようとするならば、高さも100ピクセルになるかもしれない。その場合に必要なボクセルは合計で100万ピクセルになる。これで3Dというわけだ。そしてもう少しだけ正確性を増したいとしよう、例えば各辺128ピクセルとしてみる。すると必要なボクセル数は200万となる。

それぞれのボクセルの中身(すなわち「空」または「充填」のいずれか)は、元の画像を分析することによって計算されなければならず、リアルな忠実度が必要な場合には計算量は急速に増大する。

左の2D画像を、1辺16ボクセル、1辺32ボクセル、などの解像度でレンダリングしたもの。品質は向上するものの、計算コストは​​急上昇する。

本来なら望ましい筈の、2D画像からの3Dへの外挿が進まないのはそれが原因だ。しかしバークレー人工知能研究所のChristian Häneは、より良いやり方が可能になる道筋を発見した。彼のソリューションは計算上も巧みだが、同時に額を思わず叩く程シンプルなものだ。

彼が気が付いたのは、一般には、実際に100x100x100の全体を計算しようとしているのではなく、オブジェクトの表面を記述しようとしているだけだということだ。その周りの何もない空間や内側は?関係ない。

ということで、彼のシステムはまず非常に低い解像度で2D画像を3Dとして構成する。その段階でも多くのことがわかる、例えば、全体の外側の3分の1は何も無いように見えるといったことなどだ。よし、その部分は捨ててしまおう。

次に、保存した領域に対してより高解像度のレンダリングを行う。ふむ、上と下が空白だが、真ん中はピクセルで一杯のようだ、中心部にある大きな塊を除いては。空白のビットを投げ捨て、きれいにして、繰り返す。

これを数回行うと、高い空間解像度を持つ3Dオブジェクトを実際に得ることができる。意味のある情報を持つ部分だけを計算することで、比較的少量の計算量でこの結果を得ることができる。

得られたモデルたちは、従来の手法で生成されたモデルたちと比較されたが、一般的に生成する計算量は遥かに少ないのに、モデルは同等もしくは良い仕上がりとなった。論文に掲載された例は、このArxivからダウンロードして見ることができる。

これは完璧なソリューションからは程遠く、人間はこの点に関してまだ遥かに優れている。しかしこれは、私たち自身の視覚システムが、自分自身を最適化する方法を実際に模倣する、素晴らしい手法だ。私たち自身の視覚がとてもうまく働く理由の1つは、知覚をスムースに行うためには余分なものと脳が判断したデータを、巧みに捨て去ることができるからだ。ほとんどの場合、こうしたショートカットに気づくことは無いが、時には錯視のような場面で表面化する。

コンピュータが人間のように見ることができるようにするということは、脳の強さを模倣するだけでなく、ときにその弱さをも模倣するということも意味する。これは実際に人間と同じだとはとても言えないものの、近いものにはなっている。そして大事なことは、それは実際に使えるということだ。

[ 原文へ ]
(翻訳:Sako)