基于显式多反射通道建模的单像人像重光
作者:ZHIBO Wang 清华大学

摘要:

现有肖像重打光缺陷:

  1. 没考虑镜面反射和阴影(specular and shadow)。
  2. 已有的数据集不支持学习多反射通道建模(multiple reflectance channel modeling)。

本文显式的建模用于单幅图像人像重打光的多个反射通道,包括面部反照率(facial albedo),几何(geometry)以及镜面反射和阴影两种照明效果。最后将这些通道组合通过DNN获得重打光结果。提出了一个有标签数据集,通过有监督学习训练DNN。开发了一个光引导特征调制(LFM)模块。LFM利用分层特征调制融合光照。

1.介绍

说明重打光研究的重要性。

Debevec可生成相片级别的重打光,但对硬件要求高。

为减轻硬件要求,提出将参考人像图片颜色分布转移到输入人像图像。缺点是大量计算不适合交互式摄像应用且照明效果(镜面反射于阴影)高度依赖于实际着色管道(practical shading pipeline),而实际着色管道不能仅通过传递颜色分布而完全建模。

随后,球谐(SH)照明和环境地图出现用于实际着色管道。缺点是没考虑镜面反射和照明效果,或是没考虑面部反照率和人脸几何等。所以,作者提出了显示多反射通道建模解决照片级人脸重新打光。

本文首先开发了一种去光照网络(delighting network),以联合恢复面部反照率(albedo)和几何形状(geometry),作为输入肖像的内在通道。基于估计的面部几何形状和给定的光照,通过镜面反射和阴影估计网络(SS,Specular and Shadow estimation network)合成镜面反射和阴影效果,作为渲染的细节通道。在获取这四个通道后,提出一个合成网络(composition network)来生成给定环境地图下重照人像图像。SS和合成网络构成了重新照明网络。由于我们的框架对多个反射通道进行了显式建模,因此可以获得真实的光照效果,特别是对于镜面反射和阴影。

然而,学习该网络的关键障碍在于缺乏真实的监督。现有3D人脸数据集不提供面部反照率,几何和照明效果通道。因此,提出了一个大规模的重照明数据集。首先,重建了438名不同种族和年龄的高质量3D人脸,每个人由20个表情。然后随机选取100名在391种不同光照条件下,以随机的头部姿势进行渲染,生成有监督通道用于训练。

提出了一种照明引导特征调制(LFM)模块,它以分层的方式将照明融合到通道特征中。LFM将照明信息有效地融合到我们的多通道特征中,使这些特征与目标照明更加一致。

贡献:

  • 通过对人脸内部通道和渲染细节通道的显式建模,提出了一种新的单幅图像重打光框架,显著提高了重打光性能,特别使对于具有镜面反射和阴影的挑战光照。
  • 提出了一个3D人脸和多个渲染通道组成的大规模人像重打光数据集,用于训练人像重打光网络。
  • 提出了LFM模型以更有效和真实地将目标照明融合到重打光肖像中。

2.相关工作

2.1 肖像重打光
色彩传递(color transfer),修改光照模型的参数(eg.球谐照明),深度学习技术(lighting normalization, shadow removal, 加速数值优化的方法)。
与Nestmeyer工作相似区别在于Nestmeyer的方法主要集中在平行光下的图像重新打光。
2.2 2D和3D人脸数据集

3.肖像重新照明数据集

