ML擅长inverse problem
NeRF
- MLP的作用:用神经网络函数来拟合一个体素的“函数”,从而实现给出5D坐标时可以查询到颜色和Density值,也就为随后的体素渲染提供了输入
神经网络倾向于学习低频函数
- 加入Positional encoding帮助维持高频信息的恢复:傅里叶变换?使输入掺入高频函数
- Hierarchical sampling 加速
Instant-NGP
Read list:
To be read:
- 论文随记|Instant Neural Graphics Primitives with a Multiresolution Hash Encoding Abstract
- Plenoxels: Radiance Fields without Neural Networks
- PlenOctrees for Real-time Rendering of Neural Radiance Fields
- Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields
- NeRF++
Instant-ngp重要的加速手段:
- cuda加速
- 多分辨率Hash位置编码(跟NeRF的5Dinput相比,把输入特征化)
- 射线推进:指数步进、空白跳过、样本压缩
空间哈希函数
NeuS
Read list:
To be read:
基于SDF
NeRF是专注于生成新视点图像而不是表面重建所以有明显噪声
Colmap
Differentiable rendering
Physically-Based Differentiable Rendering Tutorial at SIGGRAPH 2020
GAMES-101
Bli-Pong 着色?
着色?
BRDF
The rendering equation
- What‘s pdf ?
Utah teapot
Cornell box
- color bleading
为什么Path Tracing 可以设置为1条光线?
递归终止条件?设置等期望值的Russian Roulette
SPP(Samples per Pixel)
纯光源贡献无需设置概率;非光源贡献(反射光)才需要
材质==BRDF
微表面模型:远处看是材质,近处看是几何
利用纹理建模真实材质
Concepts
SfM:
SfM is short for Structure from Motion, which is a technique for reconstructing 3D models of scenes or objects from a set of 2D images taken from different viewpoints1. SfM is based on the principle of triangulation, which means finding the position of a point in 3D space by measuring its distance from two or more known points2. SfM can be used for various applications, such as 3D scanning, virtual reality, archaeology, and photogrammetry3.
To understand SfM, you need to learn some basic concepts and steps involved in the process. Here is a brief overview of the main steps of SfM4:
- Image acquisition: This is the first step, where you capture a set of images of the scene or object you want to reconstruct. You need to make sure that the images have enough overlap and coverage, and that they are not blurry or distorted. You can use any camera or device that can take pictures, such as a smartphone, a DSLR, or a drone.
- Feature detection and matching: This is the second step, where you find distinctive points or features in each image, and match them across different images. These features are usually corners, edges, or blobs that can be easily detected and described by algorithms. The matching process involves finding the best correspondences between features in different images based on their appearance and geometry. This step produces a set of feature matches that indicate which parts of the images belong to the same scene point.
- Camera pose estimation: This is the third step, where you estimate the position and orientation of each camera relative to the scene. This is also known as camera calibration or camera registration. You can use various methods to estimate the camera pose, such as solving a system of equations, using optimization techniques, or applying geometric constraints. This step produces a set of camera poses that define the viewpoints from which the images were taken.
- Sparse point cloud reconstruction: This is the fourth step, where you triangulate the feature matches to obtain a sparse set of 3D points that represent the scene structure. You can use various methods to triangulate the feature matches, such as linear algebra, projective geometry, or bundle adjustment. This step produces a sparse point cloud that gives an initial approximation of the scene shape.
- Dense point cloud reconstruction: This is the fifth step, where you refine and densify the sparse point cloud by adding more 3D points that are not detected by features. You can use various methods to densify the point cloud, such as stereo matching, multi-view stereo, or depth estimation. This step produces a dense point cloud that gives a more detailed representation of the scene shape.
- Mesh generation and texturing: This is the final step, where you convert the dense point cloud into a mesh or a surface that connects the 3D points with triangles or polygons. You can use various methods to generate the mesh, such as Delaunay triangulation, Poisson surface reconstruction, or marching cubes. You can also apply textures or colors to the mesh by projecting the images onto it. This step produces a textured mesh that gives a realistic visualization of the scene.
If you want to learn more about SfM and how to use it in practice, you can check out some online tutorials and resources that explain the theory and implementation of SfM in more depth. For example:
- SFM Tutorial #1 - Robotic Movement: A video tutorial that shows how to make robotic movement for FNAF characters using SFM.
- Source Filmmaker Official Full Tutorial by © Valve: A video tutorial that covers all aspects of SFM software by Valve Corporation.
- The Fundamentals of SFM: For Beginners: A written guide that introduces the user interface and basic functionality of SFM software.
- A self-reliant tutorial on Structure-from-Motion: A GitHub repository that provides a Python script and an associated booklet for performing SfM on your own data.
I hope this helps you understand SfM better. If you have any questions or feedback, feel free to ask me. 😊
Deterministic stratified sampling is a type of stratified sampling, which is a method of obtaining a representative sample from a population that researchers divided into subgroups based on characteristics that they share (e.g., race, gender, educational attainment)1. In deterministic stratified sampling, the sample size for each subgroup is fixed in advance, and the sampling fraction for each subgroup is proportional to the size of the subgroup in the population2. For example, if the population consists of 40% males and 60% females, and the total sample size is 100, then the sample should include 40 males and 60 females. This ensures that every subgroup is adequately represented in the sample, and that the sample reflects the diversity and structure of the population2.
Deterministic stratified sampling has several advantages over other sampling methods, such as simple random sampling or cluster sampling. It can improve the precision and accuracy of the estimates for each subgroup, as well as for the whole population, by reducing the sampling error and variance within each subgroup2. It can also ensure that rare or minority subgroups are not overlooked or underrepresented in the sample3. However, deterministic stratified sampling also has some limitations and challenges. It requires prior knowledge of the population characteristics and proportions, which may not be available or accurate2. It also requires a clear and mutually exclusive classification of the subgroups, which may not be possible or appropriate for some variables (e.g., income, education level)3. Moreover, it may increase the complexity and cost of the sampling process, as it involves dividing and sampling from multiple subgroups2.
If you want to learn more about deterministic stratified sampling and how to use it in practice, you can check out some online tutorials and resources that explain the theory and implementation of this method in more depth. For example:
- Stratified Sampling | Definition, Guide & Examples: A written guide that introduces the concept and steps of stratified sampling, with examples and tips.
- Stratified Sampling: Definition, Advantages & Examples: A written guide that explains what stratified sampling is, why it is useful, and how to perform it.
- [Stratified Sampling in R]: A video tutorial that shows how to perform stratified sampling in R using the dplyr package.
- [Stratified Sampling in Python]: A video tutorial that shows how to perform stratified sampling in Python using pandas.
I hope this helps you understand deterministic stratified sampling better. If you have any questions or feedback, feel free to ask me. 😊
面试之前的准备
仔细过一遍GAMES101,尤其联系nerf、instant-ngp、neus等工作
光场相机?
光线追踪?
思考:
- instant-ngp使用multi-resolution hash encoding的优势在哪里?与对体素直接使用该trick有何不同?联想Plenoxels,读完后考虑NN真的是必要的吗?
- nerf的优势,劣势?nerf的主要贡献在哪里?
- instant-ngp是如何跳过空区域的
- Open-World项目的method设计思路?