Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Neural Rendering

ニューラルレンダリングは、グラフィックスパイプラインの一部をニューラルネットワークに置き換え、写真から学習した画像や3Dシーンを生成します。手法とコードを解説します。

ニューラルレンダリングとは、従来のコンピューターグラフィックスのパイプラインの一部を置き換えたり拡張したりするニューラルネットワークを用いて画像や動画を生成する技術です。カメラ視点、照明、ジオメトリ、外観などのシーン属性を制御できます。従来のレンダリングでは、光の輸送に関する物理法則を使い、手作業で構築した3Dモデル、マテリアル、光源から画像を計算します。一方、ニューラルレンダリングでは、写真や動画からこれらの要素の一部を学習するか、最終的なピクセルを直接生成する方法を学習します。分野としてのニューラルレンダリングは、コンピューターグラフィックスの物理知識と生成機械学習を組み合わせ、微分可能レンダリングをネットワークのトレーニングに組み込むことがよくあります。ニューラルレンダリングは、実在の場所のフォトリアルな3Dキャプチャ、ビデオゲームでのAIアップスケーリングやフレーム生成、ロボティクスや自動運転車のシミュレーションに活用されています。

ニューラルレンダリングの仕組み#

最も影響力のある分野では、一般的な写真から3Dシーンを学習します。ニューラルネットワーク、学習済み特徴のグリッド、3Dプリミティブの集合などのシーン表現を、トレーニング写真のカメラ位置から画像にレンダリングします。この処理には微分可能レンダラーを使います。レンダラーのすべての段階を微分できるため、レンダリング画像と実際の写真との差を、誤差逆伝播によってシーンのすべてのパラメーターまでさかのぼれます。多くの視点でこの処理を繰り返すと、どのカメラでも撮影されていない視点からレンダリングできるほど、シーンを正確に再構築できます。

写真のカメラ姿勢は通常、COLMAPなどのStructure from Motionソフトウェアから取得します。ソフトウェアは重なり合う写真間で特徴をマッチングし、それぞれの撮影位置を特定します。

ニューラルシーン表現#

2020年に登場したニューラル放射輝度場 (NeRF)は、3D位置と視線方向を密度と色に対応付ける多層パーセプトロンの重みにシーンを格納します。ピクセルをレンダリングする際、NeRFはそのピクセルを通るカメラ光線上の点をサンプリングし、ボリュームレンダリングによって色を合成します。各サンプルの寄与は、不透明度と、前方のサンプルを通過した光の量に応じて決まります。このPyTorchコードは、1本の光線上で観測された1ピクセルを再現する小規模なフィールドをトレーニングします。

import torch
from torch import nn

# A tiny neural field that maps a 3D point to a density and an RGB color
torch.manual_seed(0)
field = nn.Sequential(nn.Linear(3, 64), nn.ReLU(), nn.Linear(64, 4))
optimizer = torch.optim.Adam(field.parameters(), lr=0.01)

# 64 points along one camera ray, and the color a training photo shows for that pixel
depths = torch.linspace(2.0, 6.0, 64)
points = torch.stack([torch.zeros(64), torch.zeros(64), depths], dim=1)
observed = torch.tensor([0.9, 0.4, 0.1])

for step in range(200):
    density, color = field(points).split([1, 3], dim=1)
    # Volume rendering: each sample's opacity times the light that reaches it through the samples in front
    alpha = 1 - torch.exp(-nn.functional.softplus(density.squeeze(1)) * (depths[1] - depths[0]))
    transmittance = torch.cumprod(torch.cat([torch.ones(1), 1 - alpha[:-1]]), dim=0)
    pixel = (transmittance * alpha) @ torch.sigmoid(color)
    loss = ((pixel - observed) ** 2).sum()
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    if step in (0, 199):
        print(f"step {step}: rendered {pixel.detach().numpy().round(2)}, loss {loss.item():.4f}")

step 0: rendered [0.71 0.37 0.56], loss 0.2496とstep 199: rendered [0.9 0.4 0.1], loss 0.0000を出力します。未トレーニングのネットワークは任意の色をレンダリングしますが、レンダリング方程式を通って逆伝播する勾配が重みを調整し、レンダリングされたピクセルが写真に一致するまで学習します。実際のNeRFは、数十枚から数百枚の写真から得た数百万本の光線に対して同じ処理を行います。

元のNeRFでは、NVIDIA V100 GPU上でシーンごとに1~2日間のトレーニングが必要でした。また、画像1枚のレンダリングに1億5,000万~2億回のネットワーククエリが必要で、1フレームあたり約30秒かかりました。NVIDIAのInstant NGPは、ネットワークの大部分を学習済み特徴のマルチ解像度ハッシュテーブルに置き換え、トレーニング時間を数秒から数分、1920×1080のレンダリング時間を数十ミリ秒に短縮しました。2023年にはガウススプラッティングがさらに進歩し、数百万個の明示的な3Dガウスでシーンを表現して、レンダリング時にネットワークを評価することなくリアルタイムでラスタライズします。同じ方法で最適化されるため、通常はニューラルレンダリングに分類されます。

画像空間ニューラルレンダリング#

もう1つの分野では、従来のレンダラーを維持しつつ、ネットワークを使って出力を仕上げたり拡張したりします。NVIDIAのDLSSは、ゲームを低解像度でレンダリングしてTransformerモデルでアップスケーリングし、GeForce RTX 50 Series GPUではゲームがレンダリングする1フレームごとに最大5フレームを生成します。パストレーシングによるレンダリングでは、学習済みのノイズ除去モデルを使い、ピクセルごとの少数の光サンプルから鮮明な画像を生成します。シーンのレイアウトから画像を合成するモデルもあります。NVIDIAのGauGANは、空、水、木々を表したセマンティックマップをフォトリアルな風景に変換し、ニューラルアバターシステムは新しい角度や照明条件で人物の顔をレンダリングします。

  • 微分可能レンダリング: 入力に対する出力の勾配を計算できるレンダラーです。ニューラルレンダリングが画像から学習できるようにする仕組みであり、メッシュを写真に合わせる場合など、ニューラルネットワークを使わずに利用されることもあります。
  • 逆レンダリング: 画像からジオメトリ、マテリアル、照明を復元します。多くの場合、微分可能レンダリングを使うことで、結果を編集して再レンダリングできます。
  • 新規視点合成: 未観測の視点から画像を生成するタスクです。NeRFやガウススプラッティングがこの課題に取り組みます。ニューラルレンダリングは、より広範な技術群を指します。
  • 生成AI: テキストから画像や動画を生成するモデルは、プロンプトからコンテンツを作成します。通常、特定のカメラ位置から見られる明示的なシーンはありません。

実際のアプリケーション#

  • 映画制作とバーチャルプロダクション: 撮影した場所を放射輝度場またはスプラットとして再構築し、視覚効果やプリビジュアライゼーション向けに新しいカメラ経路からレンダリングします。
  • デジタルツインとeコマース: 部屋、建物、製品をスマートフォンで撮影し、顧客やプランナーがブラウザーやARヘッドセットで見て回れる3Dビューにします。
  • ロボティクスと自動運転車: 記録した走行データを再構築し、視点をずらして再レンダリングすることで、知覚システムをテストするための合成データを生成します。撮影中に動く人や車は半透明のアーティファクトを残すため、パイプラインではトレーニング写真からそれらをマスクします。YOLO26のインスタンスセグメンテーションモデルは、各フレームのマスクを自動生成します。WaymoのBlock-NeRFは、個別にトレーニングしたNeRFのグリッドをつなぎ合わせ、280万枚の画像からサンフランシスコの地区全体を再構築しました。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう