MINER: Multiscale Implicit Neural Representations (arXiv 2022)

Paper:https://arxiv.org/abs/2202.03532
Unofficial Code:https://github.com/kwea123/MINER_pl

2022/6/8:这篇文章边翻译边看吧,不着急写完。这玩意讲的是啥真的是越看越看不懂在说什么,而且我觉得部分公式有点小问题啊。
2022/6/9:这英文写的都是啥啊,这是我英语水平有问题吗,为什么这些句式怎么读都觉得不舒服。老板突然抓我去干活,今晚就得交一个材料。
2022/6/9: 自己部分的内容做完了,不干了,继续看文献比较重要- -

Abstract

我们引入了一种新的神经信号表示,设计用于大规模信号的高效高分辨率表示。我们的多尺度内隐神经表示(MINER)的关键创新是通过拉普拉斯金字塔进行内部表示,它提供了信号的稀疏多尺度表示,捕获信号跨尺度的正交部分。我们利用拉普拉斯金字塔的优势,用一个微小的MLP在每个尺度上表示金字塔的小的不相交的斑块。这使得网络的容量从粗到细的尺度自适应增加,并且只表示信号能量强的部分信号。每个MLP的参数都从粗到细的尺度进行了优化,从而在较粗的尺度上实现了更快的逼近,最终实现了极其快速的训练过程。我们将MINER应用于一系列大规模信号表示任务,包括十亿像素图像和非常大的点云,并证明它需要相比于相竞争技术(比ACRON)的低于25%的参数,33%的内存占用,和10%的计算时间来达到同样的性能。

1. Introduction

现代信号处理的基础是一个简介的信号表示方法,它可以用于从压缩到反估计的各种应用。神经隐式表示法提供了这样一种简洁的方式来将离散数据表示为连续流形的样本。这使得在样本之间插入数据成为一种有效的方法,并在3D表示、图像、视频和线性逆问题中发现了许多应用。

尽管神经表示具有许多优点,但其计算复杂度高,训练时占用的内存大,为了达到较高的精度需要大量的参数。虽然对网络架构进行了一些修改和推理,现有方法对超大规模的数据还是不使用的,比如超高分辨率图像和十亿数量级的3D点云数据。我们引入了多尺度隐式神经表征(MINER),它可以在多个空间尺度上预测拉普拉斯金字塔。我们的关键观察是,拉普拉斯金字塔提供了一种稀疏和多尺度分解,将信号的不同频率内容分成不同的波段,这意味着不同波段的信号之间是近似正交的。我们通过训练MLPs来预测最粗尺度上的信号和更细尺度上的残差,实现了一个紧凑的表示。然而,在每个尺度上单一的全局MLP并不适合利用视觉信号的拉普拉斯变换的稀疏性。相反,MINER用小MLP表示图像和视频的局部2D和3D补丁,在结构上类似于最近提出的KiloNeRF表示。在每个尺度上进行多块分解,从粗尺度到细尺度,每个维度的空间或体积块数量增加一倍。MINER提供了一种快速灵活的多分辨率推断,因为在较低分辨率下计算信号值需要评估更少的MLP。图2概述了MINER。

这种多尺度、多MLP的架构非常适合于快速、内存高效的训练过程。在每个空间尺度上,mlp的参数被训练为该尺度下采样的信号版本。然后,我们按顺序从最粗尺度训练mlp到最细尺度。为了在训练阶段使用跨尺度信息的相关性,我们提出了两项创新。首先,我们证明了在拉普拉斯金字塔(由差分信号组成)上的训练明显快于在高斯金字塔(由下采样信号组成)上的训练,因为细尺度上的MLPs表示的信息与粗尺度上的表示正交。 其次,我们将精细块上采样的信号与精细块上的目标信号进行比较——如果表示误差小于阈值,我们在训练开始前修剪掉这些块。 由于视觉信号在其拉普拉斯变换中是稀疏的,拟合在更粗的尺度上收敛于父块,导致在后续分辨率上训练更少的块。这两种修改的结果在不影响内存要求或总参数量的情况下,训练速度急速提高。因此,在可比较的参数量和目标精度的情况下,MINER比SOTA方法的训练速度要快十多倍。MINER可以在不到3小时的时间内表示超过38dB的十亿像素图像,而ACORN等技术需要超过一天的时间。对于3D点云,MINER在不到三分钟的时间内实现了与IoU (union) 0.999或更高的交集,这比ACORN速度快两个数量级。图1显示了在每个空间尺度下,MINER在训练结束时的结果,以及ACORN在相同训练时间下的结果—展示MINER如何从低分辨率逐步达到高分辨率的高质量结果。

