論文解説 Style-NeRF2NeRF: 3D Style Transfer From Style-Aligned Multi-View Images
project page : https://haruolabs.github.io/style-n2n/
arxiv : https://arxiv.org/pdf/2406.13393v1
ひとことまとめ
NeRFのスタイル変換をテキストベースで行える手法
概要
画像生成AIの変換能力をNeRFに応用することで効率的な3Dスタイル変換を実現した。一度NeRFを学習させたあとSDXLでスタイル変換を行い、そのスタイル画像から再度NeRFを再学習させることで、品質の良いスタイル変換を可能にした
![](https://assets.st-note.com/img/1719282948190-ObQT3Bmql1.png?width=1200)
提案手法
![](https://assets.st-note.com/img/1719285677730-gp8Cvdur1J.png?width=1200)
提案手法は、NeRFから複数の角度でレンダリングを行い、それをスタイル画像に変換する工程と、NeRFを生成したスタイル画像でfinetuningする工程の2段階で行う
スタイルをそろえた画像変換 (1段階目)
この段階では、複数のレンダリングした画像を入力して、それらがすべて同じスタイルに変換する。しかし、同じプロンプトを入力したとしても、複数視点からの画像では視覚的に一貫性のあるスタイルにはなりにくい。そこで、この問題を軽減するためにfully-shared-attentionを使用して、これらの問題を軽減する
![](https://assets.st-note.com/img/1719286497530-dAoKzhKTrH.png?width=1200)
端的にいえば全画像に対して$${K,V}$$の両方を共有させることで、複数視点での画像生成時に似た領域は似た色調になる。この変更により、画像が複数フレームで一貫して似た色合いになり、NeRFに学習しても崩壊せずきれいに学習ができる。
![](https://assets.st-note.com/img/1719286653943-UixWeyzCKo.png?width=1200)
NeRFのfinetuning
先ほど作成した画像をもとにNeRFを学習する際、RGBをそのまま損失としてしまうと、3次元での座標や色が不鮮明のため過学習する傾向がある。それゆえ、この段階では知覚的な類似度をもとにした損失関数を使う方がよく、この研究ではSliced Wasserstein Distance loss (SWD loss)を用いた。
Sliced Wasserstein Distance Loss (SWD loss)
VGG19などの学習済みCNNの特徴量は画像のスタイルをよく表すことが知られている。そこでその性質を使い知覚的な類似度を計算する。
![](https://assets.st-note.com/img/1719300856769-ihpGGQlkrJ.png?width=1200)
まず、を上の式のように定義する。ここで、$${l}$$はVGGの$${l}$$番目の畳み込み特徴量で、$${m}$$はピクセルである。$${F^l_m}$$はある座標の特徴量ベクトル$${p^l}$$を表しており、$${\delta}$$はディラック関数で、離散値を連続値扱いするために用いている。
つまり、この式はある画像を入力したとき、VGGの$${l}$$番目の畳み込み特徴量を画像位置方向で潰し、チャネルごとに集計したものを$${p^l}$$とおいている。
![](https://assets.st-note.com/img/1719301713549-QtTWo1iiuL.png?width=1200)
実際の損失関数$${L_{style}}$$は、$${L_{SWD}}$$を$${L}$$個のVGG特徴量の分布で計算した平均となる。$${\hat{p}^l}$$はターゲットとなる画像の分布を表しており、ここではスタイル変換後の画像である。
![](https://assets.st-note.com/img/1719301689101-uGFPifZf55.png?width=1200)
その$${L_{SWD}}$$の計算は上のようになっており、$${p^l}$$を1次元に投射したものから計算される。
![](https://assets.st-note.com/img/1719302035214-j4KUHU98Pw.png?width=1200)
この投射を行うことで、 $${N}$$-dimensional Wasserstein distanceの計算を1次元で代用している。1次元で代用すると何が良いのかというと、各数値を単純にsortして、それぞれの順位のものをペアとすれば良いからである。もし$${N}$$次元でやる場合、最適な輸送のマッチングの計算が大変なので (割り当て問題, おそらくハンガリアン法で解く)、全データ間の距離を計算する必要がある。この計算は時間がかかるのと、メモリ消費が激しくなる。
だいぶわかりにくいので、実際にどうやって計算するか考える。
VGGの$${l}$$番目の畳み込み特徴量$${F^l_m}$$は$${H \times W \times C}$$の3次元テンソルである。この$${H \times W}$$の部分を1つにまとめ、$${HW \times C}$$の2次元テンソルにしたものが$${p^l}$$である。同様にして$${\hat{p}^l}$$も計算している。このピクセル方向のマッチングをやりたいが、チャネル方向の次元が残っていると割り当ての計算が大変なので、適当な$${C}$$次元のベクトル$${V}$$をとり、内積をとることで1次元に変換して計算している。
Style Blending
![](https://assets.st-note.com/img/1719304255392-hxNAh0ktZh.png?width=1200)
2つの異なるスタイル画像をもとに、中間のスタイルをモデルに教え込むことができる。(例えば、男性と女性の中間など)
![](https://assets.st-note.com/img/1719304204704-cPma04yVk8.png?width=1200)
この計算は$${L_{SWD}}$$を適当な割合で混ぜれば良いだけで、非常に簡単であるが、柔軟なコントロールを可能にしている。
実験
![](https://assets.st-note.com/img/1719304344219-E6IKD8WeoH.png?width=1200)
提案手法は他の手法と比較してもスタイルの変換能力が高く、また人が非常に好むNeRFを生成できていることがわかる。
![](https://assets.st-note.com/img/1719304440003-R3xgi22SAF.png?width=1200)
定性的にみても、スタイルがきちんと変化しており、かつ左上のようにテント以外の部分が変化していないことがわかる。
まとめ
NeRFを用いてスタイル変換を行う手法を提案
生成画像が複数視点でブレないようにfully-shared-attentionを使用し、NeRF最適化にSliced Wasserstein Distance Loss (SWD loss)を使用
提案手法は定量的、定性的に他の手法よりすぐれていることを示した
この記事が気に入ったらサポートをしてみませんか?