2024.03.29
NeRFを編集する
こんにちは。AaaS Tech Labの髙橋です。
私は前職からNeRF(Neural Radiance Fields)という技術に興味を持ち日々キャッチアップをしています。NeRFは、ECCV 2020でBest Paper Honorable Mentionを受賞した論文 "Representing Scenes as Neural Radiance Fields for View Synthesis"[1]に基づく技術です。さまざまな角度から撮影した複数の写真から、自由視点画像を生成する技術で、以下のように好きな視点から対象物を見ることができます。
広告業界においてNeRFを活用してメディアコンテンツを開発する際には以下の4つのステップがあります。
1. 撮影対象やシーンの決定
2. 撮影方法の工夫
3. NeRFモデル (ツール)の選定
4. 完成したNeRF (シーン)の編集
前回の記事ではNeRFのお気持ちを理解する[2]と題して、主に撮影方法の工夫について紹介しました。今回は完成したNeRFシーンの編集にスポットを当てます。
Instruct-NeRF2NeRF[3]という論文によるとNeRF x 編集という分野には以下3つの背景があります。
- 3Dシーンのフォトリアリスティックな再構成と編集は、コンピュータビジョンとグラフィックスの分野で長年の課題
- NeRFは3Dシーンの高品質な再構成を可能にするが、直接的に編集することは困難
- 既存の3D編集ツールは主に専門家向けであり、一般ユーザーが容易に使えるものではない
これらの課題を解決するために、NeRF x編集の分野において、先行研究では複数の手法が提案されています。特にLatentEditor[4]を参照すると4つの編集能力に着目して先行研究の比較がされています。
記事画像
ここでText Drivenとはテキストプロンプトを使用して編集可能であること、 Style Transferとは画像に特定の画家のスタイルなどを適用すること、Multi-Attribute Editingとは複数の属性を同時に編集する能力、Local Editingとは特定の領域だけをターゲットにした編集能力を意味します。詳細は以下の図が参考になります。
記事画像
LatentEditor論文より引用
今回は、最新性、精度、商用利用の観点からInstruct-NeRF2NeRFを紹介します。この論文はICCV 2023で採択され、NeRFを用いた3Dシーンをテキスト指示に基づいて編集する方法を提案しています。テキストで指示を出すことにより、例えば口髭の追加や銅像のようなスタイルに変更することが可能になります。詳細はプロジェクトページのデモ動画がわかりやすいのでそちらも合わせて参照ください。
Instruct-NeRF2NeRFの理論を簡単に説明すると、InstructPix2Pix[5]という人間の指示に基づいて画像を編集する条件付き拡散モデルを使って入力画像を繰り返し編集し、最適化された3Dシーンを生成します。このプロセスでは、NeRFからのレンダリング、画像の編集、NeRFの更新を継続的に繰り返します。しかし、拡散モデルは編集されていない画像も条件とするため、編集プロセスを繰り返しても、元の画像から大きく逸脱することなく、意図した編集を反映することが可能です。
記事画像
Instruct-NeRF2NeRF論文より引用
定性評価では、NeRF Artと比較が行われています。NeRF Artの場合、テキスト入力が具体的な指示ではなく、モデルが何を編集すべきかについての曖昧さが存在します。例えば、「Vincent van Gogh」の例では、モデルがゴッホのスタイルで絵を描くべきか、それとも顔をゴッホのように見せるべきかが不明確です。プロンプトの明確性は非常に重要であり、編集者の好みや意図を明確に反映させる必要があるようです。
記事画像
Instruct-NeRF2NeRF論文より引用
次に、実際に自分でInstruct-NeRF2NeRFを試した結果を紹介します。
実際に試してみると、InstructPix2Pixのパラメータ設定が非常に重要だということがわかりました。パラメータは2つあり、テキスト指示の重要度を決定するText CFG weight (default: 7.5)と、出力画像が入力とどれだけ似ているかを決定するImage CFG weigh (default: 1.5)があります。画像が十分に変化しない場合は、Image CFG weightを下げて類似性を落す、または、Text CFG weightを上げてテキストの指示を強調する必要があります。例えば、「Make it Old Delhi.」というプロンプトで日本の居酒屋の風景をインドの雰囲気に変換しようとした例が以下になります。Image CFG weightを下げることで元画像から大きく乖離してしまいタージマハルのような建物が背景に生成されてしまいました。
記事画像
InstructPix2Pixはデモサイト[6]から簡単に試せるので是非動かしてみてください。
最後に、事前にパラメータを調整し、Instruct-NeRF2NeRFでNeRFを編集した例を紹介します。
1番上がオリジナルのNeRFで、2番目は「Make it Old Delhi.」でインド風に編集したNeRF、3番目は「Make it a neon city.」でネオン風に編集したNeRFとなります。新規の視点から見た動画においても非常高く一貫性を保ちながら編集できていることがわかります。
NG例も紹介します。「Make vending machine's background look like the Namibian desert」というプロンプトを用いて、自動販売機があたかも砂漠の上にあるかのような画像生成を試みました。しかし、Image CFG weightを1.7に変更しても元画像とは大きく乖離することとなりました。
記事画像
以上がInstruct-NeRF2NeRFの紹介と実際に触ってみた結果でした。
これらの実験はNVIDIA T4 x 1 (16GB)で実行し、学習時間はNeRFで約30分、Instruct-NeRF2NeRFで3,4時間でした。
今回の検証を通して、Instruct-NeRF2NeRFはまだまだ改善点はあるもののメディアコンテンツ開発において使える技術の1つであることが確認できました。一方で編集能力はInstructPix2Pixに依存している部分もあり、今後もNeRF x 編集の技術の進化に注目していきたいと思います。Apple Vision ProのようなVRゴーグルがあれば、NeRFをテキストで編集した異世界な3D空間に没入するような体験ができる日もくるかもしれません。
このようにAaaS Tech LabではAI技術を用いたメディアコンテンツ開発、そのための情報のキャッチアップや検証を積極的に行っています。もし興味をお持ちの方がいらっしゃれば、ぜひcontactからお問い合わせください。また、採用活動も行っておりますので、興味のある方は採用サイト[7]からの応募もお待ちしています。