438名不同种族,不同年龄(从17岁到69岁)的受试者的高质量面部扫描图像,并使用多视角相机系统在单一的统一照明设置下收集了20个面部表情。在不同的光照条件下渲染了不同姿态的人脸扫描图。为每个图像 III 提供了反照率 InI_{n}In​ ,法线图(normal) N, 镜面反射(specular)IspI_{sp}Isp​,阴影(shadow)IshI_{sh}Ish​和面部分析(face parsing)P通道。
3.1 3D人脸获取
首先收集高保真人脸扫描,系统包含了30台索尼A5000相机和27个白色区域灯,以创建统一白色照明环境。受试者要求执行20个预定义表情。使用商业软件PhotoScan来重建高保真面部几何和纹理。
3.2 多反射通道渲染
图3为多反射通道渲染管道。随机从438名受试者中抽取100名受试者进行训练,8名受试者进行测试。对于光照条件,随机选取371张环境图进行训练,20张环境图进行测试。因此,在实验体身份和照明条件方面,训练数据和测试数据之间没有重叠。注意到,我们只使用了100个实验体,因为我们发现使用更多的实验体在训练过程中不会带来明显的改善。在生成训练和测试图像时,渲染过程遵循同样的流程。使用[Chen Cao, Yanlin Weng, Shun Zhou, Yiying Tong, and Kun Zhou. 2013. Faceware-house: A 3d facial expression database for visual computing. IEEE Transactions on Visualization and Computer Graphics 20, 3 (2013), 413–425.]方法将所有人脸扫描与人脸模板配准,并将这些扫描转换为归一化的脸部姿势。然后面部扫描被放置在距离相机3.5米的地方。为了提高训练网络的鲁棒性和泛化能力,由欧拉角表示人脸姿势在空间中被均匀采样(θx,θy,θz)∈[−30∘,30∘]×[−15∘,15∘]×[−15∘,15∘](\theta_{x}, \theta_{y}, \theta_{z})\in[-30^{\circ},30^{\circ}]\times[-15^{\circ}, 15^{\circ}]\times[-15^{\circ},15^{\circ}](θx​,θy​,θz​)∈[−30∘,30∘]×[−15∘,15∘]×[−15∘,15∘]。为了丰富照明变化,通过沿环境贴图的经度(水平方向)随机旋转环境贴图来增加环境贴图。

对于照片级真实感渲染,我们使用Blender中的Cycles渲染引擎和一个标准BSDF着色器来渲染人脸图像。重建的纹理图TTT 被用作着色器的反照率阴影输入。为了获得视觉上令人信服的渲染效果,在渲染图像III时按照经验,将镜面反射和粗糙度分别设置为0.6和0.5。此外,将镜面反射系数设置为0,以进一步渲染没有镜面反射的图像I0I_{0}I0​。通过在Blender中将阴影可见性设置为False,我们渲染了一幅没有自遮挡的图像I1I_{1}I1​。通过计算III和I0I_{0}I0​之间的差异以及III和I1I_{1}I1​之间的差异,然后将他们转换成灰度,我们得到了与图像III一致的镜面反射贴图Isp=I−I0I_{sp}=I-I_{0}Isp​=I−I0​和阴影贴图Ish=I1−II_{sh}=I_{1}-IIsh​=I1​−I。我们还对均匀光照环境下的反照率图像InI_{n}In​进行渲染。尽管以前的重照明方法中经常使用乘性阴影贴图,这里采用了加性阴影贴图,因为加性阴影将简化网络优化过程中的梯度反向传播。在渲染过程中将背景像素设置为0。

我们使用人脸法线图像N来表示人脸几何。为了获取语义人脸解析图,我们将注册的人脸模板的纹理图手工划分为8个不同的区域,即两个眉毛,两个眼睛,鼻子,内口,嘴唇,和皮肤区域。通过给不同区域分配不同的颜色,我们可以很容易的获取相应的人脸解析图P,由于所有的人脸都是用人脸模板预先注册的。我们使用包括I,l,In,Isp,NI, l, I_{n}, I_{sp}, NI,l,In​,Isp​,N和PPP的图像组作为我们的多通道图像来训练我们的网络。在剔除人脸扫描不完整和渲染失败的情况后,我们得到了27万个用于训练的有效图像组和2万个用于测试的有效图像组。渲染图像的分辨率为640×960640\times960640×960像素。由于我们的方法关注人脸区域,所以人脸边框裁剪一个正方形块,在[20, 40]范围内随机采样一个填充值,并将其下采样到256×256256\times256256×256个像素。使用高斯金字塔将旋转照明环境贴图下采样到16×3216\times3216×32。环境贴图收集自HDRIHaven和CGTextures。

4.提出的肖像重新照明方法

我们的框架设计基于以下三个方面:首先,面部反照率和法线是生成肖像图像的重要因素。然而,以前的方法并没有显式地对它们进行建模。因此,首先使用去光照网络来估计面部反照率和法线。此外,通过引入人脸解析辅助任务来增强去光照网络。其次,面部镜面反射和阴影在生成照片级真实感重现效果中起着重要作用。因此,我们设计了一个镜面反射和阴影(SS)网络来显式地生成这些效果。我们的SS网络根据面部法线和目标照明估计镜面反射和阴影。第三,为了将上述信息结合在一起,我们训练了一个合成网络,该网络以面部反照率、法线和估计的光照效果为输入,执行重照的结果最终创建。

