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

Inverse Rendering

逆レンダリングでは、写真から、それを生成した形状、素材、照明、カメラを逆算します。これにより、再照明や素材の編集が可能になります。

逆レンダリングとは、1枚以上の画像から、その背後にある物理的なシーンを復元する処理です。復元対象には、物体の3D形状、表面の材質、照明、撮影に使われたカメラが含まれます。コンピューターグラフィックスのレンダリングは、シーンの記述をピクセルに変換する順方向の処理です。逆レンダリングでは、同じ物理法則を逆向きにたどり、観測された写真を再現できるシーンパラメーターを探索します。コンピュータービジョンとグラフィックスが交わる領域に位置し、逆グラフィックスとも呼ばれます。Stephen Marschner氏の1998年のコーネル大学博士論文Inverse Rendering for Computer Graphicsでは、写真から照明と表面反射率を復元する問題を、この種の逆問題として位置づけています。

合成による解析#

多くの逆レンダリング手法は、解析合成と呼ばれるループに従います。シーンを推定し、レンダリングし、実際の写真と結果を比較して、差が小さくなるよう推定を調整します。微分可能レンダリングを使うと、各調整を効率的に行えます。レンダラーは、各シーンパラメーターに対して各ピクセルがどのように変化するかを出力するため、勾配降下法で何千ものパラメーターを一度に更新できます。これはニューラルネットワークを誤差逆伝播で学習させるのと同じ仕組みです。Mitsuba 3などの物理ベースの微分可能レンダラーは、この手法を影、反射、表面間の光の反射にも適用します。

最も単純なシーン、つまり遠方にある1つの光源で照らされたつや消しの球体なら、PyTorchでこのループを数行で実装できます。このコード例では、オプティマイザーには見えない光の方向と表面の明るさ(アルベド)を使って目標写真をレンダリングし、その後、ピクセルだけから両方を復元します。使用するのはAdamオプティマイザーです。

import torch
import torch.nn.functional as F

# Unit normals of a sphere seen head-on, on a 64 x 64 pixel grid
y, x = torch.meshgrid(torch.linspace(-1, 1, 64), torch.linspace(-1, 1, 64), indexing="ij")
z = (1 - x**2 - y**2).clamp(min=0).sqrt()
normals = torch.stack([x, y, z], dim=-1)[z > 0]

# Lambertian "photo" lit from a direction the optimizer never sees, with albedo 0.8
photo = 0.8 * (normals @ F.normalize(torch.tensor([0.6, -0.4, 0.7]), dim=0)).clamp(min=0)

# Fit light direction and albedo: render, compare with the photo, follow the gradients
light = torch.tensor([0.0, 0.0, 1.0], requires_grad=True)
albedo = torch.tensor(0.3, requires_grad=True)
optimizer = torch.optim.Adam([light, albedo], lr=0.02)
for _ in range(500):
    render = albedo * (normals @ F.normalize(light, dim=0)).clamp(min=0)
    loss = (render - photo).pow(2).mean()
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

print(f"Light direction: {F.normalize(light.detach(), dim=0).numpy().round(3)}, albedo: {albedo.item():.3f}")

このコードは、隠された値を正確に示すLight direction: [ 0.597 -0.398 0.697], albedo: 0.800を出力します。本番システムでも同じループを使いますが、1行のシェーディングモデルを完全な光輸送モデルに置き換え、未知の対象もメッシュ、テクスチャマップ、環境光へと拡張します。

問題が曖昧である理由#

多くの異なるシーンが同じ画像を生成します。暗い領域は、塗装が暗い場合、影の場合、あるいは光から遠ざかるように表面が傾いている場合があります。明るい斑点も、光沢のある素材か、ちょうどよい位置に置かれたランプのどちらかかもしれません。明るさだけを見ても曖昧さは残ります。光を2倍にしてアルベドを半分にすると、同じピクセル値になるため、このスニペットでは光の方向を正規化し、明るさのすべてをアルベドに担わせます。手法は次の3つの方法で解を絞り込みます。

  • 観測を増やす: 対象物を多くの視点から撮影したり、フォトメトリックステレオのように複数の既知の光源の下で撮影したりすると、1枚の写真よりも形状と素材を大幅に制約できます。
  • 学習済み事前分布: 大規模なレンダリングシーンの集合で学習したネットワークは、1枚の画像から、もっともらしい法線、材質、照明を予測し、オプティマイザーに有力な初期値を与えます。
  • 既知のジオメトリ: 深度センサーや深度モデルから形状が得られる場合、残る未知の要素は材質と照明に絞られます。

単一画像の深度推定は、一般的な写真からこの幾何情報を得ます。Ultralytics YOLO26の深度モデルは、1枚のRGB画像からピクセルごとの深度マップをメートル単位で予測します。また、その勾配から計算される表面法線は、球体の例で既知の値として扱われる陰影の幾何情報です。

逆レンダリング、再構成、ニューラルレンダリングの違い#

3D再構築では、視覚的オドメトリやマルチビューステレオなどを使ってジオメトリを復元します。通常、撮影時の照明は表面の色に焼き込まれます。ニューラルラディアンスフィールドとガウシアンスプラッティングも、同じレンダリングと比較のループで最適化されます。しかし、表面と照明を分離せずに各方向から見たシーンをモデル化するため、新規視点にも元の照明が残ります。逆レンダリングの目的はこの分離にあり、再照明、材質編集、仮想物体のリアルな挿入を可能にします。近年の多くの手法は深層学習を組み合わせ、より広いニューラルレンダリングの分野で、ラディアンスフィールドに反射率や照明のモデルを加えています。

アセットのキャプチャ、AR、視覚効果#

  • 3Dアセットのキャプチャ: 小売業者やゲームスタジオは、実際の商品をスキャンして3Dアセット化し、色、粗さ、表面法線のマップを個別に用意します。これにより、ストアページやゲームエンジンで、どのような照明の下でもモデルを正しくレンダリングできます。
  • 拡張現実: GoogleのARCoreなどのARフレームワークは、カメラ映像から室内の照明を推定し、仮想物体に周囲と合ったシェーディング、影、反射を与えます。
  • 視覚効果: Paul Debevec氏らが2000年に導入したライトステージ装置は、多数の方向から照明を当てて演者の顔を撮影し、その反射率を復元します。これにより、スタジオはデジタルの顔を任意のショットに合うよう再照明できます。

ソリューションを見る

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

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

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の未来を一緒に築きましょう!

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