Jingqiao-ucsc's picture
Upload WiSER private archive chunk: code_snapshots
13a1c10 verified
|
Raw
History Blame Contribute Delete
9.2 kB

我们这里设计一个DETR风格的3D的稀疏Transformer+3D下采样,融合的一个预测CSI的网络

就是说我们把每一个给定的场景下的一个TX和一个RX pair它的路径数。把它看成不定的,对吧,它本身就是不定,然后它每个路径数就是通过这样的query方式把它猜出来,这不就是一种DTR的风格嘛,只不过,我们这里要用到我们的场景是提速输入,然后我们TX和RX是坐标,我觉得它可以作为一种调制方式,作为输入进去,然后我们来学习和编码。至于其他的部分,可能你们自行参考和修改,选择一个合适的方式。大概至于这个数据的范围呀,约束呀,还有一些激活呀,这些小细节,我可能就需要你们自己来,嗯,还有网络结构啊,都要都都你们自己来决定

原先的这个版本,它就是说我觉得它其实还是有一些问题的,而且它已经积重难返了,那就开一个新的分支对吧 /data/jing_code/wl/radiomapvggt/v20_voxel_radiomap_cir/ablationstudy/A06_7_merged_tap_set_prediction

新分支我们放在这里 /data/jing_code/wl/radiomapvggt/v20_voxel_radiomap_cir/ablationstudy/A06_9_detr_style_voxel_sparse_3d_transformer_net

这里要设计指标

比如预测给定了一个TX,一个RX,还有它的场景,他们之间可能没有路径,也可能有3~4条不同路径四条不同的路径,它有它的时间的延时和它的一个信号的一个衰减,相当于是一个CIR 但是这些不同路径之间,他们的信号衰减可能是按DB来算的,可能iOS的路径它是-20多DB,那一次反射路径可能就直接降到了-50 DB. 所以说我们预测还有做这个处理,还是做损失,还是做一些其他的计算,最好都是在DB领域来做。因为如果你进行转换成线性领域的话,他可能就直接学习不了任何东西了

设计三个指标,首先对于每一条路径,我们看看预测的准不准,依次匹配。它的定义,比如一次性,我们最多预测8条路径,就相当于有8个slot,根据D,e, TR的风格,对吧?然后我们暂时规定:从第一个slot到第8个slot,它的延时上就是第一个slot预测延时到达最到达最快的那个,相当于我们按延时分布。第二个lo就是第二条到达路径。第三个就是第3条到达路径路径 然后我们计算这个是这个预测上的时间延时的损失,它就是一个时间延时的一个散度对吧, 我们还要预测每一个到达路径,它有一个线代表这条路径的信道衰减,预测的损失代表直接按DB来算,相当于代表了一个散度。我们这里自己定义一个可能物理意义上没那么好的散度。比如第一条路径真实值是-25 DB,预测是-20 DB,相当于有5 DB的差距。第二条路径是-50 DB,预测是-55 DB,相当于又是一个5 DB的差距,然后我们要算它的这样的一个,每次损失的它的一个均值和一个方差,相当于作为我们一个评判的指标

我现在是这么想的,我们这个CSI header它可能扩展成一个新的架构吧,就可能就是说,我们直接重新设计整个网络的结构。我现在是这么想的 嗯,主线任务1就是说我们的backbone部分,就是说我们是voxel的输入对吧 人的网络结构,还有它使用的一些基于稀疏的提速的处理,都来源于这个模型的借鉴,对吧 /data/TRELLIS.2 嗯,原始的A06-7,它还是前期的一些操作是可以保留下来的,就比如说他会对输入voxel做多层attention相互关注。 然后我们可以新增两个部分 第一个部分就是3D下采样,你可能有多种设计方案,你可以挑一个比较好的设计方案给我,然后参数量也不要太小,否则的话,他可能学不了什么东西 但是这里后面的话,我们可以,嗯,把它进行压缩,我觉得就是说我们把它进行3D的当sample,然后然后再做稀疏的3D的attention,然后再当sample,把它压缩成类似于16×16×16这样的一个grid,这里的借鉴就是借鉴于TRELLIS.2一种3D的Vae思想,对吧,然后 然后第二个部分 嗯,这里我只有一个大概的思路,所以我具体设计还要你们来搞里的话,可能它的block和层数可能不能太少,太少的话,可能他也学不到什么东西 就是多层的attention网络,加上我们的TX和RX的注入,所以我们把TX和RX token看成是一种条件的信息,是一种约束的条件信息,它是注入进来的。而我们的query token就是说我们预测给定的TX和RX token的它八条路径,这就是我们的query token 这里相当于说,OK, 我暂时没想好怎么注入比较好,但是我觉得它不应该是作为单独的token输入进来。我觉得它是可以作为注入的手段,让他理解OK,我们的TX是这样,RX这样注入到我们这样的一个attention网络里,就像那些,DiffuSiOn model或者是flow matching model, 他们是把这些条件信息注入进去的 TX token和RX token, 它可能会作为一种调制手段注入到我们的这些体素里,这里的话可以参考一下我们的这个TRELLIS.2