4.1 去光照阶段
给定输入人脸图像III,去光照网络估计其对应的环境地图l^\hat{l}l^,人脸反照率I^n\hat{I}_{n}I^n​和人脸法线N^\hat{N}N^。这里,估计的人脸法线N^\hat{N}N^和反照率I^n\hat{I}_nI^n​作为重要的人脸内在通道,被用于后续的重新照明阶段。为了提高去光照网络的性能,引入了人脸分析任务(face parsing)作为辅助任务。具体地说,这种多任务训练策略有助于估计反照率I^n\hat{I}_nI^n​。一旦I^n\hat{I}_nI^n​被准确估计,将启用照明效果估计并在接下来的步骤中重新照明结果组成,如图4所示。

我们的消光网络由编码器-解码器架构组成。我们使用置信度加权平均块估算光照l^\hat{l}l^。跳过连接用于保存输入的图像细节。Sigmoid激活层用于归一化面部反照率和法线,而softmax用于估计人脸分析图。为了估计人脸法线N^\hat{N}N^和反照率I^n\hat{I}_nI^n​,我们采用L1L_1L1​回归损失如下,
LIn=∣∣I^n−In∣∣1L_{I_n} = ||\hat{I}_n-I_n||_1LIn​​=∣∣I^n​−In​∣∣1​,(1)
LN=∣∣N^−N∣∣1L_N = ||\hat{N}-N||_1LN​=∣∣N^−N∣∣1​, (2)
其中,InI_nIn​和N表示真实反照率和法线。这两个通道被馈送到我们的重新照明阶段,不仅可以生成重照图像,还可以预测目标照明下的镜面反射和阴影。

即使重新照明阶段不使用源照明,估计源照明也将提高网络训练的稳定性。通过真实照明l{l}l和估计照明l^\hat{l}l^之间的加权-log-L2L_2L2​(wlog−L2wlog-L_2wlog−L2​)距离来估计环境照明,可以表示为
Ll=∣∣ω⊙(log(1+l^)−log(1+l))∣∣22L_l = ||\omega\odot(log(1+\hat{l})-log(1+{l}))||_2^2Ll​=∣∣ω⊙(log(1+l^)−log(1+l))∣∣22​,(3)
其中ω\omegaω是环境图中的立体角,⊙\odot⊙表示元素相乘。由于环境图被映射到球体进行渲染,因此不同像素对应于不同区域大小。因此,在等式(3)中使用ω\omegaω。

由于人脸解析PPP图中语义区域的大小明显不同,采用的多类焦点损失用于执行解析为
LP=−(1−P^)η⊙P⊙log(P^)L_P=-(1-\hat{P})^\eta\odot{P}\odot{log(\hat{P})}LP​=−(1−P^)η⊙P⊙log(P^),(4)
其中P^\hat{P}P^是估计的面部解析图,η\etaη是聚焦参数。图5显示了该面部解析图。它因为解析让网络理解面部语义信息确实改善了结果。

总而言之,平等对待所有任务,训练我们的去光照网络的总损失表示为
LDL=LIn+LN+Ll+LPL_{DL}=L_{I_n}+L_N+L_{l}+L_PLDL​=LIn​​+LN​+Ll​+LP​。(5)
如图7所示,演示了去照明网络的估计结果。

4.2 重光照阶段
在重光照阶段,我们首先利用估计的脸部法线和目标光照估计镜面和阴影的光照效果,然后合成多通道图像以获得重光照结果。因此,在重光阶段有两个网络:镜面反射和阴影(SS)网络和合成网络。

4.2.1 镜面反射和阴影效果估计
镜面反射和阴影仅出现在局部和小区域,需要进行特殊处理,才不会被回归损失忽略。采用了SS网络来估计,如图4。
镜面反射和阴影主要受面部几何和光照影响。SS网络的输入是估计的面部法线和目标光照。学习镜面反射IspI_{sp}Isp​和阴影IshI_{sh}Ish​时,强制使他们与真实情况相似,表示为
LSS=∣∣I^sp−Isp∣∣1+∣∣I^sh−Ish∣∣1L_{SS}=||\hat{I}_{sp}-I_{sp}||_1+||\hat{I}_{sh}-I_{sh}||_1LSS​=∣∣I^sp​−Isp​∣∣1​+∣∣I^sh​−Ish​∣∣1​,(6)
其中,I^sp\hat{I}_{sp}I^sp​和I^sh\hat{I}_{sh}I^sh​表示了估计的反射和阴影图。SS网络是由编码器-解码器结构组成。为了增强SS网络中输入照明的影响,引入了照明引导特征调制(LFM)模块。

