chore: change pic to cos

This commit is contained in:
camera-2018
2023-07-02 00:33:36 +08:00
parent 08fa485f6f
commit cd9d239d20
91 changed files with 462 additions and 462 deletions

View File

@@ -6,11 +6,11 @@ NeRF 想做这样一件事,不需要中间三维重建的过程,仅根据位
在生成建模前,我们需要对被建模物体进行密集的采样,如下图是一个示例的训练集,它含有 100 张图片以及保存了每一张图片相机参数(表示拍摄位置,拍摄角度,焦距的矩阵)的 json 文件。
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcn6jg09V944MU1sBsstmdaib.png)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcn6jg09V944MU1sBsstmdaib.png)
你可以看到,这 100 张图片是对一个乐高推土机的多角度拍摄结果。我们需要的是一个可<strong>以获取这个推土机在任意角度下拍摄的图片</strong>的模型。如图所示:
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnLEEyuUWOwiJOePhmmsAakd.gif)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnLEEyuUWOwiJOePhmmsAakd.gif)
现在来看 NeRF 网络:
@@ -40,7 +40,7 @@ NeRF 想做这样一件事,不需要中间三维重建的过程,仅根据位
- 对应的小方块的 RGB 信息
- 不透明度
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcni4q9Cp8G7H9HjKMrfImcZe.jpg)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcni4q9Cp8G7H9HjKMrfImcZe.jpg)
在这里,作者选择了最简单的 MLP因此<strong>这是一个输入为 5 维,输出为 4 维向量</strong>($R,G,B,\sigma$)的简单网络,值得注意的是,不透明度与观察角度无关,这里在网络中进行了特殊处理,让这个值与后两维无关。
@@ -58,15 +58,15 @@ NeRF 想做这样一件事,不需要中间三维重建的过程,仅根据位
这段要仔细看和推导,第一遍不容易直接懂。顺带一提,我们的<strong>小方块</strong>学名叫<strong>体素</strong><del>为了显得我们更专业一点以后就叫它体素罢</del>
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnnwHy3Hlhbu2bOsi6r2BYJe.png)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnnwHy3Hlhbu2bOsi6r2BYJe.png)
上面所说的公式具体如下t 是我们的$\sigma$$t_f,t_n$分别是离发射点最远的体素和最近的体素。这个公式求得是像素的颜色。
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnDWBUOJucS2YdT7MlKBAq8g.png)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnDWBUOJucS2YdT7MlKBAq8g.png)
思路总体如上,这里放一张找来的渲染过程示意图(<del>不知道为什么有点包浆</del>
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnfH30VDvbSdzahs5lRuirUd.gif)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnfH30VDvbSdzahs5lRuirUd.gif)
# 算法细节部分
@@ -86,10 +86,10 @@ NeRF 想做这样一件事,不需要中间三维重建的过程,仅根据位
粗网络就是上述采样方法用的普通网络,而<strong>粗网络输出的不透明度值会被作为一个概率分布函数</strong>,精细网络根据这个概率分布在光线上进行采样,不透明度越大的点,它的邻域被采样的概率越大,也就实现了我们要求的在实体上多采样,空气中少采样。最后精细网络输出作为结果,因此粗网络可以只求不透明度,无视颜色信息。
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnwl72wntQgYMFvRPTWY5fPf.png)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnwl72wntQgYMFvRPTWY5fPf.png)
## 位置编码
学过 cv 的大家想必对这个东西耳熟能详了吧~,这里的位置编码是对输入的两个位置和一个方向进行的(体素位置,相机位置和方向),使用的是类似 transformer 的三角函数类编码如下。位置编码存在的意义是放大原本的 5 维输入对网络的影响程度,把原本的 5D 输入变为 90 维向量;并且加入了与其他体素的相对位置信息。
![](https://hdu-cs-wiki.oss-cn-hangzhou.aliyuncs.com/boxcnliAj5mb0Afz0TOMwrwytmh.png)
![](https://pic-hdu-cs-wiki-1307923872.cos.ap-shanghai.myqcloud.com/boxcnliAj5mb0Afz0TOMwrwytmh.png)