Neural Radiance Fields (NeRF)
Trường bức xạ nơ-ron (NeRF) lưu cảnh 3D trong một mạng nơ-ron được huấn luyện trên ảnh có thông tin tư thế camera, rồi dựng các góc nhìn mới bằng phép dựng thể tích dọc theo tia camera.
Neural radiance field (NeRF) biểu diễn một cảnh 3D bằng một mạng nơ-ron, ánh xạ mọi vị trí 3D và hướng nhìn thành mật độ và màu sắc; model được học từ tập ảnh chụp thông thường có vị trí camera đã biết. Để kết xuất một góc nhìn, hệ thống bắn một tia qua từng pixel, truy vấn mạng tại các điểm dọc theo tia rồi hòa trộn kết quả bằng phép kết xuất thể tích, nhờ đó NeRF đã huấn luyện hiển thị cảnh từ những góc nhìn mà không camera nào ghi lại. Ben Mildenhall, Pratul Srinivasan, Matthew Tancik và các cộng sự tại UC Berkeley, Google Research và UC San Diego giới thiệu phương pháp này tại ECCV 2020 trong bài báo NeRF: Biểu diễn cảnh dưới dạng Neural Radiance Field để tổng hợp góc nhìn. NeRF tái tạo phản xạ, cấu trúc mảnh và vật liệu bán trong suốt—những yếu tố mà trắc ảnh dựa trên mesh xử lý kém—và khởi đầu làn sóng nghiên cứu kết xuất thần kinh, dẫn đến Gaussian splatting.
Cách Neural Radiance Fields hoạt động#
NeRF nguyên bản là một perceptron đa lớp không có phép tích chập. Model xử lý vị trí 3D đã mã hóa bằng 8 lớp kết nối đầy đủ, mỗi lớp có 256 kênh, rồi xuất ra mật độ thể tích và một vector đặc trưng gồm 256 giá trị. Vector đặc trưng kết hợp với hướng nhìn đã mã hóa được đưa qua thêm một lớp 128 kênh để xuất ra màu RGB. Mật độ chỉ phụ thuộc vào vị trí, giúp hình học nhất quán giữa các góc nhìn; màu sắc còn phụ thuộc vào hướng, nhờ đó ghi nhận các điểm sáng phản xạ và phản chiếu dịch chuyển khi camera di chuyển:
Để kết xuất một pixel, NeRF lấy mẫu 64 điểm dọc theo tia camera bằng mạng thô, sau đó lấy thêm 128 điểm tại nơi lượt chạy thô phát hiện mật độ, rồi đánh giá mạng tinh tại tất cả các điểm đó. Mỗi mẫu đóng góp màu theo tỷ lệ với độ mờ đục và độ truyền qua—tỷ lệ ánh sáng còn lại sau khi đi qua các mẫu phía trước—và tổng có trọng số tạo thành màu pixel. Quá trình huấn luyện tối thiểu hóa sai số bình phương giữa màu pixel được kết xuất và màu pixel trong ảnh chụp, trên các batch gồm 4.096 tia. Tư thế camera thường được xác định bằng phần mềm Structure from Motion như COLMAP; một cảnh cần 100.000 đến 300.000 vòng lặp, tức khoảng một đến hai ngày, trên GPU NVIDIA V100.
Perceptron đa lớp thông thường nhận tọa độ thô sẽ học các hàm trơn và làm mờ chi tiết nhỏ, vì vậy NeRF trước tiên ánh xạ mỗi tọa độ thành sin và cos ở các tần số tăng gấp đôi, gồm 10 tần số cho vị trí và 4 cho hướng. Đoạn code PyTorch này khớp cùng một mạng với tín hiệu 1D dạng sọc, cả khi có và không có mã hóa vị trí:
import torch
from torch import nn
torch.manual_seed(0)
# Color along one line through a scene, with fine detail such as a striped texture
x = torch.linspace(-1, 1, 512).unsqueeze(1)
target = torch.sin(12 * torch.pi * x) * torch.cos(3 * torch.pi * x)
# NeRF's positional encoding: sines and cosines of the coordinate at 10 doubling frequencies
freqs = 2.0 ** torch.arange(10) * torch.pi
encoded = torch.cat([torch.sin(x * freqs), torch.cos(x * freqs)], dim=1)
for name, inputs in (("raw coordinate", x), ("positional encoding", encoded)):
mlp = nn.Sequential(nn.Linear(inputs.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 step in range(1000):
loss = ((mlp(inputs) - target) ** 2).mean()
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f"{name}: mean squared error {loss.item():.4f}")Đoạn code in ra raw coordinate: mean squared error 0.0870 và positional encoding: mean squared error 0.0000. Công suất trung bình của tín hiệu là 0,25, vì vậy mạng dùng tọa độ thô bỏ sót khoảng một phần ba tín hiệu—các sọc mảnh—trong khi mạng được mã hóa tái tạo được tín hiệu đó.
NeRF nhanh hơn và mạnh mẽ hơn#
- Khử răng cưa và cảnh không giới hạn: Mip-NeRF kết xuất hình nón thay vì các tia mỏng vô hạn để loại bỏ răng cưa; Mip-NeRF 360 mở rộng phương pháp này cho ảnh chụp 360° không giới hạn.
- Tốc độ: Instant NGP của NVIDIA thay thế phần lớn mạng bằng bảng hash đa độ phân giải chứa các đặc trưng đã học, rút ngắn thời gian huấn luyện từ vài ngày xuống còn vài giây hoặc vài phút, đồng thời giảm thời gian kết xuất xuống hàng chục mili giây ở độ phân giải 1920×1080.
- Ảnh chụp ngoài thực tế: NeRF in the Wild bổ sung embedding biểu diễn diện mạo cho từng ảnh và một thành phần riêng cho các yếu tố xuất hiện nhất thời, nhờ đó vẫn tái tạo sạch các bộ ảnh trên internet dù điều kiện chiếu sáng thay đổi và khách du lịch đi ngang qua.
- Chuyển văn bản thành 3D: DreamFusion tối ưu hóa NeRF cho đến khi các hình ảnh kết xuất từ mọi góc trông hợp lý đối với model diffusion chuyển văn bản thành ảnh 2D, tạo đối tượng 3D từ prompt mà không cần dữ liệu huấn luyện 3D.
NeRF và các khái niệm liên quan#
- Gaussian splatting: Biểu diễn tường minh cảnh bằng hàng triệu Gaussian 3D rồi raster hóa chúng; phương pháp này kết xuất theo thời gian thực mà không cần đánh giá mạng cho từng pixel. Năm 2023, chất lượng của phương pháp ngang bằng Mip-NeRF 360 và đã thay thế NeRF trong nhiều công cụ ghi hình, đổi lại cần nhiều bộ nhớ hơn.
- Trắc ảnh: Tạo mesh tường minh bằng cách khớp đặc trưng giữa các ảnh. Mesh gọn nhẹ và có thể chỉnh sửa bằng phần mềm 3D tiêu chuẩn, nhưng khó xử lý bề mặt bóng, trong suốt và rất mỏng.
- Ước lượng độ sâu: NeRF tạo ra bản đồ độ sâu như một sản phẩm phụ—khoảng cách kỳ vọng tại đó mỗi tia dừng lại—nhưng chỉ sau khi tối ưu hóa trên nhiều ảnh của cùng một cảnh có tư thế camera. Model độ sâu đơn ảnh dự đoán độ sâu từ một ảnh duy nhất trong một lượt truyền xuôi.
- Biểu diễn thần kinh tường minh: NeRF là biểu diễn thần kinh tường minh chuyên biệt cho bức xạ và mật độ, bên cạnh các mạng lưu trữ ảnh, hình dạng hoặc âm thanh dưới dạng hàm liên tục.
Yêu cầu ghi hình#
NeRF giả định cảnh tĩnh, ánh sáng ổn định và được chụp từ nhiều góc nhìn chồng lấp với tư thế camera chính xác. Bài báo gốc huấn luyện từng đối tượng tổng hợp trên 100 góc nhìn được kết xuất và từng cảnh thực hướng về phía trước trên 20 đến 62 ảnh. Bất cứ thứ gì di chuyển trong lúc ghi hình, chẳng hạn người đi bộ hoặc ô tô, đều xuất hiện trong một số ảnh nhưng không có trong những ảnh khác; quá trình tối ưu hóa sẽ mô hình hóa chúng thành các “đốm nổi” bán trong suốt. Các model phân đoạn instance của Ultralytics YOLO26 tạo mask cho người và phương tiện trong từng ảnh, nhờ đó có thể loại các tia đi qua những pixel này khỏi quá trình huấn luyện.
Ứng dụng thực tế#
- Phim ảnh và sản xuất ảo: Các địa điểm được ghi hình sẽ được tái tạo và kết xuất theo những đường đi camera mới, làm phông nền chân thực như ảnh chụp và tư liệu tham chiếu bối cảnh.
- Robot và mô phỏng lái xe: Môi trường đã ghi hình được tái tạo để các nhóm phát triển phương tiện tự hành và robot có thể kết xuất hình ảnh cảm biến từ các vị trí mà chuyến đi ban đầu chưa từng đi qua.
- Trực quan hóa sản phẩm: Vài chục ảnh chụp một sản phẩm có thể tạo thành chế độ xem tương tác để người mua tự do xoay sản phẩm.
- Bản đồ: Để tạo Immersive View trong Google Maps, Google tái tạo nội thất nhà hàng và quán cà phê bằng NeRF từ ảnh DSLR chụp trong khoảng một giờ cho mỗi địa điểm. Phương pháp này phát triển dựa trên Mip-NeRF 360, kết hợp embedding diện mạo của NeRF in the Wild và điều kiện hóa phơi sáng của Block-NeRF, rồi cung cấp kết quả dưới dạng video 360° tương tác theo các đường bay được tuyển chọn.