4.2.2 引导光照特性调制(LFM)
如图6所示,LFM模块以分层方式将照明与通道图像特征融合在一起。使用光照地图l{l}l来调制输入特征FinF_{in}Fin​。光照l{l}l首先通过全连接层FC1FC_1FC1​转换为128维特征。随后,该特征通过两个全连接层FC2FC_2FC2​和FC3FC_3FC3​转换为两个c维特征:乘性因子γ\gammaγ和加性因子β\betaβ。然后这两个因子被扩展维h×w×ch\times{w}\times{c}h×w×c以匹配FinF_{in}Fin​形状。LFM的输出特征FoutF_{out}Fout​表示为,
Fout=γ⊙Fin+βF_{out}=\gamma\odot{F_{in}}+\betaFout​=γ⊙Fin​+β。(7)
注意,只有第一个全连接层后面跟随非线性激活函数ReLU。

4.2.3 多通道合成网络
在获取多反射通道图(面部反照率,法线,镜面反射和阴影)之后,我们设计一个网络根据目标光照一致地合成它们。采用了编码器-解码器架构,并将LFM嵌入到多通道合成网络中,如图4所示。每个上采样之后都使用LFM来根据目标照明对特征进行调制。为了训练多通道合成网络,我们将目标照明和估计的多通道图片作为输入,并将重建图像I^\hat{I}I^约束为类似于真实I{I}I,记为
LRL=∣∣I^−I∣∣1L_{RL}=||\hat{I}-{I}||_1LRL​=∣∣I^−I∣∣1​。(8)

4.3 训练细节
为了训练去光照和重新打光网络,采用了两阶段训练方式。第一阶段,所有网络都是从0开始训练,认为是预热阶段。在训练去光照网络时,从一个图像组G={I,l,In,Isp,Ish,N,P}G=\{I, l, I_n, I_{sp}, I_{sh}, N, P\}G={I,l,In​,Isp​,Ish​,N,P}和等式(5)中的目标函数提供了真实的面部反照率,法线和解析图。在重照网络中,分别对SS和合成网络进行训练。这样,在训练时只需要使用一个图像组。注意,SS和合成网络的输入是预热阶段真实多通道图像。

每个图像组都是在一种照明下捕获的。为了微调我们的整个网络,我们对另一组图像进行了采样,这些图像组以相同的姿势捕捉相同的对象,但使用不同的照明,标记为Gr={Ir,lr,Inr,Ispr,Ishr,Nr,Pr}G^r=\{I^r, l^r, I_n^r, I_{sp}^r, I_{sh}^r, N^r, P^r \}Gr={Ir,lr,Inr​,Ispr​,Ishr​,Nr,Pr},Inr=InI_n^r=I_nInr​=In​,Nr=NN^r=NNr=N和Pr=PP^r=PPr=P,用于重新照明。

与“预热”阶段不同,SS和组合网络的输入是我们网络的预测。因此,等式(6)和等式(8)中的有监督信号重打光微调阶段分别为IsprI_{sp}^rIspr​, IshrI_{sh}^rIshr​和IrI_rIr​。具体地说,我们首先通过固定SS和多通道合成网络来微调我们的去光网络。然后,当去光网络的损失收敛时,我们开始微调重新照明网络。我们的模型是用Pytorch实现的。我们在焦损后将聚焦参数η\etaη设置为2。Adam优化器及其默认设置被用来训练我们的模型。预热阶段学习率设定为0.002,重照微调阶段学习率降至0.0002。批处理设置为8。在预热阶段,每个网络分别在NVIDIA GTX 1080Ti GPU上进行为期一天的培训。在微调期间,我们使用四个NVIDIA GTX 1080Ti GPU对整个网络进行为期2天的培训。在测试过程中,重新照亮图像的平均运行时间约为46ms,其中去光网络为11ms,SS网络为17ms,合成网络为18ms。

5.实验

首先评估提出的方法的主要贡献。然后,与最先进的方法进行了定量和定性的比较,表明该方法无论是对于输入图像还是对于目标来说,都能更好地处理具有挑战性的光照。接下来,给出了不同的光照结果,以表明该技术对真实肖像中的各种情况都是健壮的,包括各种输入和目标照明、头部姿势和面部表情、帽子和眼镜等对象等等。最后,当我们使用语义对多个反射通道进行建模以执行重新照明时,我们能够操纵一些通道来编辑重新照明结果。我们还给出了关于这类问题的结果。对于定量比较,我们采用RMSE、PSNR和SSIM度量方法,通过我们的测试数据集将重打光图像与它们对应的真实数据进行比较。对于定性比较,直接显示真实图像和合成图像的相关结果。

