Journal

Automatic Digital Garment Initialization from Sewing Patterns

Chen Liu, Weiwei Xu, Yin Yang, Huamin Wang

Zhejiang University; University of Utah

问题背景

随着数字时尚和生成式 AI 的发展,数字缝纫样板(sewing pattern)越来越容易获取。一个自然的诉求是:能否全自动地把一份数字样板转换成穿在人体化身上、合体的三维数字服装?

核心困难在于布料仿真的非唯一性——仿真目标函数存在大量局部极小值。作者用一个直观例子说明:一条布带从两端受压时,既可以向前弯也可以向后弯,产生不同的折叠结果。当仿真目标里再加入碰撞势能时,这种非唯一性会被进一步放大,导致各种视觉瑕疵:

  • 布片自身折叠(self-folding);
  • 布片与人体穿插(cloth-body intersection);
  • 布片被错误地卡在人体之外(misplaced piece)。

缓解局部极小值最自然的方法是提供一个良好的初始化:让缝纫布片无折叠、无穿插地环绕在人体周围,从而让后续的物理仿真能够顺利把它们缝合成合理的服装。这种无穿插的初始化对于依赖连续碰撞检测(CCD)和内点法(IPC)的仿真器尤为重要。

以往工作大多聚焦于缓解仿真的数值不稳定性,而忽略了初始化本身的难度。把布片分配到身体部位相对容易(可从样板形状和标签自动提取或人工指定),但一旦分配完成,确定每个布片的初始形状就变得非常复杂——因为布片是可形变的,极易产生过度折叠和穿插。传统做法是把布片放到身体部位的预定位置,再投影到预定义的柱面或平面上,但这套方法在面对小布片、多层结构、非对称缝纫边界(如抽褶 gathering)的复杂服装时需要大量人工干预。

核心方法

作者提出一个混合式自动初始化系统,结合 AI 分类、启发式规则和数值优化,把用户干预降到最低。系统的核心是分阶段(phased)方法:一次只初始化一个(或一小组)布片,并在每个阶段逐步引入目标势能。这种分阶段策略带来三个优势:

  • 高效:每次只优化一小组布片;
  • 方便处理布片间穿插:可以根据布片排列顺序来解决穿插;
  • 用户友好:允许在必要时插入人工干预,尤其当输入样板不完美时。

系统由三大流程组成,其核心是一个选择—排列(selection-arrangement)循环,顺序排列布片直到全部完成:

排列顺序的三条关键洞察

  • 自上而下排列:从上到下排列,让已初始化的部分服装能有效对抗重力;
  • 优先大布片:大布片显著影响后续小布片的排列;
  • 躯干附近的布片早排列:颈部、腰部等躯干周围的布片先排,便于其他布片围绕身体生长,避免被错误定位。

背景定义

