当前位置: 首页 > article >正文

(未完)BCNet: Learning Body and Cloth Shape from A Single Image

BCNet: Learning Body and Cloth Shape from A Single Image

摘要

本文提出了一种从单张近正面视角RGB图像自动重建服装和人体形状的方法。为此,我们提出了基于SMPL(Skinned Multi-Person Linear Model,多人线性蒙皮模型)的分层服装表示方法,并创新性地使服装的蒙皮权重与人体网格独立,显著提高了服装模型的表现能力。与现有方法相比,我们的方法支持更多种类的服装,并能恢复更准确的几何形状。为了训练我们的模型,我们构建了两个大规模数据集,包含真实的人体和服装几何形状以及配对的彩色图像。与单一网格或非参数化表示相比,我们的方法可以通过分离网格实现更灵活的控制,使得重新摆姿、服装转移和服装纹理映射等应用成为可能。代码和部分数据可在GitHub上获取。

1. 引言

1.1 研究背景

虚拟试穿、虚拟现实/增强现实(VR/AR)和娱乐等领域需要从简单的输入(如彩色图像)中详细且准确地重建人体和穿着服装的形状。然而,由于人体形状、姿势和服装种类的多样性,这一问题极具挑战性。基于仿真的方法虽然可以探索这一问题,但其解决方案通常耗时且专用性强。本文旨在利用深度神经网络的强大拟合能力,仅从单张近正面视角图像自动重建人体和服装形状。

1.2 研究现状与挑战

近年来,从图像重建人体形状取得了显著进展。常见的方法是推断统计人体模型(如SMPL)的形状和姿势参数。这些方法对不同姿势具有鲁棒性,但重建的几何形状受限于模型空间,无法捕捉复杂的服装形状。为了推断超出人体形状的详细几何形状,一些非参数化表示方法被提出,但这些方法存在细节恢复不足、内存效率低或缺乏语义信息等问题。此外,现有方法中将服装与SMPL点绑定的方式限制了可支持的服装拓扑结构,难以表示宽松服装(如裙子)。

1.3 研究贡献

本文的主要贡献包括:

  • 提出了一种基于SMPL的新型服装表示方法和基于神经网络的方法,可以从单张近正面视角彩色图像重建人体和服装形状。
  • 提出了一种通用的蒙皮权重生成网络,而不是将服装的蒙皮权重与人体网格绑定,使我们的方法能够支持具有不同拓扑结构的服装。
  • 设计了一种完整的算法流程,用于构建不同类型的服装数据集,并将公开提供包含合成图像和服装人体形状的数据集。

2. 相关工作

2.1 无模板的穿衣人体估计

一些基于体素或隐函数的非参数化方法被提出以解决服装的复杂拓扑结构问题。然而,这些方法缺乏语义信息,难以控制重建结果。

2.2 基于模板的穿衣人体估计

基于人体统计模型的方法可以估计裸体形状,但通过在人体模型基础上添加位移向量来表示服装的方法,难以支持宽松服装类型,如裙子。本文提出的方法通过将服装网格与人体网格分离,并独立预测服装的蒙皮权重,解决了这一问题。

2.3 服装数据集构建

现有的服装数据集要么样本数量有限,要么未公开,无法满足我们的需求。因此,我们构建了一个包含多种服装类型、不同尺寸和姿势的数据集。

2.4 服装变形表示

如何表示服装的变形也与我们的工作相关。现有方法通过线性组合预计算的变形或基于身体形状回归服装变形,但这些方法难以处理复杂的服装与人体交互。

3. 算法

3.1 服装模型

我们使用SMPL作为人体模型,并在此基础上定义了服装网格。通过添加线性位移变形和高频细节位移,我们的模型能够独立于人体网格表示服装的形状和变形。此外,我们通过神经网络估计服装的蒙皮权重,使其能够支持更多种类的服装拓扑结构。

3.2 从图像到穿衣人体

给定一张近正面视角的RGB图像,我们的模型估计人体形状、姿势参数和全局平移,以及服装参数。模型由图像编码器、分类模块、蒙皮权重网络和位移网络组成,最终重建穿衣人体的形状。

3.3 蒙皮权重网络

蒙皮权重网络的目标是为任意角色估计蒙皮权重。我们设计了一个基于图注意力网络(GAT)的网络结构,能够独立于网格连接性预测蒙皮权重,适用于不同类型的服装。

3.4 位移网络

