Implicit Neural Representations (INRs)
暗黙的ニューラル表現では、画像、形状、3Dシーンを、座標を値に変換するニューラルネットワークとして保持し、任意の解像度で照会できます。
暗黙的ニューラル表現(INR)は、信号をニューラルネットワークで学習する連続関数として保持します。通常は小規模な多層パーセプトロン(MLP)が使われ、座標を値に変換します。画像はピクセル位置(x, y)を色に変換する関数、3D形状は点(x, y, z)を表面からの符号付き距離に変換する関数、シーンは点と視線方向を色と密度に変換する関数として表現されます。ネットワークの重みが表現そのものであり、ピクセルやボクセルのグリッドはありません。そのため、任意の座標で信号を取得でき、出力解像度が上がってもメモリ使用量は増えず、自動微分によって導関数を追加コストなしで取得できます。INRは座標ベースネットワークまたはニューラルフィールドとも呼ばれ、ニューラル放射輝度場や現代の3D再構成の多くを支えています。
暗黙的ニューラル表現の仕組み#
INRは一度に1つの信号に適合させます。座標をサンプリングし、その座標でのネットワーク出力と正解値を比較して、勾配降下法で重みを更新します。目標は信号の記憶であるため、適合時には意図的に過学習させます。通常のReLU活性化関数を使うMLPでは、ネットワークが高周波成分より低周波成分をはるかに速く学習するため、うまくいきません。Nasim Rahaman氏らは2019年、この現象をスペクトルバイアスと名付けました。生の座標を入力すると、ネットワークの出力は信号をぼかしたものになります。2020年に、2つの工夫でINRが実用化されました。座標をさまざまな周波数の正弦と余弦に変換する、Matthew Tancik氏らのフーリエ特徴とNeRFの位置エンコーディング、そしてReLUを正弦の活性化関数に置き換える、Vincent Sitzmann氏らのSIRENです。
このPyTorchの例では、同じMLPを使って1枚の写真に2回適合させます。1回目は生の座標、2回目はフーリエ特徴を使用します。
import torch
from skimage import data, transform
from torch import nn
torch.manual_seed(0)
# The signal: a 128 x 128 grayscale photo, and the (x, y) coordinate of every pixel in [-1, 1]
image = torch.tensor(transform.resize(data.camera(), (128, 128)), dtype=torch.float32).reshape(-1, 1)
grid = torch.linspace(-1, 1, 128)
coords = torch.stack(torch.meshgrid(grid, grid, indexing="ij"), dim=-1).reshape(-1, 2)
# Fourier features: sines and cosines of the coordinates at 128 random frequencies
proj = torch.pi * coords @ (10 * torch.randn(2, 128))
inputs = {"Raw coordinates": coords, "Fourier features": torch.cat([proj.sin(), proj.cos()], dim=-1)}
for name, x in inputs.items():
# The INR: a small MLP from coordinate to gray value, fit to this one image
mlp = nn.Sequential(nn.Linear(x.shape[1], 256), nn.ReLU(), nn.Linear(256, 256), nn.ReLU(), nn.Linear(256, 1))
optimizer = torch.optim.Adam(mlp.parameters(), lr=1e-3)
for _ in range(1000):
loss = (mlp(x) - image).pow(2).mean()
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f"{name}: PSNR {-10 * torch.log10(loss).item():.1f} dB")1,000ステップ後、生の座標を使ったネットワークのピーク信号対雑音比は22.0 dBで、画像はぼやけています。一方、フーリエ特徴を使ったネットワークは46.0 dBに達し、ほぼ完全な複製を生成します。ここでは10とした周波数スケールは、信号ごとに調整します。低すぎると適合結果がぼやけ、高すぎるとサンプルを記憶してしまい、サンプル間の値がノイズを含みます。Ultralyticsパッケージで動作するMetaのSegment Anything Modelは、点プロンプトとボックスプロンプトの座標をマスクデコーダーに渡す前に、同じランダムなガウスフーリエ特徴でエンコードします。
形状、シーン、処理速度#
3D形状向けINRは2019年に登場しました。DeepSDFは符号付き距離を、Occupancy Networksは任意の3D点が内側か外側かの確率を予測し、任意の解像度でメッシュを抽出できるようにしました。2020年にはNeRFが続き、位置と視線方向から色と密度を算出して新規視点合成を行いました。純粋なMLPは学習とクエリ処理に時間がかかるため、ハイブリッド設計では学習済み特徴をグリッドに保存し、小さなMLPでデコードします。NVIDIAのThomas Müller氏らによるInstant-NGPは、特徴のマルチ解像度ハッシュテーブルを使い、数時間ではなく数秒でNeRFを学習します。
INRは、ピクセルグリッド、ボクセルグリッド、メッシュ、点群などの明示的表現とは対照的です。明示的表現は値を直接保持し、ボクセルでは立方的に、解像度とともにデータ量が増えます。ガウシアンスプラッティングはNeRFに代わる近年の明示的手法で、数百万個の3Dガウスをラスタライズして高速にレンダリングします。基本的なINRは単一の信号に適合するため、多数の信号に汎化させるには追加の仕組みが必要です。たとえば、潜在コードからINRの重みを出力するハイパーネットワークや、少ないステップで新しい信号に適合する初期値を学習するメタ学習があります。
実際のアプリケーション#
- 医用画像:INRは、疎またはアンダーサンプリングされた計測値からCTやMRIのボリュームを再構成します。取得済みサンプル間の隙間を、滑らかでデータ整合性のあるボリュームで補完できるためです。
- 超解像:LIIFなどの局所暗黙的画像関数は、周辺特徴から任意の連続座標における色を予測するため、1つのモデルで画像を任意の倍率に拡大できます。
- 3Dコンテンツ制作:テキストから3D、画像から3Dへの生成モデルは、ニューラルフィールドを最適化または予測し、それをゲームや視覚効果用のメッシュに変換することがよくあります。
- 圧縮:Emilien Dupont氏らが2021年に発表したCOINは、小規模なMLPの量子化済み重みとして画像を保存し、低ビットレートではJPEGを上回ります。