5.1 消融研究
为了证明我们的SS网络、线性调频和人脸分析辅助任务的有效性,我们对我们的方法进行了定量和定性的综合消融研究。
表2表明,我们方法的每个组成部分都对RMSE、PSNR和SSIM度量的最终光照结果有贡献。图8还演示了每个组件如何提高重打光图像的视觉质量。基线是去光照和重光照(DL-RL)架构,不使用我们的SS网络、LFM和人脸解析。
5.1.1 SS网络
在加入SS网络(DL-RL+SS)后,RMSE比基线降低了18%。视觉结果开始显示出与真实情况相似的照明分布,如图8(b)和©所示。注意,对于DL-RL和DL-RL+SS,目标照明在合成网络和SS网络的瓶颈层连接。
5.1.2 LFM
通过使用我们的LFM(DL-RL+SS+LFM)融合照明,可以生成更精确的照明效果,如表2中的所有指标所示。同样在图8(d)中,通过使用LFM重照明肖像开始在面部显示更多的照明细节。表2还表明,LMF提高了镜面反射和阴影图的估计精度。图9进一步给出了带和不带LFM的SS网络的一些结果。在这里,为了消除其他模块造成的误差,我们将真实法线贴图和目标照明馈送到SS网络。图9显示,没有LMF的SS网络只捕获镜面反射的低频部分,估计的阴影比真实要弱得多。LMF可以帮助SS网络估计镜面反射的高频细节,并生成更精确的阴影效果。
5.1.3 人脸解析
如表2所示,在人脸分析任务的帮助下,我们改进了对面部反照率图像的估计,从而获得了更准确的重照结果(用FULL表示)。图8(e)还显示,通过使用解析,前额和眼睛区域上的高光和阴影略有改善。原因可能是这些人脸区域在某些极端光照条件下有其共同的光照效果,这是我们的网络在人脸解析的帮助下学习到的。请注意,图5提供了对真实输入图像的人脸解析的更具体评估。
5.2 对比当前最新结果

5.2.1关于合成数据
首先在有真实图像的测试数据集进行比较,输入时合成人脸和一张描述光照的环境图。
5.2.2关于真实数据

5.3 更多的结果和应用
在随附的视频和文档中展示了方法的更多结果和更多的比较,其中我们可以看到,我们的方法生成具有连续光照变化的一致的视频,并且对各种输入肖像和目标光照具有很强的鲁棒性。在SS网络的帮助下,我们的方法可以控制残留物图像中的镜面反射和阴影。通过在多通道合成之前操作生成的镜面反射和阴影组件的比例,我们的方法使用户能够调整重新照明效果,如图12所示。

5.4 缺陷
由于在数据采集系统中很难获得人脸模型的漫反射和镜面反射,所以将空间变化的漫反射和镜面反射系数视为常量,并在渲染时省略了次表面散射。因此,渲染的重新照明效果在物理上并不准确。

当人脸前面有孤立的物体并在人脸上投射阴影时,可能会产生伪影。这是因为本方法只考虑了自遮挡造成的阴影,而在没有充分了解物体的位置和大小的情况下,其他物体造成的阴影往往是不可预测的。因此,该阴影会导致对面部正常和反照率的不准确估计。处理这一问题的一种可能的解决方案是在训练数据集中添加这种特定的样本。

6.结论

通过显示建模嵌入面部反照率,几何以及镜面和阴影的光照效果的多反射通道,提出一种单图像人像重照框架。使用de-lighting网络,从输入肖像恢复了面部反照率(facial albedo)和几何(geometry)。开发了一个SS网络根据估计的面部几何和目标光照图来显式地估计阴影和镜面反射的光照效果。LFM模块更一致的融合了多个反射通道的功能,从而在处理具有挑战性的照明效果的同时实现了照片级的重照效果。
提出了一个大规模有监督3D数据集和多种有用的通道,使我们能够学习多个反射通道的显式建模。

小结:重点处理了重打光中的镜面反射和阴影。使用了3个网络,第一个分解人脸解析,反照率和法线,第二个获取阴影和反射,第三个进行重新打光。