位移网络用于回归服装顶点的高频细节位移。我们为每种服装类型训练一个独立的网络,并使用螺旋图卷积来提高回归能力。此外,我们通过图像投影提取局部特征,进一步提升细节恢复能力。

3.5 损失函数

我们采用监督学习的方式训练网络,设计了多种损失函数,包括形状参数损失、几何损失、投影损失、分类损失、穿透损失和蒙皮权重损失,以确保网络能够准确重建人体和服装的形状。

4. 数据集构建

4.1 蒙皮权重数据集

为了训练蒙皮权重网络,我们构建了一个包含中立服装和对应蒙皮权重的数据集。通过计算服装顶点与人体网格的距离和法线角度,我们使用逆距离加权(IDW)方法计算蒙皮权重,并通过拉普拉斯平滑去除噪声。

4.2 合成数据集构建

由于缺乏公开的包含彩色图像和对应人体及服装形状的数据集,我们通过物理引擎合成数据集。合成过程包括服装裁剪模式设计、中立服装合成、姿态服装模拟和图像渲染。我们使用NvFlex和Blender实现这一流程,生成了包含多种姿势和服装类型的训练数据。

4.3 高清纹理数据集

为了弥补合成数据与真实图像之间的差异,我们处理了包含高分辨率纹理的商业3D人物模型数据集。我们通过Mixamo驱动这些模型,并使用优化流程将它们注册到我们的表示中,提取服装纹理并生成高质量图像。

5. 实验

5.1 BCNet分析

我们对BCNet的性能进行了分析,包括蒙皮权重网络的准确性、穿透损失的有效性和位移网络的细节恢复能力。实验结果表明,我们的方法能够准确重建人体和服装的形状,并有效减少穿透问题。

5.2 与现有方法的定量比较

我们在BUFF和Digital Wardrobe数据集上与现有方法进行了比较。结果表明,我们的方法在仅使用单张图像的情况下,能够获得与现有方法相当或更好的重建精度。

5.3 定性结果

我们展示了BCNet在不同数据集上的重建结果,并与MGN方法进行了定性比较。我们的方法能够更准确地恢复人体形状和服装细节,并支持服装转移等应用。

6. 结论

我们提出了BCNet,一种从单张RGB图像自动重建人体和服装形状的新方法。通过将服装与人体网格分离,并独立预测蒙皮权重,我们的方法能够支持更多种类的服装,并实现灵活的控制。实验结果表明,我们的方法在重建精度和应用扩展性方面具有显著优势。我们构建的数据集和提出的BCNet为数字化人体研究提供了新的推动力。


该篇文章的笔记

1. 该篇文章的研究目的

1.1 研究目的

本文旨在从单张近正面视角的RGB图像中自动重建人体和服装的三维形状。这一研究目标主要针对虚拟试穿、虚拟现实/增强现实(VR/AR)以及娱乐等领域的需求,这些领域需要从简单的输入(如彩色图像)中获取详细且准确的人体和服装几何信息。然而,由于人体形状、姿势和服装种类的多样性,这一问题极具挑战性。

2. 该篇文章的研究方法

2.1 研究方法

本文提出了一种基于深度学习的方法,核心是BCNet(Body and Cloth Network)。该方法的主要特点包括:

  1. 分层服装表示:在SMPL模型的基础上,提出了独立于人体网格的服装表示方法,通过蒙皮权重网络和位移网络分别预测服装的蒙皮权重和高频细节。
  2. 数据集构建:为了训练模型,作者构建了两个大规模数据集,包括合成数据集和高清纹理数据集,包含多种服装类型、人体姿势和纹理。
  3. 网络架构:BCNet由图像编码器、分类模块、蒙皮权重网络和位移网络组成,能够从单张图像中预测人体和服装的形状参数,并重建三维几何。

3. 该篇文章的研究内容

3.1 研究内容
  1. 服装模型设计:提出了基于SMPL的分层服装模型,能够支持不同拓扑结构的服装,如上衣、裤子和裙子。
  2. 蒙皮权重网络:设计了一个基于图注意力网络(GAT)的蒙皮权重预测网络,能够为不同类型的服装生成独立的蒙皮权重。
  3. 位移网络:通过图卷积和图像投影特征,训练位移网络以恢复服装的高频细节和大尺度变形。
  4. 数据集构建:构建了包含多种服装类型、人体姿势和纹理的合成数据集和高清纹理数据集,用于模型训练和验证。
  5. 实验验证:通过与现有方法的比较,验证了BCNet在重建精度和灵活性方面的优势,并展示了服装转移等应用。

