Instruct-NeRF2NeRF Editing 3D Scenes with Instructions 第58回 コンピュータビジョン勉強会@関東 深層学習+3D論文読み会 pacifinapacific
自己紹介 ・今年転職したばかりのAIエンジニア ・仕事は画像系(物体検出など)の開発 ・3Dコンテンツの作成などに興味があり参加しました @pacifinapacific AI系のことを呟いたりしているのでよろしければフォローお願いします!! 2 2
どういう論文か? "Turn the bear into a grizzly bear" 3 "Turn the bear into a panda" 学習済みNeRFシーンをテキストプロンプトで編集できる手法の提案 3
NeRFの編集性に関して NeRFはフォトリアルな3Dコンテンツを作成できるため、近年かなり注目されているが、まだ実用化していくには課題が多い 問題点の一つとして、出来上がった3Dコンテンツの編集の難しさがある ・オブジェクトが分離されていない (熊の銅像部分だけ抜き出しなど) ・オブジェクトのスタイルを変えることが難しい(熊のテクスチャの貼り換えなど) ・生成品質が悪かった場合、人手での介入が難しい(NeRF特有のもやの発生など) NeRFの編集性は大きなテーマになっている 4 4
NeRFの編集に関する研究例(1/2) Editing Conditional Radiance Fields (http://editnerf.csail.mit.edu ) NeRFにshape制御とcolor制御の潜在変数を 追加することで色と形状の条件付け生成を可能にした論文 条件付けによる損失が単純で生成品質に課題 5 5
NeRFの編集に関する研究例(2/2) CLIP-NeRF: Text-and-Image Driven Manipulation of Neural Radiance Fields (https://cassiepython.github.io/clipnerf ) 編集の妥当性をCLIPを用いて判定、テキストによる条件付けを可能にした。 (オブジェクトが異なるよりビューが異なった方がCosine similarityが一致) CLIPを用いた判定は局所的な編集に課題 6 6
Instruct-NeRF2NeRFの学習概要 NeRFでレンダリングした画像に対してInstruct-Pix2Pixと呼ばれるモデルを使って、テキストプロンプトをもとに画像編集を行う 編集して得られた画像でDatasetを置き換えてNeRFを再学習 シンプル!! 7 7
Instruct-Pix2Pixとは 元画像と編集指示のテキストプロンプトを入力することで画像編集可能な拡散モデル https://www.timothybrooks.com/instruct-pix2pix 画像編集モデルの学習は元画像と編集後画像のペアが手に入りにくいため、教師データをつくることが難しい 大規模生成モデルを利用することでデータセットそのものを作成し、学習を可能にした (データセット作成後はStable diffusionをfine tuning) 8 8
Instruct-Pix2Pixのデータセット作成手順 (a) 700個の画像キャプションに対し、人手で編集指示文と編集後の画像キャプションを作成、 それを元にして画像キャプションを入れると編集指示文と編集後画像キャプションを出力してくれるようGPT3をファインチューニング (b) オリジナルの画像キャプションと、編集後の画像キャプション、それぞれに対してStable Diffusionで画像生成し 編集前後の画像ペアを作成 9 ここで編集箇所以外の部分が変わらないようにPromp2Promptという技術を使用 9
Prompt2Promptとは 2つのプロンプトで画像生成したとき、プロンプトの差分以外の要素を一致させる技術 https://prompt-to-prompt.github.io “photograph of a girl riding a horse” horseとdragon以外の要素は一致させて画像生成 “photograph of a girl riding a dragon” 10 10
Prompt2Promptの具体的な中身(1/2) Diffusion model内部ではtext情報をattention層を介して取り込んでいる Unet構造 https://qiita.com/omiita/items/ecf8d60466c50ae8295bより引用 テキストトークンに対するAttention Mapの可視化 11 “bear”,”bard”などのトークンと物体位置が強く関係していることがわかる 11
Prompt2Promptの具体的な中身(2/2) Diffusion modelの逆拡散stepごとのattention mapを見ると早い段階でテキストにより構図が確定していることが判明 したがって早い段階(t>p)でのAttention Mapを共通化(target画像のものにswap) させることで構図を一致させることができる target画像 “photo of a cat riding 12 on a bicycle.” (pを大きくしたとき) (pを小さくしたとき) 12
Instruct-Pix2Pixの学習 GPT3から編集指示文、Stable Diffusion with Prompt2Promptから編集前後のペア画像が得られるので それを用いてStable Diffusion をfine tuning vanillaなStable Diffusionと違い、編集前画像の条件付けがあるの で、最初の畳み込み層にチャネルを追加することで入力 (追加される重みは0で初期化) さらに画像編集の品質を向上させるため、 Classifier-free Guidanceに画像条件項を追加するという工夫も導入 13 13
Classifier-free Guidanceとは? Stable Diffusionではテキスト条件付き生成画像の多様性と品質を確保するために Classifier-free Guidanceによって予測ノイズをサンプリング [Text Conditioned] 学習時は一定確率でtext conditionを行わない。 サンプリング時は以下の式によりノイズをサンプリングする ガイダンススケールsによってtextの重要度をコントロール [No Text] 拡散モデルのoutput space Instruct Pix2Pix2ではText以外に元画像でも条件付けされるた め、 Classifier-free GuidanceにImage Condition項を追加 14 14
Instruct-NeRF2NeRFの編集詳細 Ray Batch単位でLossを計算するたびにInstructPix2Pixで画像を一枚だけ編集して置き換えていく。 𝑧𝑡 = 𝜀(𝐼𝑟 ) Instruct-Pix2Pix 現在のNeRFレンダリング画像 𝐼𝑟 編集後画像 𝑐𝐼 𝑐𝑇 "Turn the bear into a grizzly bear" オリジナルの画像 編集指示テキスト 最初のlatentはレンダリング画像から作成 オリジナル画像による条件付け項 指示テキストによる条件付け項 初期ノイズを現在のNeRFレンダリング画像から作ることでNeRF の現在の 3D 構造を組み込むことができ、シーンの一貫性が高くなる。 15 15 またオリジナルの画像の条件付けにより、データセット置き換えが進むにつれてのドリフトを回避
Instruct-NeRF2NeRFの学習詳細 編集により画像を置き換えると編集前の画像と置き換えた画像が混在するため、シーンに矛盾が存在 NeRF学習時のray samplingをデータセット全体からサンプリングし、 継続的にデータセットをUpdateを行う 3D 構造と一貫性の維持と編集の実行のバランスをとる段階的な最適化が可能になり徐々に学習を収束させることが可能 16 16
定性評価と課題 既存手法と比べてQualityの高い編集が可能に 課題 Instruct-Pix2Pixの制約の大部分を引き継いでいる ・大きな空間操作、オブジェクトの追加、削除 ・指示と対応するオブジェクトの対応ができないなど 17 17
まとめと所見 Instruct-Pix2Pixを用いたテキストによる画像編集を利用したNeRFの論文の紹介した ・テキストによりフォトリアルな編集を行えるのは魅力的 ・大きなジオメトリの変化を伴う編集についてはまだ課題は残る ・編集するのにNeRFの再学習を行っているため非常に時間がかかる ・比較的Hotなテーマのはずなのでこれからも関連論文はたくさん出ると思われる。 18 18