MINER结合了拉普拉斯金字塔提供的紧凑多尺度表示法和隐式表示法的优点。由于采用了多尺度表示,MINER可以用于图像的流重建,就像JPEG2000一样,或者使用八叉树进行有效的渲染采样,让神经表示可以作用在超大规模的视觉信号上。

2. Prior Work

MINER从经典的多尺度技术和最近的神经表征中获得灵感。我们在这里概述了一些突出的作品,以设定背景。

隐式神经表示: 隐式神经表示学习从局部坐标到信号值的连续映射,如图像和视频的强度,以及3D体积的占用值。然后,学习到的模型被用于包括图像表示、多视点渲染和线性逆问题等在内的无数任务。近年来在坐标表示的选择和非线性方面的进步使得训练过程具有较高的拟合精度。与隐式表征相关的显著工作包括NeRF表征及其许多衍生物,试图从一组多视图图像中学习3D几何。尽管这些隐式表示方法很有趣并且很成功,但是目前的方法通常需要数百万个参数。这最终导致大量内存占用和训练时间,阻碍了超高维的信号的表示。

架构设计以加速学习: 有人提出了一些有趣的修改,以提高训练或推理的速度。KiloNeRF将大MLP替换成多路小的MLPS,其只用于拟合一个小的、不相交的部分的3D空间。这大大加快了推断时间(通常是60倍),但对训练过程本身没有影响。(该方法有效提高了推理速度但是没有提高训练速度)。 ACORN利用自适应坐标分解来有效拟合各种信号。通过利用整数规划和插值的组合,与SIREN 和卷积占用网络(Convolutional occupancy network)等技术相比,ACORN将拟合图像和3D点云的训练时间缩短了一到两个量级。然而,ACORN没有利用视觉信号的跨尺度相似性,这往往导致非常大的信号的收敛时间很长。此外,自适应优化块调用复杂整数规划的代价可能是非常高昂的。

多尺度表示: 视觉信号在不同尺度上是相似的,这已经被广泛应用在很多问题中。在计算机视觉和图像处理中,小波变换和拉普拉斯金字塔经常被用来高效地完成图像配准、光流场计算和特征提取等任务。多尺度表示类似于八叉树和贴图细化(mipmapping)用于加速渲染管道。这也启发了神经贴图细化技术,其使用神经网络用于在各个尺度表示纹理。多尺度表示也用于一些线性逆问题,例如用于去噪的多尺度字典学习,压缩感知和稀疏近似。一些最近的方法专注于神经表示的细节层面方法(level-of-detail, LOD) ,其中多个尺度是联合学习的。虽然在渲染中效率很高,但该技术并不针对非常大的网格数据。MINER也会产生LOD表示,但是底层方法有很大的不同。MINER依赖于每个尺度上的逐块表示,这使得表示更紧凑,训练时间更快。

3. MINER

MINER利用信号的块分解和一个拉普拉斯算子的金字塔表示。我们现在详细介绍所提出的信号模型和训练过程。

3.1 Signal Model

