35、T5L 迪文屏C51开发之音频播放

人工智能41

T5L 迪文屏C51开发之音频播放

1、介绍

在T5L芯片中集成了一个音频管理模块,利用此音频模块我们可以实现播放开机音乐,按钮点击音效等功能,不过我们要想看到正确的效果,硬件上和软件上都得做相应的小修改,然后音频控制方式这里也可以分为如下俩种:
1)通过DGUS Tool软件来设置【触控控件】的"语音ID"属性,这种控制方式简单,不需要写任何C51代码
35、T5L 迪文屏C51开发之音频播放

2)通过C51代码来动态播放音频,这种方式灵活度高,自定制能力强
在实际的应用项目当中,对于上面的俩种控制方式,我们一般都会结合交叉使用。因为每一种控制方式都有其优点。

接下来,我们来看一下如何进行硬件和软件上的修改,才能得到正确的播放效果。
A、硬件修改,因为我们的屏上默认是接了一个蜂鸣器来作为提示音的,如果我们想要用音频来作为提示音的话,那么我们得用喇叭来替换掉蜂鸣器,比如用一个8Ω 0.5w的小喇叭,如下图所示:

Original: https://blog.csdn.net/u011350258/article/details/109993131
Author: Geek YANG
Title: 35、T5L 迪文屏C51开发之音频播放



相关阅读1

Title: NeRF入门知识汇总