然后后面一个部分就是query,就是说我们固定好8个路径,最多8个路径来做query Query, 如何和我们最后的得到的attention再做融合?这个网络可能还要再设计一下,确保它的GPU利用率、显存占用率都得到合理的使用 可能也要用多层的attention m LP, 还有一些其他的东西.

嗯,主线任务2就是说我们要基于DETR的思想设计一个更好的输出头部分 这个首先它的输出头部分是DETR的思想,但我目前想法很朴素,可能后面你需要自己把它变得更加的完善和具体。相当于我们可能就是说我们固定了18个预测路径的slot,然后它相当于有8个query在这里,每个query它要输出它自己的一个它存不存在,然后它的时间延时和它预测的这样的路径的一个信号衰减。这是一个大概的思路,具体设计可能还要再参考很多别的设计和思路,最后最后让它的使用率和显存使用率能够有效的提高

主线主线任务3就是我们的损失函数,还有我们的这样的一个优化器,还有我们的学习力。这些东西可能还要重新设计一下,他们可能需要有效的能够训练他们: 然后每一个预测好的路径,他们之间也可以做处理。就比如说,我们预测了总共就3个路径,然后每个路径我们还要之间,就比如说,比如说它有三个路径,那第一条和第二条路径之间的延时和它们之间的功率项差距,也是可以拿来做损失和训练的。 第二条和第三条路径之间的延时,和他们的损失差距也是可以拿来做训练的。

然后,我们的网络可以先在一个场景上看看能不能学会,然后在10个场景看看看能不能学会。然后30个场景、50个场景、100个场景分别试一试,他的训练轮数可能要高一点,嗯,主要是第一TR他可能训练起来没那么容易,我觉得所以说。然后它的一个sample 可能已经变成了给定一个TX,给定一个RX,给定一个场景这样的一个sample了 这个sample相较于我们原先的sample,是一个TX加上一个Z轴平面的RX,相当于是一个TX和1296个RX,其实已经缩短了非常多了。所以说,我们可以把batch size之类东西开的高一点,嗯,可能还要优化一下,这样的话,保证我们的训练速度不要太慢

当然也许有其他的方法可以优化一下他的学习速度,或者是优化一下他的这样的一个批量输入和批量输出的速度和效率率,可以使它的GPU利用率高一点

一些可以借鉴的算法,你可以下载下来放到我们这个文件夹里,放到这个reference的文件夹,我们可能有多个不同的代码,可以作为借鉴和参考注意,我们主任务用的代码其实是基于 trellis 2 他的仓库和文件继续开发的 /data/conda_envs/trellis2 https://github.com/roboflow/rf-detr

https://github.com/happinesslz/SEED

https://github.com/JIA-Lab-research/VoxelNeXt

对于那个radio map header, 它的输出头,它的输入要一个TS和一个Z轴平面来实现。我觉得这个可以暂时先切割开来,暂时不不把它加入我们这里了。毕竟我们radioma它的预测已经效果已经很好了,它相当于那他的那一套处理方法已经感觉可以定型,不用管了,哪怕后面我们写论文的时候,也就相当于把它看成两条分支,完全单独处理也是可以的 甚至我觉得他们后续我们就把,如果我们的CSI这条重新设计的整个网络结构比较好的话,我们再把radio、map他们那些东西给重新加进来,就是作为额外分支加到我们已经训练好的这个网络里,再重新训练就行了。所以说就是先别管他们,总而言之就是先别管radiomap了,就先看看我们这样的一个新的模型架构能不能用

数据集就参考以前的数据集,就是我们基于之前的那个分支接着用就行