Skip to content

Commit

Permalink
Site updated: 2024-09-24 10:29:24
Browse files Browse the repository at this point in the history
  • Loading branch information
PHZ20040126 committed Sep 24, 2024
1 parent 56f1a90 commit fc12323
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 6 deletions.
9 changes: 4 additions & 5 deletions 2024/09/18/Nerf/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://example.com/img/Nerf/%E5%B0%81%E9%9D%A2%E5%9B%BE%E7%89%87.png">
<meta property="article:published_time" content="2024-09-18T15:12:19.142Z">
<meta property="article:modified_time" content="2024-09-24T02:27:07.275Z">
<meta property="article:modified_time" content="2024-09-24T02:29:07.396Z">
<meta property="article:author" content="John Doe">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="http://example.com/img/Nerf/%E5%B0%81%E9%9D%A2%E5%9B%BE%E7%89%87.png">
Expand Down Expand Up @@ -224,7 +224,7 @@
<span class="post-meta mr-2">
<i class="iconfont icon-chart"></i>

3.1k
3k

</span>

Expand Down Expand Up @@ -415,9 +415,8 @@ <h2 id="模型的结构">模型的结构</h2>
最后输出颜色RGB</p>
<h2 id="位置编码">位置编码</h2>
<p>在一般输入中,未进行位置编码时,由于缺乏高频信息的,建模细节会丢失,所以在输入的过程中引入的位置编码</p>
<p><a
href="/img/Nerf/位置编码与视图依赖.jpg">位置编码与视图依赖添加对比图</a>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><code class="hljs python"><span class="hljs-keyword">class</span> <span class="hljs-title class_">Embedder</span>:<br><br> <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, **kwargs</span>):<br><br> <span class="hljs-variable language_">self</span>.kwargs = kwargs<br> <span class="hljs-variable language_">self</span>.create_embedding_fn()<br><br> <span class="hljs-keyword">def</span> <span class="hljs-title function_">create_embedding_fn</span>(<span class="hljs-params">self</span>):<br><br> embed_fns = []<br> d = <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;input_dims&#x27;</span>]<br> out_dim = <span class="hljs-number">0</span><br> <span class="hljs-keyword">if</span> <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;include_input&#x27;</span>]:<br> embed_fns.append(<span class="hljs-keyword">lambda</span> x: x)<br> out_dim += d<br><br> max_freq = <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;max_freq_log2&#x27;</span>]<br> N_freqs = <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;num_freqs&#x27;</span>]<br><br> <span class="hljs-keyword">if</span> <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;log_sampling&#x27;</span>]:<br> freq_bands = <span class="hljs-number">2.</span>**tf.linspace(<span class="hljs-number">0.</span>, max_freq, N_freqs)<br> <span class="hljs-keyword">else</span>:<br> freq_bands = tf.linspace(<span class="hljs-number">2.</span>**<span class="hljs-number">0.</span>, <span class="hljs-number">2.</span>**max_freq, N_freqs)<br><br> <span class="hljs-keyword">for</span> freq <span class="hljs-keyword">in</span> freq_bands:<br> <span class="hljs-keyword">for</span> p_fn <span class="hljs-keyword">in</span> <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;periodic_fns&#x27;</span>]:<br> embed_fns.append(<span class="hljs-keyword">lambda</span> x, p_fn=p_fn,<br> freq=freq: p_fn(x * freq))<br> out_dim += d<br><br> <span class="hljs-variable language_">self</span>.embed_fns = embed_fns<br> <span class="hljs-variable language_">self</span>.out_dim = out_dim<br><br> <span class="hljs-keyword">def</span> <span class="hljs-title function_">embed</span>(<span class="hljs-params">self, inputs</span>):<br> <span class="hljs-keyword">return</span> tf.concat([fn(inputs) <span class="hljs-keyword">for</span> fn <span class="hljs-keyword">in</span> <span class="hljs-variable language_">self</span>.embed_fns], -<span class="hljs-number">1</span>)<br></code></pre></td></tr></table></figure>
<p><img src="/img/Nerf/位置编码与视图依赖.jpg" srcset="/img/loading.gif" lazyload
alt="位置编码与视图依赖添加对比图" /> <figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><code class="hljs python"><span class="hljs-keyword">class</span> <span class="hljs-title class_">Embedder</span>:<br><br> <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, **kwargs</span>):<br><br> <span class="hljs-variable language_">self</span>.kwargs = kwargs<br> <span class="hljs-variable language_">self</span>.create_embedding_fn()<br><br> <span class="hljs-keyword">def</span> <span class="hljs-title function_">create_embedding_fn</span>(<span class="hljs-params">self</span>):<br><br> embed_fns = []<br> d = <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;input_dims&#x27;</span>]<br> out_dim = <span class="hljs-number">0</span><br> <span class="hljs-keyword">if</span> <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;include_input&#x27;</span>]:<br> embed_fns.append(<span class="hljs-keyword">lambda</span> x: x)<br> out_dim += d<br><br> max_freq = <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;max_freq_log2&#x27;</span>]<br> N_freqs = <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;num_freqs&#x27;</span>]<br><br> <span class="hljs-keyword">if</span> <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;log_sampling&#x27;</span>]:<br> freq_bands = <span class="hljs-number">2.</span>**tf.linspace(<span class="hljs-number">0.</span>, max_freq, N_freqs)<br> <span class="hljs-keyword">else</span>:<br> freq_bands = tf.linspace(<span class="hljs-number">2.</span>**<span class="hljs-number">0.</span>, <span class="hljs-number">2.</span>**max_freq, N_freqs)<br><br> <span class="hljs-keyword">for</span> freq <span class="hljs-keyword">in</span> freq_bands:<br> <span class="hljs-keyword">for</span> p_fn <span class="hljs-keyword">in</span> <span class="hljs-variable language_">self</span>.kwargs[<span class="hljs-string">&#x27;periodic_fns&#x27;</span>]:<br> embed_fns.append(<span class="hljs-keyword">lambda</span> x, p_fn=p_fn,<br> freq=freq: p_fn(x * freq))<br> out_dim += d<br><br> <span class="hljs-variable language_">self</span>.embed_fns = embed_fns<br> <span class="hljs-variable language_">self</span>.out_dim = out_dim<br><br> <span class="hljs-keyword">def</span> <span class="hljs-title function_">embed</span>(<span class="hljs-params">self, inputs</span>):<br> <span class="hljs-keyword">return</span> tf.concat([fn(inputs) <span class="hljs-keyword">for</span> fn <span class="hljs-keyword">in</span> <span class="hljs-variable language_">self</span>.embed_fns], -<span class="hljs-number">1</span>)<br></code></pre></td></tr></table></figure>
在这个过程中,对于模型的输入实现了位置编码,通过应用多个周期性函数和频率变换,扩展了输入数据的特征维度,
以保证模型获取更高维的信息。</p>
<ul>
Expand Down
Loading

0 comments on commit fc12323

Please sign in to comment.