NeRF 在2020年ECCV上名声大噪,作为best paper展示(https://www.matthewtancik.com/nerf)
作者在网上收罗了NeRF的相关评说,汇总如下,内容可能杂乱,可作为对NeRF初步认识的资料。

文章目录

参考链接1:https://zhuanlan.zhihu.com/p/380015071

Vanilla NeRF

什么是NeRF?

  • NeRF所要做的 task 是 Novel View Synthesis,一般翻译为新视角合成任务
  • 在已知视角下对场景进行一系列的捕获 (包括拍摄到的图像,以及每张图像对应的内外参),合成新视角下的图像
  • NeRF 不需要中间三维重建的过程,仅根据位姿内参和图像,直接合成新视角下的图像。
  • NeRF 引入了辐射场的概念,这在图形学中是非常重要的概念。

渲染方程式的定义:
35、T5L 迪文屏C51开发之音频播放

  • 方程表示了空间点x ∈ R 3 x \in R^3 x ∈R 3在方向d ∈ R 3 d \in R^3 d ∈R 3 上的辐射L o L_o L o ​.

  • 等式右边第一项 表示 x 为光源点时,自身在d方向释放的辐射。

  • 等式右边第二项 表示该店折射在方向d 上的辐射,其中Ω \Omega Ω 为入射方向ω i \omega_i ωi ​的半球集合。
  • f r ( ⋅ ) f_r(\cdot)f r ​(⋅)为散射函数,L i L_i L i ​为从ω i \omega_i ωi ​方向接受到的辐射, $$

辐射和颜色的关系

  • 光就是电磁辐射, 或振荡的电磁场
  • 光又有波长和频率,二者乘积为光速
  • 光的颜色是由频率决定的
  • 大多数光是不可见的,人眼可见的光谱称为可见光谱,对应的频率就是我们认为的颜色
    35、T5L 迪文屏C51开发之音频播放

NeRF表示3D场为可学习的,连续的辐射场 F θ F_{\theta}F θ​
35、T5L 迪文屏C51开发之音频播放

35、T5L 迪文屏C51开发之音频播放

35、T5L 迪文屏C51开发之音频播放

; Positional Encoding

  • deep networks 更倾向于学习低频的函数,实际场景的神经辐射场基本上都是高频的
  • 作者提出了 Positional Encoding (注意这里的 Positional Encoding 和 Transformer 中的 Positional Encoding 很像,但是解决问题是不一样的
    35、T5L 迪文屏C51开发之音频播放
    35、T5L 迪文屏C51开发之音频播放
    35、T5L 迪文屏C51开发之音频播放

Hierarchical volume sampling

使用体渲染积分遇到的问题:

  • 虽然可以离散的近似计算积分,采样点过多开销过大,采样点过少近似误差有太大。

解决办法: 最好尽可能的避免在空缺部分以及被遮挡了的部分进行过多的采样,因为这些部分对最好的颜色贡献是很少的

NeRF 提出分层采样训练的方式,如下图所示:
35、T5L 迪文屏C51开发之音频播放

  • 使用两个网络同时进行训练 (后称 coarse 和 fine 网络)
  • coarse 网络输入的点是通过对光线均匀采样得到的
  • 根据 coarse 网络预测的体密度值,对光线的分布进行估计,然后根据估计出的分布进行第二次重要性采样
  • 然后再把所有的采样点 [公式] 一起输入到 fine 网络进行预测。

NeRF 存在的问题

  • 实时性不好
  • 泛化性不强
  • 不能处理动态场景
  • 拍摄方式有限制

; 参考链接2: https://zhuanlan.zhihu.com/p/466217848

NeRF原理

NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

NeRF主要功能: 使用静态场景下的多个视角的照片(大约几十至上百张),合成出任意新视角的图片。
NeRF的算法思路:

  • Step1 :
  • 使用MLP学习该场景的隐式3D模型表达
    35、T5L 迪文屏C51开发之音频播放
  • MLP模型示意图。输入一个3d点x和观测方向d的高频编码向量,网络预测该点的密度sigma和颜色c35、T5L 迪文屏C51开发之音频播放
  • Step 2:使用体渲染方程将3D场景渲染成图片
  • 图形上的点 P(u,v,1) , 他的像素值 rgb 可以通过对该点P发出的射线上的所有的点 的 c 和体密度 进行积分得到。
  • 35、T5L 迪文屏C51开发之音频播放
    -35、T5L 迪文屏C51开发之音频播放
  • Step 3:训练
  • 训练集是几十张或者几百张该场景不同相机位姿拍摄的图片
  • 首先使用SFM算法求出所有图片的相机相对世界坐标系的位姿 (R,t)
  • 每张图片的每个像素点都是一个训练样本 (u,v) → rgb
  • 以像素点(u,v)为例:
    • 从该点发出的射线在世界坐标系中的表示为
      35、T5L 迪文屏C51开发之音频播放
    • 起始点 [公式] 的世界坐标也同样可以有相机的内外参求得
    • 然后在该射线上采样n个采样点。
    • 使用MLP预测这n个点的体密度,和c ,然后使用体渲染方程的离散公式算出该像素点的预测值 rgb。
    • 然后计算预测的颜色值和真实颜色值的L2距离作为loss进行监督训练。
      35、T5L 迪文屏C51开发之音频播放
  • Step 4: 观测方向d的作用:
  • 一个点的密度密度智能是该点位置x的函数。
  • 但该点的颜色还取决于观测方向(我们观看空间中一个物体的某个点,从光源照射方向观看和从阴影方向观看,它的亮度是不一样的。)
  • Step 5:Positional encoding
  • 直接让MLP学习映射很难,将x,d 编码危机高维向量后学习会更加容易。
  • 因此使用如下高频函数进行编码。
    35、T5L 迪文屏C51开发之音频播放
  • step 6:多层级采样策略
  • 均匀采样方式采样射线上64个点
  • 这64点的密度值估计出密度分布函数。
  • 再使用逆采样算法集中对高密度的区域采样128点。
  • 使用该策略可以提高采样的效率,不需要对射线上所有区域都进行密集的采样。

; NeRF加速

FastNeRF: High-Fidelity Neural Rendering at 200FPS (等这篇文章看了之后,在看解读。 )

相关资料:https://microsoft.github.io/FastNeRF/
https://ieeexplore-ieee-org-s.nudtproxy.yitlink.com/document/9710021

Instant Neural Graphics Primitives with a Multiresolution Hash Encoding

相关资料: https://nvlabs.github.io/instant-ngp/
https://nvlabs.github.io/instant-ngp/assets/mueller2022instant.pdf

NeRF动态场景(人体)的拓展

HumanNeRF: Free-viewpoint Rendering of Moving People from Monocular Video

相关资料:https://www.semanticscholar.org/paper/HumanNeRF%3A-Free-viewpoint-Rendering-of-Moving-from-Weng-Curless/bd706601b75533a66a782f6229419f85b1cc5135

参考链接3: https://www.analyticsvidhya.com/blog/2021/04/introduction-to-neural-radiance-field-or-nerf/

神经辐射场(Neural Radiance Field, NeRF)是一种生成复杂场景新视图的方法。NeRF获取一组场景的输入图像,并通过在场景之间插入来渲染完整的场景。

  • NeRF 的输出是一个体积,其颜色和密度取决于视图的方向和在该点发射的光亮度。
  • 对于每条光线,我们都得到一个输出体积,所有这些体积构成了复杂的场景。
  • 静态场景被表示为如上定义的连续5D函数。
  • 该方法使用一个全连接的神经网络-多层感知器(MLP)来表示该函数,从单个5D坐标(x, y, z, θ, φ)向后移动,输出一个体积密度(RGB颜色受视图影响)。

要渲染这个NeRF,有3个步骤:

  • 相机光线通过场景来采样3D点
  • 利用step1中的点及其对应的2D观察方向(θ, φ)作为输入到MLP,得到颜色(c = (r, g, b))和密度σ的输出集,
  • 使用体绘制技术将这些颜色和密度累积到一个2D图像中[注:体绘制是指从采样的3D点创建一个2D投影]

; 参考链接4: https://www.bilibili.com/video/av500646685/

35、T5L 迪文屏C51开发之音频播放

35、T5L 迪文屏C51开发之音频播放
35、T5L 迪文屏C51开发之音频播放

35、T5L 迪文屏C51开发之音频播放

35、T5L 迪文屏C51开发之音频播放

35、T5L 迪文屏C51开发之音频播放
35、T5L 迪文屏C51开发之音频播放
35、T5L 迪文屏C51开发之音频播放

参考链接5 :https://www.bilibili.com/video/BV1by4y1v7Sz/

Original: https://blog.csdn.net/NGUever15/article/details/123240192
Author: _Summer tree
Title: NeRF入门知识汇总

相关阅读2

Title: [论文阅读]DARTS

DARTS

来源

ICLR2019。作者单位CMU(Google brain),DeepMind。

解决的问题

主要解决的是NAS(神经网络架构搜索)的可扩展性的问题。其实主要解决的就是神经网络搜索计算量要求大、效果并不一定很好的问题。

论文发表时的主流解法及存在的问题

主流解决方案的主要问题是计算能力很高,可扩展性不强。

[En]

The main problem of the mainstream solution is that the computing power is very high and the expansibility is not strong.

主要有强化学习方法、进化算法等。

[En]

There are mainly reinforcement learning methods, evolutionary algorithms and so on.

一些操作包括:设置特殊的搜索空间,每个独立架构的权重或性能估计,以及多个结构之间的权重分担/继承。

[En]

Some operations include: setting a special search space, weight or performance estimation for each independent architecture, and weight sharing / inheritance among multiple structures.

方法

综上所述,将离散空间中的搜索问题在松弛后转化为连续问题,并采用梯度下降法进行处理。这种变得连续的方法并不是第一种,但以前的变得连续的方法基本上是微调模型的特定方面,这种方法是调整整个模型的架构。以下是搜索过程的详细说明。

[En]

To sum up, the search problem in discrete space is transformed into a continuous problem after relaxation, and the gradient descent method is used to deal with it. This method of becoming continuous is not the first, but the previous way of becoming continuous is basically fine-tuning a particular aspect of the model, and this method is to adjust the architecture of an entire model. The following is a detailed description of the search process.

搜索空间

搜索的目标是结构中的一个cell,对CNN来说需要堆叠这个cell形成最后的网络,对RNN来说则是递归使用这个cell。

在搜索过程中,一个cell可以表示成一个有向无环图。假设每个cell含有N个节点,其中每个节点(x^{(i)})表示一个隐含表示,每一条从i节点到j结点的边(o^{(i,j)})表示一种操作(例如卷积等),每个节点值由之前节点与连接决定。举例:

35、T5L 迪文屏C51开发之音频播放

上图中a表示确定一个cell中含有四个节点,需要进行连接,第二张图列出了所有可能的连接方式,第三张图中进行梯度下降之后选出了最有可能的d输出。

松弛与优化

O是待选的操作集合(例如卷积,最大池化,zero操作),每个操作都可以看成是对结点的一个函数。则两个节点之间的选择可以松弛如下:

[o^{(i,j)}(x)=\sum_{o \in O}\frac{exp(\alpha_o^{(i,j)})}{\sum_{o' \in O }exp(\alpha_{o'}^{(i,j)})}o(x) ]

其中需要学习的就是(\alpha)向量。由于最后使用这个向量来选择操作,所以下述就将这个向量称为结构。

在优化过程中一共有两个需要优化的:结构(\alpha)和每个结构对应的内部参数权重w。这就导致了一个二层优化问题如下图所示:

35、T5L 迪文屏C51开发之音频播放

近似结构梯度

本部分详细数学推导都可以见博客:【论文笔记】DARTS公式推导 - 知乎 (zhihu.com)

由于上述两层优化难度较大,故将实际流程简化如下:

[En]

Because the above two-layer optimization is difficult, the actual process is simplified as follows:

[\nabla_{\alpha}L_{val}(w^*(\alpha),\alpha)\approx \\nabla_{\alpha}L_{val}(w-\epsilon \nabla {w}L{train}(w,\alpha),\alpha) ]

如果你整理出上面的公式,你可以得到以下公式:

[En]

If you sort out the above formula, you can get the following formula:

[\begin{aligned} & \nabla_{\alpha} \mathcal{L}{v a l}\left(\omega-\xi \nabla{\omega} \mathcal{L}{t r a i n}(\omega, \alpha), \alpha\right) \ =&\nabla{\alpha} \mathcal{L}{v a l}\left(\omega^{\prime}, \alpha\right)-\xi \nabla{\alpha, \omega}^{2} \mathcal{L}{t r a i n}(\omega, \alpha) \cdot \nabla{\omega^{\prime}} \mathcal{L}_{v a l}\left(\omega^{\prime}, \alpha\right) \end{aligned} ]

在进行另一次有限差分之后,可以得到以下估计。

[En]

After making another finite difference, the following estimates can be obtained.

35、T5L 迪文屏C51开发之音频播放

简单地说,我们做了一阶泰勒展开。

[En]

To put it simply, we did a first-order Taylor expansion.

作者提出可以直接丢弃二阶导数,但实验结果表明,估计效果不如不丢弃。

[En]

The author proposes that the second derivative can be thrown away directly, but the experimental results show that the estimation effect is not as good as that of not throwing away.

生成最优模型

假设通过之前说的这些流程,架构参数已经训练的挺不错了。那么,接下来就要提取真正的模型了,因为直至目前,架构依然是计算了所有的操作,而所有操作依然是连续组合而不是离散的。 但是,和分类问题一样,我们可以取出每条边上权重最大的 (k) 个操作(在CNN中DARTS取 2个最大的操作,并 忽略0操作)。

优点&创新点

优点

  • 在图像和自然语言处理任务中表现更佳
    [En]

    better performance in image and natural language processing tasks*

  • 计算资源需求大幅减少(3个数量级)
    [En]

    significant reduction in demand for computing resources (3 orders of magnitude)*

  • 学习的模式具有一定的转移能力。
    [En]

    the learned model has a certain ability to transfer.*

创新点

离散问题是连续的,用梯度下降法处理问题。

[En]

Discrete problems are continuous and gradient descent is used to deal with the problem.

实验数据

CV数据集:CIFAR-10,ImageNet

NLP数据集:PTB,WikiText-2

对比实验结果与分析

35、T5L 迪文屏C51开发之音频播放

CIFAR-10:

35、T5L 迪文屏C51开发之音频播放

PTB:

35、T5L 迪文屏C51开发之音频播放

迁移到ImageNet:

35、T5L 迪文屏C51开发之音频播放

简单地说,时间大大减少,但性能略有提高。

[En]

To put it simply, the time is greatly reduced, but the performance is slightly improved.

个人感受

DARTS虽然并不完美(也没有哪个模型是真的完美的),但是它提出的这种方法确实很优秀。个人感觉可以修改的点就是其中的一些假设:

  • 在小数据集上训练的模型可以迁移到大型数据集
    [En]

    models trained on small datasets can be migrated to large datasets*

  • zero操作没有影响
  • 在验证集上工作得最好的模型在测试集上也工作得最好
    [En]

    the model that works best on the validation set also works best on the test set*

  • 每个cell的输出都是中间节点的输出经过操作之后得到。

Original: https://www.cnblogs.com/Zhengsh123/p/16120291.html
Author: zsh1234
Title: [论文阅读]DARTS

相关阅读3

Title: CrossAttention KBQA

《An End-to-End Model for Question Answering over Knowledge Base with Cross-Attention Combining Global Knowledge》论文笔记

这篇文章于2017年发表在ACL上,个人认为是在MCCNNs这个模型的基础上所作的增量式的工作,两者结构非常相似。

Overview

本文的任务依然是给定一个问题,模型根据知识库生成一组答案。这篇文章也是属于IR-based的范畴,根据主题词从知识库中提取出topic graph,然后根据问题和答案各自的特征进行相似度匹配来得到最终的答案。

35、T5L 迪文屏C51开发之音频播放

本文提出的模型叫做Cross-Attention,也就是将attention机制引入到问题-答案的匹配中。并且,本文还将全局的KB信息考虑进来,这个做法也对模型的效果起到了提升作用。总之,本文的contributions有如下两点:

  1. 提出了一个端到端的模型Cross-Attention,采用神经网络对问题和答案进行特征提取
  2. 充分利用全局的KB信息,以更精确地生成答案。同时,这也能缓解OOV(out of vocabulary)问题。

; Method

Candidate Generation

对于候选答案的生成,本文采取的做法与MCCNNs一致,使用Freebase Search API,对于top1结果生成一张2-hop的候选答案图。候选答案实体集合记为C q C^{q}C q

Neural Cross-Attention Model

接下来就是模型的主体部分。特征的提取依然是分为问题、答案两个部分,然后通过attention机制来计算相似度得分。

35、T5L 迪文屏C51开发之音频播放

; Question Representation

首先来看问题的编码。对于问题q = ( x 1 , x 2 , ... , x n ) q\ =\ (x_1,x_2,\dots,x_n)q =(x 1 ​,x 2 ​,...,x n ​),作者首先用一个可训练的embedding层E w ∈ R d × V E_{w} \in R^{d \times V}E w ​∈R d ×V来获取word embedding。接下来,与MCCNNs不同的是,作者采用了双向LSTM对问题进行特征提取,那么对于每一时刻t t t的问题token,我们能得到h t → \overrightarrow{h_{t}}h t ​​和h t ← \overleftarrow{h_{t}}h t ​​,concatenate起来作为最终表示[ h t → ; h t ← ] [\overrightarrow{h_{t}};\overleftarrow{h_{t}}][h t ​​;h t ​​]。

Answer Representation

对于答案的特征学习,本文依然是考虑几个方面:答案entity a e a_{e}a e ​,答案relation a r a_{r}a r ​,答案type a t a_{t}a t ​,答案context a c a_{c}a c ​。接下来,作者没有人工构建这些特征,而是针对每一个aspect分别用一个可训练的参数矩阵来学习特征,得到的embedding分别记为e e , e r , e t , e c e_{e},e_{r},e_{t},e_{c}e e ​,e r ​,e t ​,e c ​。但是有一个细节,context是有多个KB resources所共同组成的( e c 1 , e c 2 , ... , e c m ) (e_{c_1},e_{c_2},\dots,e_{c_m})(e c 1 ​​,e c 2 ​​,...,e c m ​​),因此作者对所有resources取了个平均得到e e = 1 m ∑ j = 1 m e c j e_{e}\ =\ \frac{1}{m} \sum_{j=1}^{m}e_{c_{j}}e e ​=m 1 ​∑j =1 m ​e c j ​​

Cross-Attention Model

得到问题和答案的特征以后,接下来就是cross-attention的部分。从cross这个词也能看得出来本文的attention计算是双向的,分为A2Q和Q2A两个反向。

Answer-to-Query Attention

对于答案的不同aspect,它应该对应问题中不同的单词。A2Q attention的计算公式如下:
w i j = f ( W [ h j ; e i ] + b ) α i j = e w i j ∑ j ′ e w i j ′ w_{ij}\ =\ f(W[h_{j};e_{i}]+b) \ \alpha_{ij}\ =\ \frac{e^{w_{ij}}}{\sum_{j'}e^{w_{ij'}}}w i j ​=f (W [h j ​;e i ​]+b )αi j ​=∑j ′​e w i j ′​e w i j ​​
然后用attention weight来计算query的加权和
q i = ∑ j = 1 n α i j h j q_{i}\ =\ \sum_{j=1}^{n}\alpha_{ij}h_j q i ​=j =1 ∑n ​αi j ​h j ​
然后作者定义第i i i个answer aspect与问题之间的相似度得分:
S ( q , e i ) = h ( q i , e i ) = q i T e i S(q,e_i)\ =\ h(q_i,e_i)\ =\ q^T_ie_{i}S (q ,e i ​)=h (q i ​,e i ​)=q i T ​e i ​