令xxx为坐标而I(x)I(x)I(x)为目标。我们将假设这个坐标在[−1,1][-1,1][−1,1]的范围内。令DjD_jDj​表示域特定算子用于将信号下采样jjj次,UjU_jUj​是域特定算子用于将信号上采样jjj次。我们将使用JJJ用于隐式表示,Ij(x)≈NjI_j (x) \approx N_jIj​(x)≈Nj​,j∈[0,J−1]j \in [0, J-1]j∈[0,J−1],其中NjN_jNj​是拉普拉斯金字塔中的jthj^{th}jth层,这个多尺度表示将输入信号分离到不同尺度所捕捉的空间频带中。这种带通金字塔的理想特性是跨尺度的信号之间彼此是近似正交并且是稀疏的。我们发现在我们的实验中,相比于类似低通金字塔的高斯金字塔方法,这些特性有助于降低训练时间和推理时间。(在图三中可见)令RjR_jRj​表示MLP在尺度jjj建模残差信号,我们的拉普拉斯金字塔表示可以写做:-


公式(1)为信号的最粗级别的表示。在更细尺度下(如公式(2)),我们将信号近似地表示为前一个尺度的上采样版本和一个残差项的总和。这就产生了一种递归的多分辨率表示,可以自然地跨尺度共享信息。我们对所提出的多尺度表示法提出两个观点:

  • 在较粗的分辨率下,信号更小,因此需要更小的MLP。这些mlp在进行推断时速度更快,这有利于执行mipmapping和基于LOD的渲染等任务。
  • 扩展到尺度jjj的MLP参数仅依赖于扩展的信号在尺度q=j,j+1,⋯,J−1q = j, j+1, \cdots,J-1q=j,j+1,⋯,J−1下。这意味着可以从最粗尺度到最细尺度依次训练MLP。接下来我们将看到,在不牺牲质量的前提下,这将大大减少训练时间。这段话可真是一点都没看懂是什么意思,大概理解就是更细尺度下的MLP依赖更粗尺度的MLP,所以可以顺序训练,然后粗尺度的训练可以在满足一定条件下就停下来。

3.1.1 Using Multiple MLPs Per Scale

公式四表明,在空间点xxx上获取一个值需要评估总共JJJ个MLP。与单一尺度的SIREN相比,这并不是有利的。此外,在更细尺度上的残差信号往往是低幅度的,视觉信号由若干个平滑的区域组成。为了利用这个性质并使得推理速度更快,我们将信号在每个尺度下划分为均等的块。我们
为每个块创建了一个MLP,它所需的参数比一个完整的MLP要少的多。另外,残差值小的块可以表示为零信号,甚至都不需要用MLP表示。

现在我们将拉普拉斯表示和上面提到的多MLPs方法结合起来。令x~\tilde{x}x~表示最细尺度下块的局部坐标(m,n)(m,n)(m,n),其中m∈1,2,⋯,Mm \in 1,2,\cdots,Mm∈1,2,⋯,M表示垂直块的数量,n∈1,2,⋯,Nn \in 1,2,\cdots,Nn∈1,2,⋯,N表示水平块的数量。为了评估xxx处的信号,我们计算

其中⌊⋅⌋\lfloor \cdot \rfloor⌊⋅⌋表示地板操作符,Nj(m,n)N_j^{(m,n)}Nj(m,n)​表示在尺度jjj下(m,n)(m,n)(m,n)处块的MLP。使用这种公式,我们最多需要评估jjj个小型MLP,而不是大型MLP,从而大大减少了推断时间。

3.2 Training MINER

MINER需要对每个尺度和每个块的参数进行估计。现在我们介绍一种有效的序列训练程序,从最粗尺度开始训练直到最细尺度。训练过程开始于拟合最粗尺度的图像IJ−1(x)I_{J-1}(x)IJ−1​(x)。我们他通过解决下面的目标函数来估计各个MLPs NJ−1(m,n)N_{J-1}^{(m,n)}NJ−1(m,n)​的参数,

令I^J−1(xJ−1)\hat{I}_{J-1} (x_{J-1})I^J−1​(xJ−1​)表示这个阶段图像的估计。在训练过程,一些MLPs,尤其是针对简单块的MLPs,会比其他的MLPs更快收敛至一个目标MSE。我们将这些在优化过程中结束训练的MLPs移除并开始训练其他的MLPs。