4. 该篇文章的最大创新点

4.1 最大创新点
  1. 独立蒙皮权重预测:与现有方法将服装与人体网格绑定的方式不同,本文提出了一种通用的蒙皮权重生成网络,使服装的蒙皮权重独立于人体网格。这一设计显著提高了模型对不同拓扑结构服装的支持能力,尤其是宽松服装(如裙子)。
  2. 高频细节恢复:通过位移网络和图像投影特征,能够恢复服装的高频细节和大尺度变形,从而实现更准确的服装形状重建。
  3. 数据集构建:构建了大规模的合成数据集和高清纹理数据集,为模型训练提供了丰富的样本,同时也为后续研究提供了宝贵的资源。

5. 该篇文章给我们的启发

5.1 启发
  1. 独立表示的重要性:本文通过将服装与人体网格分离,并独立预测蒙皮权重,显著提高了模型的灵活性和适用性。这为处理复杂拓扑结构的三维重建问题提供了新的思路。
  2. 数据驱动的细节恢复:通过图卷积和图像投影特征,位移网络能够恢复服装的高频细节。这表明数据驱动的方法在处理复杂几何形状时具有巨大潜力。
  3. 多模态数据的结合:本文结合了合成数据和高清纹理数据进行训练,展示了多模态数据结合在提高模型泛化能力方面的优势。
  4. 应用拓展性:BCNet不仅能够重建人体和服装的形状,还支持服装转移等应用。这表明在三维重建研究中,应注重模型的拓展性和实际应用价值。

以下是按照Markdown代码格式输出的内容,数学公式用$$括起来,数学符号用$括起来:


图例翻译

图 1. 我们提出的网络架构。CNN将图像编码为潜在特征,然后通过全连接层分别得到重建的SMPL参数(形状参数 β ^ \hat{\beta} β^、姿势参数 θ ^ \hat{\theta} θ^、平移参数 t ^ \hat{t} t^)和共享的服装潜在特征 l l l。从 l l l中,我们分别重建服装形状参数 α ^ \hat{\alpha} α^和上下装分类得分 { u ^ , d ^ } \{\hat{u}, \hat{d}\} {u^,d^}。通过分类器和 α ^ \hat{\alpha} α^ β ^ \hat{\beta} β^,我们重建中立的穿衣人体。随后通过位移网络和蒙皮权重网络,分别预测服装顶点位移和蒙皮权重。最后,利用预测的姿势参数 θ ^ \hat{\theta} θ^ t ^ \hat{t} t^ W ^ g \hat{W}_g W^g,将中立人体和服装重新摆姿到目标姿势。

图 2. 我们合成裤子的过程。首先根据中立人体类型生成随机裁剪模式,然后将裁剪线连接到骨架周围并逐渐缩短长度。当所有裁剪线的长度小于阈值时,将裁剪线缝合在一起。为了模拟服装在中立人体上的真实效果,我们对骨架进行膨胀并添加重力。对于姿态服装模拟,我们使用生成的蒙皮权重将中立服装变形到目标姿势,并对身体和服装进行膨胀和重力模拟,以生成最终的姿势服装。

图 3. 我们合成数据集(左侧三个)和高清纹理数据集(右侧三个)的一些示例。

图 4. 两个注册化虚拟角色的示例。我们展示了扫描网格(带纹理和不带纹理)、重建的几何形状以及带纹理的服装。

图 5. 左侧展示了穿透损失的消融研究。示例表明,穿透项(公式 7 7 7)有助于缓解碰撞问题。右侧展示了我们预测的位移结果。对于每个示例,我们分别展示了基础网格、带位移的网格和重新摆姿的网格。为了更好地可视化,我们在第二个结果中展示了两个视角。

图 6. 左侧:在BUFF数据集(灰色)和数字衣橱数据集(白色)上的误差图。从左到右,我们展示了GT网格、我们的结果、Octopus-opt-8的结果和MGN-opt-8的结果(红色表示误差 ≥ 4 \geq4 4cm)。右侧:在MGN数据集上的误差图。从左到右,我们展示了我们的结果、PIFu的结果和DeepHuman的结果。

图 7. 左侧:我们在几个测试图像上重建的人体和服装形状。右侧:与MGN [7]的定性比较。在每组中,分别展示了输入图像、MGN的结果和我们的结果。

