迈向人工智能Fashion Design(一)- 服装制版模拟

迈向人工智能Fashion Design(一)- 服装制版模拟

引言

这年头,似乎只要包含智能自动化过程的软件都可以叫人工智能,但其实今天我们要探讨的具体来说是计算机辅助制造(Computer-Aided Design,CAD)。所谓CAD,简单来说就是利用计算机的数值模拟、决策优化、人机交互等技术,让人们的生产方式变得更加轻松高效。可能大家印象中的CAD还是来源于本科时《工程图学》这门课,用来辅助机械设计和生产过程。但其实这个概念早已在更多的领域蔓延开来,比如建筑设计、美术设计、服装设计等。这也是资本追逐的方向之一,因为它会带来生产成本的降低,同时也意味着大批量生产更高品质产品的可能性,一不小心还会是革命性的,和最近讨论很多的“人工智能未来可能会让越来越多的人下岗”是一个道理。

笔者有幸在硕士期间遇到了一位少女心的导师,接触了很多有关服装设计CAD的研究,很想和大家分享一下,毕竟穿衣也是日常生活中很常见的一个话题。那首先,我们就来谈一谈服装设计过程中极具技术含量,同时也是非常耗时耗材的一个过程——服装制版,以及现有的CAD技术是如何去辅助它的。

传统的服装设计过程

传统的服装设计流水线主要分为三块:创作设计(款式图,包括款式、面料、色彩等等的表达)、结构设计(也叫制版,确定每个部位的具体规格尺寸)、工艺设计(也叫车位,一件成品的缝制过程)。制版在其中起到了承上启下的作用,它将设计师的设计理念转化为具体的生产指令,使得衣服能够真正被制作出来,并且既美观又舒适。[百度百科]

制版的难点在于,要根据设计师描绘的穿在人身上的服装,确定它是由哪几块平面布料所缝制成的。这其中涉及到的变量很多,比如平面布料的数量、形状,以及它们之间的缝合关系和缝合方式等。

以数学的角度来说,制版师所操作的平面布料,和他想要验证的穿在人身上的服装,都不是在同一套参数空间里。所以制版师们往往是先从一些大概估计形状的平面布料开始,借助小钉把布料往人体模型身上裹(drape),做出想要得到的立体效果,然后用剪刀剪去多余的布料,或者如果这块布料不够大,就换更大的布料来重新尝试,如此往复,从而最终得到各布料的形状和缝合方式。由此可见,这项工作需要非常丰富的经验与十足的耐心,而且前期培训成本也很高。

CAD制版

现在深度学习这么火,可能大家首先想到的解决方法就是,训练一个神经网络吧,输入设计师草图,输出制版,done!或许大概有可能可以吧?

要知道,深度卷积神经网络(CNN)是一种结合了卷积(convolution)操作的多层神经网络(neural network),适用于图像数据的表达与映射。那制版数据应该用什么神经网络来学习呢?即使制版数据也能用图像表达,它与设计图之间的映射也是具有非常多歧义和不确定因素的,而且上哪去找上亿对这样的数据?图像到图像的映射,即使是目前最先进的研究成果GAN生成的图像也还是有些许瑕疵。我们如何能保证这种瑕疵在制版数据中一定只是体现在衣服的外型上?能不能缝得起来都不好说!

CAD并不是这个理念,它可以说是介于纯手工和纯自动之间的,没有把人完全排除到生产过程之外,而是将一些有确定解,而且又耗时耗材的过程自动化,把那些和设计与情感相关的过程仍然留给设计师来决定,并辅以友好的用户界面,让人们能将更多的精力放在设计而不是苦力上,就如同我们常用来修图的PS、美图秀秀等软件。

于是,在2005年就出现了这么一篇文章 [Volino et al. 2005],讲述了结合物理模拟和人机交互技术来辅助制版过程的可能性,同时也催生了OptitexPDSBrowzwearMarvelous Designer等一系列软件以及对相关问题的研究。

这类软件借助物理模拟技术来给出在特定布料材质、形状、数量和缝合设置的情况下,衣服穿在一个特定的模特身上会是什么样子(用计算机模拟人穿一件衣服的样子,可以怎样实现?这个问题对此也有些讨论)。并提供平面布料的形状编辑交互,可以让制版师任意编辑平面布料形状,并且实时地得到3D效果反馈,大大方便了制版过程。在此之中,科研人员在布料的物理模拟方法上的持续贡献功不可没。

其中Senstive Couture [Umetani et al. 2011] 用非线性函数的线性逼近思想,使得平面布料的形状编辑,能够直接近似地先反映到模拟的3D衣物上去,而不是重新从初始平板状态开始模拟新的布料缝制成的衣服,从而进一步降低了制版耗时。

