蒙版对于虚拟试穿任务很重要

社区文章 发布于2025年1月16日

大约两个月前,当 Flux Fill 刚刚发布时,我们开源了一个基于 VTON 的虚拟试穿模型,并取得了令人满意的成果 CATVTON-FLUX。在接下来的时间里,我们进行了大量的实验和尝试。我们希望将这些训练经验记录下来,为未来可能需要的人提供参考。

关于 Flux Fill 的思考

说实话,Flux Fill 并不是什么神秘的方法。有趣的是,即使不经过训练,Flux Fill 在大多数情况下也能取得相当不错的效果。我们的训练工作更像是解决了“最后一公里”的问题。在实践中,我们发现基本上所有的训练都能在仅仅 5000 步(批大小=1,学习率=1e-5)的情况下取得良好效果。这让我们不禁思考:我们的训练工作究竟有多重要?

微调与 LoRA 的对比

在我们的实验中,我们发现微调和 LoRA 在最终生成的图像中存在显著差异。尽管 LoRA 能够完成一些虚拟试穿任务,但在处理复杂服装,尤其是在保留文字等细节方面,其表现不如微调。

蒙版处理的重要性

在 VTON 训练时,我们使用了 VTON 数据集中预处理好的蒙版区域,并取得了不错的效果。然而,当我们尝试其他数据集时,问题就出现了。在没有 VTON 那样成熟的分割方法的情况下,我们发现蒙版的选择对最终结果有巨大的影响。

我们尝试使用 SAM2 进行服装分割,但效果并不理想。训练出的模型会过于贴合蒙版形状,导致一个严重问题:长袖只能变成长袖,短袖只能变成短袖。更糟糕的是,手绘蒙版会导致最终生成的图像出现严重错误。

经过反复实验,我们意识到一个关键点:蒙版预处理区域需要尽可能大。服装蒙版不应仅仅框住服装本身,而需要为不同的服装替换留出足够的绘制空间。然而,这又带来了新的问题:如果重绘区域过大,会导致训练不稳定。

为了解决这个问题,我们最终采用了 OpenPose 和 SAM2 相结合的方式来重绘人体四肢。我们特别注意确保绘制的蒙版完全覆盖肢体,这样做是为了抵消不同服装风格的影响。例如,对于短袖服装,我们需要确保其蒙版中没有短袖或长袖的痕迹。因为如果蒙版本身包含了短袖信息,模型就会倾向于根据此信息生成短袖,影响试穿的准确性。

这一原则也适用于下装处理。对于同一个模型,无论是长裤、短裤还是裙子,它们的蒙版都应基本保持一致。如果你能从蒙版中看出是裙子还是裤子,那么最终生成的服装形态就会被蒙版主导,而不是由服装本身决定。这就是为什么蒙版需要尽可能通用,尽量隐藏所有服装形态信息。

当然,这种方法需要很好地平衡。蒙版不应大到需要生成不必要的信息,例如人脸或背景。这需要在实践中不断调整和平衡。

数据集的重要性

我们尝试了许多数据集,发现 VTON 和 DressCode 是非常优秀的数据集。如果一个数据集的准确性没有达到这两个数据集的水平,那么用它来训练对模型来说将是毁灭性的。你会发现整个模型的精度会直线下降,Flux Fill 自身的能力也会严重受损。因此,如果有人想使用特定的训练集进行训练,必须注意数据预处理的准确性。

当前方法的局限性

尽管 Flux Fill 可以解决许多虚拟试穿问题,但它在处理复杂图案方面尚未达到我们预期的水平。例如,考虑这件带有复杂花卉图案的连衣裙:

053417_1

这类服装,其密集、小规模重复的图案,对所有虚拟试穿技术来说简直是噩梦。这些微小几何图案的复杂性和细节对当前的方法构成了重大挑战。目前,市场上没有一款虚拟试穿工具能够将这些精致的图案成功恢复到令人高度满意的水平。其困难在于既要保留图案结构,又要确保其在变形后的服装上应用一致。这个问题仍然是整个领域需要持续攻克的瓶颈。

社区

你好,
我们正在寻找开发者支持,开发虚拟试穿工具。如果您有兴趣,请联系我:chand375@gmail.com

注册登录 以发表评论