图 8. 蒙皮权重网络(SK net)和位移网络(Dis net)的架构。两个网络遵循类似的架构,但配置略有不同。多层变换(MLT)是一个模块,它使用共享的多层感知器(MLP)为每个顶点改变特征维度。残差块(ResBlock)用于提取更深层次的特征,遵循经典设计。

图 9. 我们构建的合成数据集和高清纹理数据集的一些示例。我们展示了每组中的彩色图像和几何形状。前两行是合成数据集的样本,后两行是高清纹理数据集的样本。我们构建的数据集包含各种姿势和服装类型,服装几何形状与对应的图像匹配良好。

图 10. 预测蒙皮权重与真实蒙皮权重之间变形服装的误差图。

图 11. 蒙皮权重网络输入顶点法线的消融研究。左侧是使用真实权重变形的裤子,中间是未将法线作为输入的网络结果,右侧是完整输入的网络结果。没有法线作为输入的预测结果会在模糊顶点处产生显著误差和伪影。

图 12. 在BUFF数据集上与MGN的两个比较结果。每组从左到右分别为参考图像、MGN预测的形状(无后处理优化)和我们的预测结果。可以看到,我们的方法预测的人体形状更接近输入图像。此外,我们的服装能够捕捉输入图像中的尺寸变化,而MGN的预测服装由于与SMPL绑定,限制了其对大位移的表达能力。因此,即使输入图像不同,MGN的结果对于同一服装类型仍倾向于保持相似的风格和尺寸。

图 13. 我们在测试集上的一些重建结果。每组包括输入图像和我们的结果。

图 14. 我们在数字衣橱数据集上的重建结果。我们的方法能够很好地恢复人体形状、姿势和服装类型及形状。

图 15. 我们在真实图像上的一些重建结果。第一行是来自互联网的三张图像,第二行是来自PeopleSnapshot数据集的两张图像。每组包括输入图像和我们的结果。

图 16. 左侧:我们使用第一行的两张输入图像,预测它们的人体形状并交换服装几何形状和纹理。右侧:两个服装转移示例。在每一行中,我们将第一张图像的服装转移到第二张图像上,并在第三列展示了带有纹理的重建形状。

图 17. 更多在测试数据集上的服装转移结果。第一列为目标服装图像,我们将目标图像中的服装转移到四个不同的源穿衣人体图像上。对于每个结果,我们展示了预测的人体和带有纹理的转移服装。

图 18. 服装切换的示例。我们在第一行提供了成对的穿衣人体图像,并在第二行展示了预测的人体和切换后的服装(带纹理)。

图 19. 我们的方法存在一些不足。我们在图中展示了未来工作的三个挑战。A)由于不支持的服装类型导致服装重建错误。B)多层服装被当作单层服装处理。C)对于Kinect v2相机拍摄的两张图像,模型可能产生过度平滑的结果。


表例翻译

表 1. 在我们的测试数据集上,预测形状与真实形状之间的平均欧几里得距离(MED,单位:厘米)。对于服装,我们分别报告了有(灰色)和没有(白色)位移模块的误差。

数据集上衣裤子裙子人体
合成数据集 0.91 0.91 0.91 0.75 0.75 0.75 0.87 0.87 0.87 1.57 1.57 1.57
1.72 1.72 1.72 1.59 1.59 1.59 2.46 2.46 2.46
高清纹理数据集 1.71 1.71 1.71 1.42 1.42 1.42 1.65 1.65 1.65 2.93 2.93 2.93
1.97 1.97 1.97 1.72 1.72 1.72 1.87 1.87 1.87

表 2. 在BUFF粗A字姿势数据集(灰色)和数字衣橱数据集(白色)上的误差(单位:厘米)。

方法上衣裤子总体Chamfer距离
MGN-opt-8 1.63 1.63 1.63 1.91 1.91 1.91 1.82 1.82 1.82 1.91 1.91 1.91
MGN-8 1.78 1.78 1.78 2.13 2.13 2.13 1.99 1.99 1.99 2.08 2.08 2.08
Octopus-opt-8 1.40 1.40 1.40 1.35 1.35 1.35 1.31 1.31 1.31 1.41 1.41 1.41
Octopus-8 1.54 1.54 1.54 1.74 1.74 1.74 1.70 1.70 1.70 1.76 1.76 1.76
我们的方法 1.07 1.07 1.07 1.35 1.35 1.35 1.35 1.35 1.35 1.34 1.34 1.34
PIFu 1.59 1.59 1.59 1.37 1.37 1.37 1.85 1.85 1.85 1.61 1.61 1.61
DeepHuman 2.38 2.38 2.38 2.46 2.46 2.46 3.15 3.15 3.15 2.98 2.98 2.98
我们的方法 1.44 1.44 1.44 1.78 1.78 1.78 1.80 1.80 1.80 1.77 1.77 1.77