具体地,平面布料和3D衣物都是以三角形网格(triangle mesh)来表示,前者的采样点是二维的,而后者的采样点是三维的。如果我们把平面布料和3D衣物两个mesh上的所有采样点按同样的顺序连接在一起写成两个向量 X \in \mathbb{R}^{2n}x \in \mathbb{R}^{3n}n 为采样点个数),物理模拟则可以简单地理解为一个解方程组的过程,其未知变量为 x ,也就是3D衣物的形状和位置,方程组为 R(X, x) = \mathbf{0} ,即3D衣物受力平衡(衣服穿在身上的样子不就是当衣服自身重力、布料内力、和人体对衣物的摩擦与支持力相互平衡的时候的样子吗?) R(X, x) \in \mathbb{R}^{3n} 为3D衣物每个采样点所受合力连接成的向量,由平面布料和3D衣物的形状与位置共同决定,是它们的非线性方程组,所以求解过程需要用到数值迭代方法。

假设某时刻物理模拟完成,平面布料和相应的试穿结果分别为 X_0x_0 。此时用户对平面布料进行了编辑,使得它由 X_0 变为 X_0 + \Delta X ,那么就得再次开始物理模拟。如果从头开始,肯定是不划算的,所以很直接的想法是从 (X_0 + \Delta X, x_0) 开始。但是这样的话3D衣物的受力会很不正常,不是极度地被拉伸就是极度地被压缩,这会导致求解的不稳定。

Sensitive Couture的想法就是暂时把 R(X, x) 当作一个线性函数,这样就能通过求解线性方程组 \nabla_x R (X_0, x_0) \Delta x = -\nabla_X R (X_0, x_0) \Delta X 直接求出一个近似的与X_0 + \Delta X 平衡的3D衣物x_0 + \Delta x 了,然后从这里开始重新模拟,不仅受力更加正常,求解也会更快完成(收敛)。

物理模拟的耗时在很大程度上取决于衣物mesh上采样点的数量,那如何在尽可能不破坏模拟效果的情况下减少采样点呢?ArcSim [Narain et al. 2012] 就是着眼于这样一个问题。他通过每个时刻对3D衣物上每一点的受理情况的分析,判断3D衣物在接下来的模拟中哪些部分会很平整,哪些部分会更容易弯曲并产生褶,来进行自适应密度的采样。即只在容易产生褶的地方进行比较精细的采样,而趋于平整的区域则使用较粗糙的采样,于是便尽可能降低了采样点数量,减小了方程组的规模,同时也就加快了物理模拟过程。

回到CAD软件,要想使用它们来设计虚拟衣物或者制版,还是需要很多的专业的制版知识的,否则你不会知道要怎么去调整布料。即使是专业人员,也还是需要好几个来回才能做出理想的效果。所以,其实它们只是把制版过程从现实生活中搬到了电脑上,而并没有给出进一步的辅助。比如它们并没有提供模块化的编辑操作,来方便地为任意长度的袖子、任意形状的裙子等制版。以及编辑和结果验证还是分别在两个参数空间,为什么不能提供更丰富的直接在3D空间的编辑操作呢?

结语

相信看到这里,大家对CAD软件中的模块和相应技术都具有了一定的了解:现实生活中的实践过程往往由物理模拟技术来进行还原,而对实践的人为操作则由人机交互技术来实现。另外,我们之后提到的模块化操作功能,就需要数学优化来建模并求解了。

事实上,这些软件目前只是在虚拟服饰的制作中应用得很成熟,涉及到真正的服装设计,可能更多还是应用于教学,或者给予制版师一个更好的初始尝试计划。因为想要使计算机模拟的结果精确地符合现实情形,不仅需要很大的计算量,而且还需要很精确的参数设置,尤其是布料的各种材质属性,以及碰撞处理等。但服装设计CAD这个趋势还是很明显的,学术界目前一直有稳定的跟进工作,我们在本系列的后续文章中会陆续谈到。工业界方面,据笔者了解,哥大的Sensitive Couture制作团队也加入了这个领域的创业大军之中。

下期我们谈一谈为制版过程提供更加模块化操作的研究。更新频率暂时计划为每月一篇。

参考文献

[百度百科] 服装制版,百度百科词条

[Volino et al. 2005] Volino P, Cordier F, Magnenat-Thalmann N. From early virtual garment simulation to interactive fashion design[J]. Computer-aided design, 2005, 37(6): 593-608.

[Umetani et al. 2011] Umetani N, Kaufman D M, Igarashi T, et al. Sensitive couture for interactive garment modeling and editing[J]. ACM Trans. Graph., 2011, 30(4): 90:1-90:12.

[Narain et al. 2012] Narain R, Samii A, O'Brien J F. Adaptive anisotropic remeshing for cloth simulation[J]. ACM transactions on graphics (TOG), 2012, 31(6): 152.


_(:3」∠)_ _(・ω・”∠)_ _(:з)∠)_ ∠( ᐛ 」∠)_ _(:зゝ∠)_
请毫不犹豫地关注我们:
我们的网站:GraphiCon
知乎专栏:GraphiCon图形控
微信公众号:GraphiCon

如果你有什么想法,建议,或者想加入我们,你可以:
给我们发邮件:hi@graphicon.io
加入我们的QQ群:SIQGRAPH(342086343)
加入我们的slack群:GraphiCon
GraphiCon长期接受投稿,如果你想投稿给我们可以通过上面的方式联系我们!

本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,如需转载请署名。

编辑于 2017-12-12 14:13