在二维样板空间中,两个布片 \(P\) 和 \(P'\) 通过一对顶点 \(\{i, i' \mid i \in P, i' \in P'\}\) 建立缝纫关系,它们由一根参考长度为零的”缝纫串”(sewing string)连接,意味着在最终三维服装中这两个顶点会重合。若一条边 \(e = \{i, j\}\) 的两个端点都连向 \(P'\),则称其为缝纫边界边,所有这样的边构成 \(P\) 的缝纫边界 \(\partial P\)。样板中的省道(dart)特征则被处理为内部弹性弹簧,贡献形变势能。

技术细节

1. 播种(Seeding)

播种流程既要确定种子布片及其位置,又要初始化种子形状。作者的关键观察是:颈部、腰部或胸部布片往往是更有效的种子

AI 种子选择:对每个布片,用径向采样(radial sampling)构造形状特征,但仅靠形状不足以判别类别(很多布片形状相似却对应不同部位)。因此还编码了它与邻居布片的缝纫关系特征。缝纫关系特征定义为:

\[S_{P \to P'} = \sum_{e' \in \partial P'} C(e', P)\, U(e')\]

其中 \(U(e')\) 是 \(P'\) 中边 \(e'\) 下方的列面积,\(C(X, Y)\) 是判断集合 \(X\) 中每个顶点是否都与 \(Y\) 有缝纫串连接的指示函数。直观上,\(S_{P \to P'}\) 大意味着 \(P\) 位于一个”厚重”布片 \(P'\) 之上,暗示 \(P\) 可能是颈/腰部布片。该系统建立在两层图注意力网络(GAT)之上:第一层用注意力机制聚合布片自身及周围的形状与缝纫关系特征,第二层作为分类器,用 softmax 预测布片属于七类之一(颈、腰、前胸、后胸、前盆、后盆、其他)。

人工种子选择:若 AI 选择失败或明显错误,用户可从系统提供的 15 个预定义位置中手动指定种子。

种子初始化:选定种子后,通过求解优化问题初始化其在人体周围的形状 \(x \in \mathbb{R}^{3N}\):

\[F_{\text{init}}(x) = F_{\text{cent}}(x) + F_{\text{up}}(x) + F_{\text{dist}}(x) + F_{\text{def}}(x)\]

  • 居中势能 \(F_{\text{cent}}(x) = \frac{1}{2} k_{\text{ctr}} \lVert x_c - x_{0c} \rVert^2\):把种子几何中心拉向指定身体部位位置;
  • 向上势能 \(F_{\text{up}}\):维持种子朝上的朝向;
  • 身体距离势能 \(F_{\text{dist}}\):把种子推离身体并保持指定的布体距离 \(D\),并对朝向身体的顶点禁用该势能,防止陷入自折叠局部极小;
  • 形变势能 \(F_{\text{def}}\):用弹簧模型限制平面形变,用二次弯曲模型限制弯曲形变,并刻意设置较高的弯曲刚度以防止细节皱纹的自穿插。

2. 布片选择(Selection)

用启发式打分函数选出下一个待排列布片:

\[H(P) = \frac{\sum_{e \in \partial P} C(e, \bar{P})\, L_{0e}}{\sum_{e \in \partial P} L_{0e}} + s_a A(P) + s_b S_{\bar{P} \to P}\]

其中 \(\bar{P}\) 是已排列布片集合,\(L_{0e}\) 是边 \(e\) 的参考长度,\(A(P)\) 是布片参考面积。三项分别:优先缝纫边界大部分已被 \(\bar{P}\) 确定的布片、优先大布片、优先能从顶部良好支撑的布片(避免因缺乏顶部支撑而在重力下过度下垂)。

多布片选择:出于两个原因需要同时排列多个布片——(1) 一个布片可能因不同面料被拆分成多个组件(如风衣),需要作为整体排列;(2) 并行化考虑。系统平均每个布片仅 197 个顶点,一半以上不足 100 个顶点,逐个排列无法发挥并行能力。因此系统迭代地累加布片直到顶点总数达到上限(设为 1024)。实验表明该做法减少 60%~80% 的计算时间。

3. 布片排列(Arrangement)

把新选布片的排列表述为优化问题:

\[F(x) = F_{\text{def}}(x) + F_{\text{sew}}(x) + F_{\text{ext}}(x) + F_{\text{body}}(x) + F_{\text{self}}(x)\]

由于直接求解易陷入局部极小,作者采用分阶段方法,分三步逐步引入新势能:

(a) 初始对齐(Initial Alignment):先用仿射变换 \(\{t, A\}\) 最小化 \(P\) 与 \(\bar{P}\) 之间的缝纫间隙:

\[\{t, A\} = \arg\min \sum_{\{i,j\} \in S,\, i \in P,\, j \in \bar{P}} \lVert t + A r_i - x_j \rVert^2\]

采用形状匹配的闭式解求解。随后用截断目标 \(F(x) = F_{\text{def}} + F_{\text{sew}} + F_{\text{ext}}\) 优化形状,其中缝纫势能 \(F_{\text{sew}} = \frac{1}{2} k_{\text{sew}} \sum \lVert x_i - x_j \rVert^2\),外部势能 \(F_{\text{ext}}\) 防止已排列布片离开其位置。问题域取 \(P\) 与 \(\bar{P}\) 缝纫边界的两环邻域之并集。

(b) 身体穿插移除(Body Intersection Removal):加入身体排斥势能:

\[F_{\text{body}}(x) = \frac{1}{2} k_{\text{body}} \sum_i \left( \min(\phi(x_i) - \epsilon, 0) \right)^2\]

其中 \(\phi\) 是身体的有向距离场(用快速行进法构造),\(\epsilon = 4\text{mm}\)。若一次性对所有顶点激活排斥,容易陷入带穿插的局部极小。作者的关键思路是:与 \(\bar{P}\) 相连的缝纫边界顶点不存在穿插问题,因此从缝纫边界出发用广度优先搜索逐步激活各顶点势能,模拟现实中穿衣的过程——身体伸展时衣服解缠并覆盖身体。

(c) 形状精修(Shape Refinement):解决布料自穿插并进一步精修形状。作者只处理布片间(inter-piece)穿插,假设 \(P\) 与已排列 \(\bar{P}\) 形成”内外关系”(\(P\) 应位于 \(\bar{P}\) 法向的外侧),对每个顶点及其在 \(\bar{P}\) 中最近三角形施加自排斥势能:

\[F_{\text{self}}(x) = \frac{1}{2} k_{\text{self}} \sum_{i \in P} \left( \min\left( (x_i - x_j) \cdot n(t) - \epsilon, 0 \right) \right)^2\]

其优势是无需在排列阶段完全消除穿插(那需要很大的 \(k_{\text{self}}\) 和大量计算),残余穿插可在后处理中解决,因为布片排列顺序一旦确定,内外关系就不再改变。精修分两阶段:先引入自排斥并把弯曲刚度降回默认值让布料更易弯曲;再加入温和重力项让布料自然下垂,并把问题域扩展到缝纫边界的 16 环邻域,以精修抽褶等边界形状。

终止条件:通过三条准则评估排列质量并决定是否重访(revisit):

\[\theta_{\text{in}} = \min_{\{t_0,t_1\} \in N} n(t_0) \cdot n(t_1) < \theta^0_{\text{in}}\]

  • \(\theta_{\text{in}}\) 检测布片是否过度折叠或自穿插——若成立说明迭代次数不足,重复排列;
  • \(\theta_{\text{out}}\) 检测两相邻布片沿缝纫边界是否过度折叠(也可能是裆部等有意设计),若成立只重访一次并接受结果;
  • \(s_{\text{max}}\) 检测弹簧边是否被过度拉伸(通常源于布体穿插),若成立则扩充选择集(纳入邻居布片)后重访。

后处理

系统还提供后处理:用小步长和更大排斥强度对整件服装做准静态仿真,让服装在重力下稳定、消除残余穿插,并把身体调整到目标姿态(若不同于 A-pose)。

系统假设

身体需已绑定并预定义各部位位置、处于双臂外展 50° 的 A-pose;样板需包含完整缝纫关系、被降采样到平均顶点间距 20mm 的均匀低分辨率;每个布片需背向身体、在样板空间中直立朝向。

实验结果

系统完全在 CPU 上实现(保证跨硬件兼容),求解器采用带 Jacobi 预条件和 Chebyshev 加速的并行梯度下降(\(\alpha = 0.4\),\(\rho = 0.9994\)),所有例子使用一致参数。

  • 数据集与训练:为训练分类网络,收集了 23,276 份缝纫样板(涵盖裤装、连衣裙、衬衫、外套等),每份都带缝纫关系并按身体部位标注。80% 训练、20% 测试。训练用 AdamW(初始学习率 \(5 \times 10^{-5}\)),在两块 RTX 4090 上跑 90,000 次迭代、约 11 小时。
  • 评测规模:用 21 份样板、6 种体型评估。降采样后顶点数 1.5K~23K,布片数 7~358,平均每片 197 顶点,约 52% 的布片顶点数不超过 100。
  • 效率:排列流程是最耗时的,其中初始对齐和形状精修最贵。52% 的例子只需 0 或 1 次重访,仅 10% 需要 2 次以上。多数例子可在 10 秒内完成;图 1 的被子外套(358 片)可在 17 秒内完成无折叠无穿插的初始化。
  • 种子检测:数据集中 86% 的样板含颈/腰部布片。系统检测颈或腰部布片的成功率 96%,胸部布片 89%,整体识别率约 95%。分析表明颈、腰部布片作为种子比胸部及其他更有效。
  • 失败分析:失败分两类——(1) 无效播种导致的重大瑕疵(无法通过简单人工干预修复,需重选种子),21 件中有 2 件(被子外套、吊带裙)需人工重选;(2) 轻微瑕疵(布片间穿插、布片错位、布片内穿插),81% 的服装无轻微瑕疵,其余可通过简单人工操作修复。
  • 总体成功率:用自动选种,15/21 件服装无任何重大或轻微瑕疵。结合 95% 的种子检测率,估计系统整体成功率约 68%,其余情况也可通过简单用户操作解决。

贡献与局限

主要贡献

  1. 播种:训练分类网络自动选择种子布片,并用几何优化初始化种子形状;关键观察是颈/腰部布片是更有效的种子。
  2. 选择:提出选择下一布片的启发式函数,并给出同时排列多个布片的判据及自动检测—合并算法。
  3. 排列:将布片排列表述为优化问题,用分阶段引入势能的方式化解局部极小,并给出排列质量评估准则以触发重排。

局限

  • 系统对身体和样板输入有严格要求(A-pose、完整缝纫关系、直立朝向、背向身体等)。”布片需背向身体”的要求与内衬、领子等设计相矛盾,目前靠预/后处理翻转朝向来缓解,破坏了全自动流程。
  • 即便满足要求,样板缺失颈/腰/胸部布片时的无效播种仍可能导致失败;初始形状可能残留轻微瑕疵。
  • 使用降采样网格和有向距离场,未考虑与指尖、发丝等精细身体部位的穿插。
  • 尚未测试面向类人或动物身体设计的服装。

未来工作:用更多服装案例和多样人体化身验证系统;利用 AI 模型降低对种子选择和排列顺序的依赖;去除样板必须包含完整缝纫关系的要求,以减轻数字打版师和样板生成算法的负担。