1 SMPL模型的公式

公式
M b ( β , θ ) = W ( T b ( β , θ ) , J ( β ) , θ , W b ) , T b ( β , θ ) = B + B s β + B p θ M_b(\beta, \theta) = W(T_b(\beta, \theta), J(\beta), \theta, W_b), \quad T_b(\beta, \theta) = B + B_s\beta + B_p\theta Mb(β,θ)=W(Tb(β,θ),J(β),θ,Wb),Tb(β,θ)=B+Bsβ+Bpθ

讲解

  • 设计思路:SMPL(Skinned Multi-Person Linear Model)是一个参数化的人体模型,通过形状参数 β \beta β和姿势参数 θ \theta θ来生成人体网格。公式中, M b M_b Mb表示人体网格, W W W是蒙皮操作, T b T_b Tb是模板网格的变形, J J J是骨架, W b W_b Wb是蒙皮权重。
  • 意义:该公式描述了如何通过参数化的方式生成人体网格,为后续的服装建模提供了基础。

2 服装模型的公式

公式
M g ( α , β , θ , D ) = W ( T g ( α , D ) , J ( β ) , θ , W g ( α , β ) ) , T g ( α , D ) = G + B g α + D M_g(\alpha, \beta, \theta, D) = W(T_g(\alpha, D), J(\beta), \theta, W_g(\alpha, \beta)), \quad T_g(\alpha, D) = G + B_g\alpha + D Mg(α,β,θ,D)=W(Tg(α,D),J(β),θ,Wg(α,β)),Tg(α,D)=G+Bgα+D

讲解

  • 设计思路:服装模型 M g M_g Mg基于SMPL模型,但独立于人体网格。公式中, α \alpha α是服装的形状参数, G G G是服装的模板网格, B g B_g Bg是服装的线性变形, D D D是高频位移, W g W_g Wg是服装的蒙皮权重。
  • 意义:该公式描述了如何通过参数化的方式生成服装网格,并使其能够独立于人体网格进行变形,从而支持更复杂的服装拓扑结构。

3 蒙皮权重网络的公式

公式
L w s = ∑ i = 1 ∣ V g ∣ ∑ j = 1 24 ω ^ i j log ⁡ ω ^ i j ω i j L_{ws} = \sum_{i=1}^{|V_g|} \sum_{j=1}^{24} \hat{\omega}_{ij} \log \frac{\hat{\omega}_{ij}}{\omega_{ij}} Lws=i=1Vgj=124ω^ijlogωijω^ij

讲解

  • 设计思路:蒙皮权重网络的目标是预测服装顶点的蒙皮权重。公式中, ω ^ i j \hat{\omega}_{ij} ω^ij是预测的蒙皮权重, ω i j \omega_{ij} ωij是真实的蒙皮权重, ∣ V g ∣ |V_g| Vg是服装顶点的数量,24是骨架的关节数量。
  • 意义:该公式使用Kullback-Leibler散度来衡量预测蒙皮权重与真实蒙皮权重之间的差异,从而优化网络的预测能力。

4 位移网络的公式

公式
L D = ∑ i = 1 ∣ V g ∣ ∣ D ^ i − D i ∣ + ∑ i = 1 ∣ V g ∣ ∥ L ^ i − L i ∥ 2 L_D = \sum_{i=1}^{|V_g|} |\hat{D}_i - D_i| + \sum_{i=1}^{|V_g|} \|\hat{L}_i - L_i\|^2 LD=i=1VgD^iDi+i=1VgL^iLi2

讲解

  • 设计思路:位移网络的目标是预测服装顶点的高频位移。公式中, D ^ i \hat{D}_i D^i是预测的位移, D i D_i Di是真实的位移, L ^ i \hat{L}_i L^i是预测的拉普拉斯坐标, L i L_i Li是真实的拉普拉斯坐标。
  • 意义:该公式使用L1损失和L2损失来衡量预测位移与真实位移之间的差异,从而优化网络的细节恢复能力。

5 损失函数的公式