Query-to_Answer Attention

对于不同的问题,它们也应该侧重于不同的answer aspect,Q2A的计算用到了上面所计算的相似度的得分。
q ˉ = 1 n ∑ j = 1 n h j w e i = f ( W [ q ˉ ; e i ] + b ) β e i = e w e i ∑ j e w e j \bar{q}\ =\ \frac{1}{n}\sum_{j=1}^{n}h_{j}\ w_{e_{i}}\ =\ f(W[\bar{q};e_{i}]+b)\ \beta_{e_{i}}\ =\ \frac{e^{w_{e_{i}}}}{\sum_{j}e^{w_{e_{j}}}}\q ˉ​=n 1 ​j =1 ∑n ​h j ​w e i ​​=f (W [q ˉ​;e i ​]+b )βe i ​​=∑j ​e w e j ​​e w e i ​​​
然后用attention weight来计算每个问题与不同answer aspect相似度得分的加权和:
S ( q , a ) = ∑ e i ∈ { e e , e r , e t , e c } β e i S ( q , e i ) S(q,a)\ =\ \sum_{e_i \in {e_{e},e_{r}, e_{t}, e_{c}}} \beta_{e_{i}}S(q,e_i)S (q ,a )=e i ​∈{e e ​,e r ​,e t ​,e c ​}∑​βe i ​​S (q ,e i ​)
那么最终得到的这个S ( q , a ) S(q,a)S (q ,a )就是本文所提出的模型得到的最终的问题-答案之间的相似得分。可以看到这里的cross-attention并不是两个方向互相独立,而是递进的关系,先通过A2Q计算出问题与每个answer aspect之间的相似度,然后再用Q2A计算总的问题-答案相似度。