类似于最粗尺度,我们继续在每个细尺度使用小的MLPs拟合图像块。例如,对于尺度J−2J-2J−2,目标信号表示为:

这里是第二个尺度图像减去第三个尺度图像估计的上采样图像得到的残差
由于每个尺度内的块占据不相交区域,那么每个MLP都可以独立进行优化:

名义上,块和MLP的数量都会在更细尺度上加班。然而,一些块可能已经由相应的更粗尺度的MLP充分表示。在这种情况下,在这种情况下,我们不给该块分配一个MLP,并设置残差的估计为全0。根据图像中的频率内容,这一决定大大减少了总MLP参数的数量,从而减少了整体训练和推理时间。

4. Experimental Results

基线:针对图像拟合和3D立体拟合,我们使用SIREN、KiloNeRF和ACORN与本文提出的MINER进行比较。我们也在3D立体拟合任务上比较了卷积占用网络(Convolutional occuppancy networks)。我们使用各自作者发布的代码并优化了训练参数以保证公平比较。

训练细节:我们将MINER模型部署在PyTorch框架下,多MLPs使用块矩阵乘法函数(torch.bmm)进行有效训练,因此我们不需要在现有Torch框架外编写复杂的代码。我们所有的模型都在一个配备了Intel Xeon 8260 2.4Ghz,128RAM和 NVIDIA GeFore RTX 2080 Ti的系统下训练得到。

图像拟合:我们在所有尺度上将RGB图像划分为32×32×332 \times 32 \times 332×32×3大小的图像块。对于在每个尺度和每个图像块,我们训练一个带有sin激活函数的四层MLP。我们将每一层的特征数量定为20。使用ADAM优化器,学习率为5×10−45 \times 10^{-4}5×10−4,指数衰减γ=0.999\gamma = 0.999γ=0.999。在每个尺度,我们训练500个 epoch,或者直到损失函数优于2×10−72 \times 10^{-7}2×10−7。我们使用L2损失作为所有尺度下的目标函数,没有其他的附加先验。

图3通过表示拉普拉斯金字塔、高斯金字塔和ACORN,显示了400万像素(MP)的冥王星跨时代图像的MINER训练误差。与其他方法相比,MINER很快收敛至误差10−410^{-4}10−4的数量级上。此外,误差的周期性和突发性增加在高斯表示和ACORN中更为普遍和显著,这会进一步恶化他们的表现,但是由于跨尺度信号之间的正交性质,这不会发生在拉普拉斯表示MINER中。第2小节 (第四部分实验部结果的第二小节) 包括其他高分辨率图像(包括冥王星的6400万像素图像)的结果以及尺度数量和patch大小等参数的影响分析。

图4展示了一个200万像素的微距照片,在所有尺度上使用活动块的例子。注意,当尺度从粗到细增加时,这些块是如何集中在高频区域(如蚱蜢的触角)。 MINER在10s内收敛到40dB拟合精度。相比之下,KiloNeRF需要6分钟来收敛,而ACORN需要7分钟收敛到40dB,参数数量大致相等。图5显示了各种方法的PSNR和时间关系的图。我们还注意到,由于重新计算坐标块,ACORN曲线的精度显著下降。相比之下,由于尺度变化引起的MINER曲线精度下降明显小于ACORN。


图6比较了MINER、KiloNeRF和ACORN实现36dB所需的时间,以及拟合冥王星16MP图像所需的GPU内存。对于这三种情况,我们改变隐藏特征的数量,固定层数来改变参数的数量。MINER到达36dB始终比竞争对手的方法快,并且需要的内存占用明显更小,这使得它对于大型问题具有高度的可伸缩性。