Single Image Portrait Relighting via Explicit Multiple Reflectance Channel Modeling 论文笔记相关推荐

  1. [ICCV2019]Deep Single-Image Portrait Relighting

    标题:Deep Single-Image Portrait Relighting 链接:http://openaccess.thecvf.com/content_ICCV_2019/papers/Zh ...

  2. 论文笔记02 Link Prediction by Multiple Motifs in Directed Networks

    论文笔记02 Link Prediction by Multiple Motifs in Directed Networks 1.基于单个子图朴素贝叶斯模型的链路预测 2.基于两个子图朴素贝叶斯模型的 ...

  3. RES 新的数据集 Advancing Referring Expression Segmentation Beyond Single Image 论文笔记

    RES 新的数据集 Advancing Referring Expression Segmentation Beyond Single Image 论文笔记 一.Abstract 二.引言 三.相关工 ...

  4. 论文笔记1:Fast and Robust Multi-Person 3D Pose Estimation from Multiple Views

    快速且鲁棒的多视角下多人三维姿态估计 作者讲解:https://www.bilibili.com/video/BV1K441157Xf?from=search&seid=52494766343 ...

  5. 论文笔记 Multiple Instance Detection Network with Online Instance Classifier Refinement - CVPR 2017

    Multiple Instance Detection Network with Online Instance Classifier Refinement 华中科大Peng Tang, Xingga ...

  6. 论文笔记之:Multiple Feature Fusion via Weighted Entropy for Visual Tracking

    Multiple Feature Fusion via Weighted Entropy for Visual Tracking ICCV 2015 本文主要考虑的是一个多特征融合的问题.如何有效的进 ...

  7. 《A Single Camera Eye-Gaze Tracking System with Free Head Motion》论文阅读

    题目:A Single Camera Eye-Gaze Tracking System with Free Head Motion 作者:Craig Hennessey, Borna Noureddi ...

  8. 【论文笔记】Learning from Multiple Cities: A Meta-Learning Approach for Spatial-Temporal Prediction

    论文学习心得 前言 应用场景 基础概念 什么是元学习 元学习的分类 MAML 基本概念理解 MAML中的Task MAML算法详解 摘要 本文贡献 利用来自多个城市的信息来提高迁移的稳定性 元学习时空 ...

  9. 【论文笔记】:PyramidBox :A Context-assisted Single Shot Face Detector

    &Title ECCV2018 . baidu PyramidBox :A Context-assisted Single Shot Face Detector [论文翻译]:PyramidB ...

最新文章

  1. Ubuntu安装Anaconda
  2. 应用程序进程(一):创建应用程序
  3. java怎么用return代替else_java – 从一个隐含或明确的“else”方法返回,还是用一个“return”语句返回?...
  4. 微服务架构设计模式~识别系统操作
  5. python mysql 时间比较大小_python时间函数与mysql时间函数转换
  6. 自动化测试之--参数化
  7. @RequestBody、@RequestParam、@PathVariable
  8. 【转】关于VB中Shell及ShellExecute的总结与记录
  9. [转载]Jquery mobile 新手问题总汇
  10. 编程软件python-python编程用哪个软件
  11. java 四大元注解_java中元注解有四个
  12. wxWindows 程序编译选项设置统揽
  13. AETA地震预测 AI 算法大赛——Helloworld队比赛方案(亚军)
  14. 基于VEH调试寄存器实现无痕HOOK(5)
  15. oracle在运行存储的时候出现:同义词转换不再有效
  16. python 爬虫3 新浪微博 爬虫 实战
  17. 微信域名防封跳转系统的原理,微信域名防封的注意点
  18. CSP202109-4 收集卡牌
  19. LoadBalancerCacheManager not available, returning delegate without caching.
  20. 用Matlab读取、显示并保存图片

热门文章

  1. 浏览器do not track(DNT)
  2. 笑容清新甜美 嗓音轻快动人 冉冉成新一代校园初恋
  3. 设置按住Shift键右击鼠标打开命令行窗口
  4. Unity与iOS原生代码之间的相互调用
  5. 一款功能齐全的开源网盘系统
  6. QQ空间伤感日志_其实放手不是不爱你
  7. 基于Processing的动画交互
  8. 【go语言圣经】练习答案--第一章
  9. 人工智能洗稿-免费自媒体洗稿工具
  10. MYSQL order by 将排序结果赋值到某个字段