Training & Inference

本文所采取的训练方式与MCCNNs完全相同,先负采样,然后用Hinge Loss作为损失函数。inference的过程也和MCCNNs相同。

Combining Global Knowledge

接下来是本文的另一个创新点:补充全局知识。具体的做法是使用TransE模型来做Multi-task training,KB-QA和TransE的训练交替进行。由于Freebase实在太大,肯定不能把所有知识都考虑进来,因此作者先忽略掉所有完全不相关的信息,然后提取出问题中的所有实体,对每个实体在知识库中提取2-hop的信息来进行训练。训练的方式仍然是negative sampling + Hinge loss。

Experiment

在WebQuestions上的实验结果如下:

35、T5L 迪文屏C51开发之音频播放

消融实验:

35、T5L 迪文屏C51开发之音频播放

实验数据表明A2Q 的attention和Global Knowledge对模型效果的提升相对比较明显。

Analysis

35、T5L 迪文屏C51开发之音频播放

作者也把attention进行了可视化,我觉得这个例子非常好,两个方向的attention都很好的捕捉到了正确的信息。比如where对应的是answer type, Carpathian对应answer entity, Carpathian mountain range是answer context的主体部分。

Original: https://blog.csdn.net/qq_42791848/article/details/122630149
Author: lzk_nus
Title: CrossAttention KBQA