对于非常大的信号,MINER可以很好地扩展。我们使用ACORN训练在图7中所示的七个尺度的十亿像素图像。我们将每个区块的特征数量设置为9个,使用的补丁大小为32 × 32。MINER在2.6h内收敛到38.6dB的PSNR,总共需要1.88亿个参数。相比之下,ACORN在36小时内收敛到相同的精度,总共需要1.67亿个参数。注意,虽然MINER比ACORN需要更多的参数,但训练时间更短。由于MINER利用了大量的小型MLP,反向传播步骤需要的计算量大大减少。

3D点云拟合: 收到卷积占用网络的启发,我们使用符号密度函数,其中值在网格内为1,在网格外为0。我们总共采样了10亿个点,结果是1024×1024×10241024 × 1024 × 10241024×1024×1024的占用量。然后,我们在四个尺度上优化MINER,每个尺度上最大可达到2000次迭代。我们用logistic loss和MSE进行实验,发现MSE能显著加快收敛速度。学习速率设置为10−310^{-3}10−3。我们将所有尺度下每个块的MLP隐藏层数设置为2,特征数设置为22。然后,我们使用移动立方体从所产生的占用体积构建网格。我们将我们的结果与ACORN和卷积占用网络进行了准确性和时间比较,和筛选泊松重建(SPSR) 比较重建质量。对于SPSR,它需要点云,我们从物体表面采样500万个点作为输入。

图1显示了每个尺度下的活动块和重构网格。MINER在不到25分钟内收敛到IoU 0.999。与此同时,ACORN实现了IoU 0.97,结果比MINER差。ACORN花了7个多小时才收敛到0.999的IoU,清楚地展示了MINER对于3D体积的优势。我们还注意到MINER所需的参数数量少于ACORN的三分之一——这是使用基于块的表示的直接结果——网格外和网格内的大多数块在前几个尺度内迅速收敛,所需的表示比单一尺度的表示要少得多。图8显示了每个尺度上的活动块示例。随着迭代的进行,修剪后的活动块的数量减少,这反过来导致更紧凑的表示和更少的参数。

图9显示了在固定时间内适合各种重建方法的网格。每次实验的时间选择在MINER达到0.999的IoU时。与ACORN和卷积占用网络相比,MINER具有更好的重建质量,性能与SPSR相当(哪里相当了???) 我们注意到,针对发动机模型的重建质量优于SPSR。由于发动机模型有大量的尖锐边缘,SPSR往往会使结果过度平滑。由于MINER与移动立方体算法(marching cubes)相结合仅依赖局部信息进行重构,因此得到的网格精度更高。

5.Conclusions

我们提出了一种新颖的多尺度神经表示法,相比于SOTA训练更快,需要一致或更少的参数以及更少的内存占用。我们展示了拉普拉斯金字塔的优势自然的延展到MINER中。我们表明,利用跨尺度的自相似性有利于大幅度减少训练时间,而不影响训练的准确性。在细节级别非常重要的地方,MINER自然适合于渲染,包括纹理映射的表示和Mip映射。未来的方向将集中于将MINER与多视图合成相结合,以实现极其快速的拟合和可视化管道,为训练高度复杂的几何形状开辟道路。

6. Appendix 1: Algorithm Details

算法1展示了整个MINER工作流,包括初始化、修建和参数更新。下采样函数使用了一个域特定降采样算子。对于图像表示为

对于三维信号例如视频I(x,y,t)I(x,y,t)I(x,y,t)和3D立体I(x,y,z)I(x,y,z)I(x,y,z),表示为

7. Appendix 2: Experimental Results

我们将MINER与三种用于2D图像的基线以及三种用于3D体积的基线进行比较:
(1)SIREN在一个尺度上拟合一个大的MLP,使用Sin激活函数用于训练。对于不同实验我们改变了隐藏层的参数以保证其参数数量与所比较的MINER参数量相匹配。
(2)KiloNeRF在一个尺度上拟合多个小的MLP而不是一个大的MLP。每个MLP的隐藏层参数与MINER的参数相同。
(3)ACORN使用自适应坐标分解,在一个尺度上拟合一个大的MLP。
(4)卷积占用网络使用卷积捕获局部相关性,我们只将其用于比较3D体积实验上的比较。
我们使用了各自作者的代码,并优化了训练参数,以确保公平的比较。

