论文学习 BioNeRF: Biologically Plausible Neural Radiance Fields for View Synthesis

论文学习 BioNeRF: Biologically Plausible Neural Radiance Fields for View Synthesis

前言

虽然我不应该再看NeRF相关的东西了,但是我还是觉得这个论文的题目很有意思,毕竟我认为神经网络本来就是模拟生物大脑的一个模型,那么我们应该更多的注意一些生物的机制,这些机制如果能得以很好的建模,或许能为神经网络结构下一步的开发提供思路。

简介

不同于NeRF依赖神经网络的权重来存储三维信息,BioNeRF利用感知启发的方式来融合多种输入,来改进模型中的记忆模块。并且该模型模拟了视锥细胞的功能,使其专注于纹理信息的提取。因此在这个意义上,记忆模块实际上是对形状信息和纹理信息进行组合。

论文链接
GitHub

(ps.感觉有种水论文讲故事的感觉)

NeRF介绍


( R , G , B , Δ ) = F θ ( x , y , z , θ , ϕ ) c ( x , y , z , θ , ϕ ) = ∫ ( R , G , B ) i Δ i d i (R,G,B, \Delta)=F_\theta(x,y,z,\theta,\phi) \\ c(x,y,z,\theta,\phi )=\int(R,G,B)_i\Delta_idi (R,G,B,Δ)=Fθ(x,y,z,θ,ϕ)c(x,y,z,θ,ϕ)=∫(R,G,B)iΔidi

NeRF本质上是利用一个MLP,来对一个五元组输入,输出一个四位输出,包含当前点的RGB三色,以及其密度 Δ \Delta Δ。因此可以认为,物体的三维信息实际上保存在模型参数中。这也极大的节省了内存,是一种高效利用内存的技术。

NeRF其中一个关键概念是,它将复杂的真实世界的三维表示编码为神经网络的参数。此外,该模型将体积密度预测限制为相机位置的函数,从而允许RGB颜色预测为位置和观看方向的函数。这些概念类似于受神经科学发现和锥体细胞原理启发的一些生物学上更合理的研究,特别是关于引导信息流的环境和整合记忆的想法,负责根据过去的经验提供额外的环境。

BioNeRF

位置编码提取

第一步,将图像输入同时输入两个独立的神经网络 M Δ , M c M_\Delta, M_c MΔ,Mc,两者的结构虽然相同,但是并不共享参数。

感知过滤

ps . 我们称这些为过滤的主要原始是,他会将输入特征映射到[0,1]区间。

这一阶段主要是针对上一阶段得到的特征编码进行进一步计算,有四种过滤方式:密度 f Δ f_\Delta fΔ、颜色 f c f_c fc、记忆 f Ψ f_\Psi fΨ、调整(调制) f μ f_\mu fμ。
f Δ = σ ( h Δ ) f c = σ ( h c ) f Ψ = σ ( W Ψ [ h Δ , h c ] + b Ψ ) f μ = σ ( W μ [ h Δ , h c ] + b μ ) f_\Delta = \sigma(h_\Delta) \\ f_c = \sigma(h_c) \\ f_\Psi = \sigma(W_\Psi[h_\Delta,h_c]+b_\Psi) \\ f_\mu = \sigma(W_\mu[h_\Delta,h_c]+b_\mu) fΔ=σ(hΔ)fc=σ(hc)fΨ=σ(WΨ[hΔ,hc]+bΨ)fμ=σ(Wμ[hΔ,hc]+bμ)

其中 σ \sigma σ是sigmoid函数。

预调制 γ \gamma γ满足:
γ = t a n h ( W γ [ h Δ , h c ] + b γ ) \gamma = tanh(W_\gamma[h_\Delta,h_c]+b_\gamma) γ=tanh(Wγ[hΔ,hc]+bγ)

记忆更新

首先需要先进行一步计算如下。·
μ = f μ ⊗ γ \mu = f_\mu \otimes \gamma μ=fμ⊗γ

作为新的信息,之后用下式更新记忆内容:
Ψ = t a n h ( W Ψ ( μ + ( f Ψ ⊗ Ψ ) ) + b Ψ ) \Psi=tanh(W_\Psi(\mu+(f_\Psi\otimes\Psi)) + b_\Psi) Ψ=tanh(WΨ(μ+(fΨ⊗Ψ))+bΨ)

纹理推断

利用前文更新的记忆以及得到的结果,还有相机位姿,concat得到新的特征 h Δ ′ , h c ′ h'\Delta,h'c hΔ′,hc′:
h Δ ′ = [ Ψ ⊗ f Δ , I ] h c ′ = [ Ψ ⊗ f c , d ] I = ( x , y , z ) d = ( θ , ϕ ) h'
\Delta=[\Psi\otimes f
\Delta,I]\\ h'_c=[\Psi \otimes f_c, d]\\ I=(x,y,z)\\d=(\theta,\phi) hΔ′=[Ψ⊗fΔ,I]hc′=[Ψ⊗fc,d]I=(x,y,z)d=(θ,ϕ)

再利用两个独立的神经网络作为解码器,得到 c , Δ c, \Delta c,Δ

损失函数

就是纯粹的损失函数。

量化验证

总结

感觉还是有点失望吧,这篇文章虽然说,是模仿生物视觉成像,不过依然存在以下问题:

  1. 生物中的记忆力表示,能否仅仅表示为一个张量呢?这种记忆力,是否可能也是作为一个神经网络,以参数的形式进行表示呢?
  2. 对比CodeNeRF,PixelNeRF等单视点成像的NeRF研究而言,改模型甚至难以单视点成像,是否说明其本身对于三维形状的提取还不如前两篇文章呢?
  3. 实际上不难发现,这篇文章提到的神经网络实际上参数量很大,性能的提升,是否可能主要受到参数量的影响呢?
  4. 这种记忆力机制,能否由一个Triplane来表示呢?感觉应该能起到相同的效果,甚至说,如果你认为Triplane不行,我们可以造两个Triplane,分别表示色彩和形状?如此说来这不是更复合生物特征?
  5. 文中提到的记忆力更新,感觉可以类比为一种kqv的注意力机制不是吗?感觉有编故事的嫌疑。

优点:

1.提到了记忆机制,这或许为解释Triplane在NeRF中非常有效的原因,因为Triplane实际上提供了一种记忆机制。

2.结果好。

相关推荐
虾球xz4 分钟前
游戏引擎学习第293天:移动Familiars
c++·学习·游戏引擎
lichuangcsdn12 分钟前
【springcloud学习(dalston.sr1)】Eureka服务端集群的搭建(含源代码)(二)
学习·spring cloud·eureka
名誉寒冰18 分钟前
RPC框架源码分析学习(二)
qt·学习·rpc
m0_738206543 小时前
嵌入式学习的第二十二天-数据结构-栈+队列
数据结构·学习
向上的车轮9 小时前
MATLAB学习笔记(七):MATLAB建模城市的雨季防洪排污的问题
笔记·学习·matlab
前端小崔9 小时前
从零开始学习three.js(18):一文详解three.js中的着色器Shader
前端·javascript·学习·3d·webgl·数据可视化·着色器
龙湾开发10 小时前
计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 10.增强表面细节(二)法线贴图
c++·笔记·学习·图形渲染·贴图
liang_202611 小时前
【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)
数据结构·笔记·学习·算法·平面·总结
虾球xz11 小时前
游戏引擎学习第290天:完成分离渲染
c++·人工智能·学习·游戏引擎
虾球xz11 小时前
游戏引擎学习第285天:“Traversables 的事务性占用”
c++·学习·游戏引擎