公式
L t o t a l = L B P + L G + L J 3 D + L D + L B 2 D + L G 2 D + L c l a s s + L i n t e r + L w s L_{total} = L_{BP} + L_{G} + L_{J3D} + L_{D} + L_{B2D} + L_{G2D} + L_{class} + L_{inter} + L_{ws} Ltotal=LBP+LG+LJ3D+LD+LB2D+LG2D+Lclass+Linter+Lws

讲解

  • 设计思路:总损失函数 L t o t a l L_{total} Ltotal是多个损失函数的组合,用于监督模型的训练。公式中, L B P L_{BP} LBP是形状参数损失, L G L_{G} LG是几何损失, L J 3 D L_{J3D} LJ3D是关节损失, L D L_{D} LD是位移损失, L B 2 D L_{B2D} LB2D L G 2 D L_{G2D} LG2D是投影损失, L c l a s s L_{class} Lclass是分类损失, L i n t e r L_{inter} Linter是穿透损失, L w s L_{ws} Lws是蒙皮权重损失。
  • 意义:该公式通过多种损失函数的组合,确保模型能够准确地重建人体和服装的形状,同时避免穿透问题和优化蒙皮权重。

6 穿透损失的公式

公式
L i n t ( P , Q ) = ∑ ( i , j ) ∈ C ( P , Q ) ReLU ( − n j T ( p i − q j ) ) / N L_{int}(P, Q) = \sum_{(i,j) \in C(P, Q)} \text{ReLU}(-n_j^T (p_i - q_j)) / N Lint(P,Q)=(i,j)C(P,Q)ReLU(njT(piqj))/N

讲解

  • 设计思路:穿透损失的目标是减少重建的人体和服装之间的穿透问题。公式中, P P P Q Q Q是两个网格, C ( P , Q ) C(P, Q) C(P,Q)是有效的对应点对, n j n_j nj是点 q j q_j qj的法线, p i p_i pi q j q_j qj是对应的顶点, N N N是有效点对的数量。
  • 意义:该公式通过计算顶点之间的距离和法线角度,惩罚穿透的顶点,从而减少重建结果中的不真实现象。

7 蒙皮权重网络的输入特征

公式
Input = [ coordinate , normal , distance ] \text{Input} = [\text{coordinate}, \text{normal}, \text{distance}] Input=[coordinate,normal,distance]

讲解

  • 设计思路:蒙皮权重网络的输入特征包括顶点的坐标、法线和到每个关节的距离。这些特征用于计算顶点的蒙皮权重。
  • 意义:通过这些特征,网络能够更准确地预测顶点的蒙皮权重,从而提高服装的变形效果。

8 位移网络的输入特征

公式
Input = [ coordinate , normal , distance , texture ] \text{Input} = [\text{coordinate}, \text{normal}, \text{distance}, \text{texture}] Input=[coordinate,normal,distance,texture]

讲解

  • 设计思路:位移网络的输入特征包括顶点的坐标、法线、到每个关节的距离和图像纹理。这些特征用于预测顶点的高频位移。
  • 意义:通过这些特征,网络能够更准确地恢复服装的细节和大尺度变形,从而提高重建结果的真实感。


http://www.kler.cn/a/559736.html

相关文章:

  • 亲测Win11电脑可以安装LabVIEW的版本,及2015、2018、2020版本直接的区别
  • 第二周补充:Go语言中取地址符与fmt函数详解
  • 跟着李沐老师学习深度学习(十四)
  • 记浙江大华校招Java面试
  • DDD - 整洁架构
  • 代码随想录刷题day29|(栈与队列篇:队列)225.用队列实现栈
  • dockerfile构建haproxy
  • 【SpringMVC】概述 SSM:Spring + SpringMVC + Mybats
  • 如何使用Tabby在Windows上远程ssh连接内网Linux终端无需公网IP
  • C 语言文件操作
  • nim游戏及其进阶 [SDOI2011] 黑白棋 [SDOI2019] 移动金币
  • 使用docker开发镜像编译
  • 异常处理在 Promptic 中怎么实现?
  • Android 串口通信
  • 【前端进阶】01 重识HTML,掌握页面基本结构和加载过程
  • C语言多人聊天室 ---s(服务端)
  • 哈希表入门到精通:从原理到 Python 实现全解析
  • PcVue : 点亮马来西亚砂拉越偏远村庄
  • Windows 下 Visual Studio Code 常用快捷键指南
  • Docker部署中SQLite数据库同步问题解析