图像拟合: 图10为跨越训练迭代6400万像素的拟合结果的冥王星图像。由于采用了多尺度训练方案,MINER在所有情况下都保持了高质量的重建,50秒内PSNR快速收敛到40dB。相比之下,ACORN在10s后取得了质量较好的结果,在50s后达到30.8 dB的PSNR,而KiloNeRF只有在50岁以后才能达到质量良好的结果。SIREN结果没有显示在图中,因为第一个结果是在4分钟后产生的。图11显示了来自正文的10亿像素图像,拟合7个比例,以及更多的插图。


3D点云拟合: 图12显示了在固定时间内拟合各种重建方法的网格。MINER的重构质量优于ACORN和卷积占用网络,性能与SPSR相当。我们注意到,针对发动机模型的重建质量优于SPSR。由于发动机型号有大量的尖锐边缘,SPSR趋向于产生平滑结果。由于MINER与marching cubes相结合仅依赖局部信息进行重构,因此得到的网格精度更高。

7.1 Analysis of parameter space

MINER的训练时间受尺度数、每个图像块的大小、切换到更细尺度时的停止准则,每个MLP的参数包括层数、每层特征数和非线性类型。我们现在提供对参数的全面分析。

**不同图像块大小的性能:**最优图像块大小高度依赖于信号本身。为了理解经验关系,我们使用MINER拟合低、中、高纹理内容的三种类型的图像,以达到40dB的精度。在每种情况下,我们将patch的大小从8像素调整到64像素。我们按比例增加每个图像块的每一层的特征数量,以保持总的参数数量大致相同。图13展示了三幅图实现40db所需的时间随patch size的变化。我们注意到训练时间最短的最优patch尺寸随着纹理含量的减少而增加,这可以作为选择合适patch大小的依据。(对于纹理细节最多的图1,使用8的图像块拟合的最快;对于中等纹理细节的图2,则使用16大小的图像块较好;对于包含大量低频的图3,使用64大小的图像块拟合更快。)

不同尺度的性能: 图14显示了冥王星图像在不同空间尺度下实现40dB所需的时间。我们注意到,增加量表的数量在4个尺度之前是有益的,但之后的表现就会下降。(这里表现的是对时间上的一个影响,但是没有说明不同尺度对性能的影响,不同的尺度所达到的最高PSNR应该是存在不同的)

A Piece of My Mind

  • 这个方法没有一个官方的code,现在只有一个其他人的复现结果。在图像拟合上的结果是非常高速清晰的,但是参数量方面没有看到一个太大的节约。甚至在3D点云的拟合上参数量是高于ACORN的。
  • 文章内部其实还是有一些部分没有讲清楚,并且不知道是不是我的问题,他的英文读的就让人感觉非常奇怪。让人感觉懵的- -
  • 附录的算法其实可以好好讲讲的,但其实讲了也没有人会看,那还是算了吧。每个文章最后翻译下来其实都接近一万字了,这几天几乎每天都有一个五千字的写作量 (翻译量)。后续还是自己看完论文,在pad上做好笔记,然后在CSDN上直接放一些缩略版的内容吧,感觉长文是没有人看的。

论文阅读:(arXiv 2022) MINER: Multiscale Implicit Neural Representations相关推荐

  1. 论文阅读笔记:Intriguing properties of neural networks

    论文阅读笔记:Intriguing properties of neural networks 深度学习对抗样本的开山之作 要点 以往的观点认为深度神经网络的高层特征中每一个分量描述了一种特质,但是这 ...

  2. #Paper Reading# Implicit Neural Representations with Periodic Activation Functions

    论文题目: Implicit Neural Representations with Periodic Activation Functions 论文地址: https://arxiv.org/abs ...

  3. [CVPR2022]ImFace: A Nonlinear 3D Morphable Face Model with Implicit Neural Representations

    标题:ImFace: A Nonlinear 3D Morphable Face Model with Implicit Neural Representations 链接:https://arxiv ...

  4. 隐式神经表示一:神经网络拟合图像Implicit Neural Representations with Periodic Activation Functions

    文章目录 1. Implicit Neural Representations with Periodic Activation Functions 0. 什么是隐式神经表示 1. 了解SineLay ...

  5. 概述:隐式神经表示(Implicit Neural Representations,INRs)

    隐式神经表示(Implicit Neural Representations,INRs) 1 简介 1.1 传统的隐式表示 1.1.1 代数表示 1.1.2 函数表示 1.1.3 水平集表示(leve ...

  6. 论文阅读+实战:SimGNN:A Neural Network Approach to Fast Graph Similarity Computation

    Part 1: 论文阅读 论文链接:SimGNN: A Neural Network Approachto Fast Graph Similarity Computation 1. 摘要 图相似性搜索 ...

  7. 剪枝综述论文阅读:Methods for Pruning Deep Neural Networks

    文章目录 一.概述 1.分类 2.评估 二.Magnitude based pruning 1.权重剪枝 2.彩票定理 3.特征图和过滤器剪枝 (1)基于通道方差的剪枝 Inbound pruning ...

  8. 综述论文阅读”A comprehensive survey on graph neural networks“(TNNLS2020)

    论文标题 A comprehensive survey on graph neural networks 论文作者.链接 作者:Wu, Zonghan and Pan, Shirui and Chen ...

  9. 【论文阅读】A Survey on Dynamic Neural Networks for Natural Language Processing

    论文信息 A Survey on Dynamic Neural Networks for Natural Language Processing 发表单位:University of Californ ...

最新文章

  1. quartz在集群环境下的最终解决方案
  2. IntelliJ IDEA2016 + tomcat 即改即生效 实现热部署
  3. 12864输出字符c语言,大家看看该怎么改才能让12864液晶显示屏显示21个字符啊?...
  4. 空气动力学测试软件,山寨也精确 简单方法测试最佳空气动力学姿势(图文)
  5. json解析 子类和父类同名属性如何赋值_想学变量的解构赋值?看完这一篇就够了...
  6. Ubuntu LAMP
  7. Hex hsl 转换 php,关于 RGB,HEX,HSL 颜色相互转换
  8. 系统盘点Android开发者必须掌握的知识点,含小米、腾讯、阿里
  9. gitlab git clone 卡住_IDEA中的Git操作你掌握了吗?此一篇,足矣!
  10. Jmeter(七)Jmeter脚本优化(数据与脚本分离)
  11. 带reportView的winform程序在部署安装的时需要装两个框架,一framework框架二就是reportviewer的安装包...
  12. matlab2019使用仿真,simulink视频教程仿真建模matlab2019高级
  13. 有哪些不错的数学、物理类的「闲书」?
  14. 代理ip填写格式有什么要求?
  15. MOOC创新创业学第十二章单元测试题及答案
  16. 如何用计算机看苹果手机的文件,如何在电脑上管理iphone文件?
  17. 产品初探:银行理财产品简介
  18. 写公众号一个月关注量破900,聊聊我的感受
  19. 公务员面试题:领导干部直播带货,你怎么看?
  20. 3.灰色预测模型(Gray Forecast Model)

热门文章

  1. 夕阳美,美到骨子里了
  2. 手机APP从服务器获取列表和详情
  3. AI人工智能ml5.js在线实现图片变卡通图像,照片变卡通图像
  4. rs.next()为false导致resultset遍历不出数据
  5. 【考研经验】2018三跨哈工大深圳专硕初试复试经验
  6. 诗歌十一 十二则名门家训(非淡泊无以明志,非宁静无以致远)
  7. 计算机毕业设计Java房屋租赁管理系统(源码+系统+mysql数据库+lW文档)
  8. 微信手环1年多了,前主管终于出来聊了聊它是怎么诞生的
  9. 浏览器主页被2345拦截
  10. 20170916_Linux下线程池技术