用于使用产品描述自动生成三维虚拟服装模型的系统和方法
文献发布时间:2023-06-19 11:26:00
相关申请的交叉引用
本申请要求于2018年11月14日提交的美国临时专利申请序列号62/767,214和62/767,220以及于2019年10月25日提交的美国专利申请序列号16/664,689的优先权和利益,以上申请通过引用整体并入本文。
在本公开的描述中引述并讨论了可能包括专利、专利申请和各种出版物的一些参考文献。这些参考文献的引述和/或讨论仅被提供用于阐明本公开的描述,而不是承认任何参考文献是本文描述的公开内容的“现有技术”。本说明书中引述和讨论的所有参考文献通过引用整体并入本文,并且其程度如同每个参考文献通过引用被单独地并入。
技术领域
本公开总体涉及生成三维(3D)虚拟服装模型,更具体地涉及用于使用产品的文本描述和图像表示两者自动生成3D虚拟服装模型的系统及方法。
背景技术
本文提供的背景技术用于总体呈现本公开的背景的目的。既不明确地承认也不暗示地承认当前列名的发明人的在背景技术部分中描述的范围内的工作、以及在提交时可能不是作为现有技术的描述的各方面为与本发明相对的现有技术。
电子商务已经是社会生活的重要部分,并且在诸如amazon.com、jd.com和alibaba.com之类的在线零售平台上存在用于销售的数百万的时装产品。虽然平台通常提供衣服的图片和模型(model)上穿着的衣服的图片,但是没有时装模型上的服装的3D表示。
因此,本领域中存在解决上述缺陷和不足的需求。
发明内容
在某些方面,本公开涉及一种用于生成服装的三维(3D)模型(即,3D服装模型)的方法。所述方法包括:
通过计算设备提供服装的描述和至少一个图像;
通过计算设备根据描述来识别服装的类型和属性;
通过计算设备对至少一个图像进行分类,以获得至少一个图像的类别,作为包括服装的服装图像或包括第一模型上穿着的服装的模型图像;
通过计算设备基于服装的类型和图像的类别来分割至少一个图像,以获得服装的掩模;
通过计算设备使用掩模来确定至少一个图像中的服装的界标,并且将至少一个图像中的服装解析成多个部分,其中解析可以使用界标,或者不可以使用界标;
通过计算设备将界标拟合到与服装的类型相对应的3D服装模板以获得3D服装表示;
通过计算设备将3D服装表示配准到第二模型,以获得初步3D服装模型,其中3D服装模型被穿着在第二模型上,并且第二模型是3D人体模型;
通过计算设备将第二模型上穿着的初步3D服装模型投影到至少一个2D投影图像;以及
通过计算设备将至少一个2D投影图像与至少一个模型图像中的对应的一个模型图像进行比较,以精细化初步3D服装模型以获得3D服装模型。
在某些实施例中,服装的类型是包括毛衣、衬衫、裙子、T恤和裤子的服装的种类,并且服装的属性包括服装的颜色、材料、领口和性别。在某些实施例中,通过从产品数据库检索类型和属性或通过从服装的购物网页提取类型和属性来执行识别服装的类型和属性的步骤。
在某些实施例中,通过神经网络来执行对至少一个图像进行分类的步骤,神经网络包括用于从至少一个图像提取语义特征的级联卷积块,并且卷积块中的每一个包括2D卷积层、最大池化层和批标准化层。
在某些实施例中,分割至少一个图像的步骤包括:当至少一个图像被分类为服装图像时,使用图形切割来分割至少一个图像。
在某些实施例中,分割至少一个图像的步骤包括:当至少一个图像被分类为模型图像时,使用更快的区域卷积神经网络(Faster R-CNN)来定位包围至少一个图像的服装区域的边界框,并且使用全卷积神经网络(FCN)来分割至少一个图像。
在某些实施例中,使用神经网络来执行确定界标的步骤。
在某些实施例中,确定界标并解析服装的步骤包括:针对掩模使2D服装模板变形,其中2D服装模板是基于服装的类型检索到的,并且包括界标点和2D服装模板的解析。
在某些实施例中,该方法还包括:
在将至少一个图像分类为模型图像之后,估计模型图像中的第一模型的姿态;以及
在投影步骤之前,以所估计的模型图像中的第一模型的姿态设置第二模型。
在某些实施例中,该方法还包括:在初步3D服装模型、最终3D服装模型、以及介于初步3D服装模型和最终3D服装模型之间的中间3D服装模型上渲染纹理。
在某些方面,本公开涉及一种用于生成服装的三维(3D)服装模型的方法。在某些实施例中,该方法包括:
通过计算设备提供服装的至少一个图像;
通过计算设备基于至少一个图像来生成3D服装表示;
通过计算设备将3D服装表示配准到3D模型,以获得3D模型上穿着的初步3D服装模型;
将3D模型上穿着的初步3D服装模型投影到至少一个2D投影图像;以及
将至少一个2D投影图像与至少一个图像中的对应的一个图像进行比较,以精细化初步3D服装模型以获得服装的最终3D服装模型。
在某些实施例中,该方法还包括:将服装的至少一个图像分类为仅包括服装的服装图像和包括第一模型上穿着的服装的模型图像。在某些实施例中,该方法还包括:估计模型图像中的第一模型的姿态,以获得估计的姿态;以及以估计的姿态设置3D模型。在某些实施例中,第一模型是2D模型并且3D模型是3D人体模型。
在某些实施例中,该方法还包括:在生成3D服装表示以前,确定至少一个图像中的服装的界标,并且将界标拟合到3D服装模板,以获得3D服装表示。
在某些实施例中,该方法还包括:根据服装的描述来识别服装的类型和属性。
在某些实施例中,生成、配准、投影和比较的步骤被迭代地执行,直到2D投影图像和模型图像之间的差异小于预定值。
在某些方面中,本公开涉及一种用于生成3D服装模型的系统。该系统包括计算设备。该计算设备具有处理器和存储计算机可执行代码的存储设备。计算机可执行代码在处理器处执行时,被配置为执行上述方法。
在某些方面,本公开涉及一种存储计算机可执行代码的非暂时性计算机可读介质。计算机可执行代码在计算设备的处理器处执行时,被配置为执行上述方法。
根据以下结合附图对优选实施例的详细描述,本公开的这些和其他方面将变得更加清楚,尽管可以在不脱离本公开新颖构思的精神和范围的情况下对本文进行多种改变和修改。
附图说明
附图示出本公开的一个或多个实施例,并且连同书面描述一起用于解释本公开的原理。在任何可能的情况下,在整个附图中使用相同的附图标记来指代实施例的相同或相似的元件。
图1示意性地描绘根据本公开的某些实施例的用于自动生成3D虚拟服装模型的系统。
图2A示出仅包含服装的服装图像。
图2B示出包含模型上穿着的服装的模型图像。
图2C示意性地示出根据本公开的某些实施例的用于图像分类的神经网络架构。
图3A示意性地示出根据本公开的某些实施例的用于分割服装图像的神经网络架构。
图3B示意性地示出根据本公开的某些实施例的通过神经网络架构的模型图像的分割。
图4A示意性地描绘根据本公开的某些实施例的用于服装图像的界标识别和服装解析。
图4B示意性地描绘根据本公开的某些实施例的针对服装掩模使服装模板变形。
图5示意性地描绘根据本公开的某些实施例的用于模型图像的界标识别和服装解析。
图6示意性地描绘根据本公开的某些实施例的模型图像的姿态估计。
图7示意性地示出根据本公开的某些实施例的服装表示。
图8示意性地描绘根据本公开的某些实施例的从2D平坦纹理到3D纹理模型的纹理映射。
图9示意性地描绘根据本公开的某些实施例的用于生成3D服装模型的方法。
图10示意性地描绘根据本公开的某些实施例的自动生成3D服装模型的工作流程。
图11示意性地描绘根据本公开的另一些实施例的自动生成3D服装模型的工作流程。
具体实施方式
在以下仅旨在用作说明的示例中更具体地描述了本公开,因为其中的若干修改和变化对于本领域技术人员将是明显的。现在将详细描述本公开的各种实施例。参考附图,在整个附图中相似的附图标记指示相似的组件。如在本文的描述中和整个所附权利要求中所使用的,除非上下文另有明确说明,否则“一”、“一个”、以及“所述”的含义包括复数指示物。此外,如本文的描述中和整个所附权利要求中所使用的,除非上下文另有明确说明,否则“在……中”的含义包括“在……中”和“在……上”。此外,为了方便读者,可以在说明书中使用标题或副标题,这不影响本公开的范围。此外,在下文中更具体地定义本说明书中使用的一些术语。
本说明书中使用的术语在本公开的上下文中以及使用每个术语的特定上下文中通常具有其在本领域中的通常含义。用于描述本公开的某些术语在下面或说明书中的其他地方进行讨论,以向实施者提供与本公开的说明有关的额外指导。应认识到,可以用多于一种方式来陈述相同的事物。因此,可以针对本文所讨论的术语中的任何一个或多个来使用替代语言和同义词,并且对术语是否在本文中被详细阐述或讨论也不施加任何特殊意义。提供了某些术语的同义词。一个或多个同义词的列举不排除其他同义词的使用。本说明书中任何地方对示例(包括本文中讨论的任何术语的示例)的使用仅是说明性的,并且决不限制本公开或任何示例性术语的范围和含义。同样,本公开不限于本说明书中给定的各种实施例。
除非另外定义,否则本文使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员通常所理解的相同的意义。还将理解的是,诸如在常用词典中定义的术语之类的术语应被解释为其含义与在相关技术和本公开的上下文中的含义相同,而不应将其解释为理想的或过于正式的含义,除非本文明确如此定义。
如本文所用,“大约”、“约”、“基本上”或“近似”通常应表示在给定值或范围的20%、优选10%、更优选5%之内。本文给出的数值是近似的,意味着如果没有明确说明,可以推断出术语“大约”、“约”、“基本上”或“近似”。
如本文所用,“多个”表示两个或更多个。
如本文所用,术语“包含”、“包括”、“携带”、“具有”、“含有”、“涉及”等应理解为开放式的,即表示包括但不仅限于。
如本文所用,短语A、B和C中的至少一个应该被解释为使用非排他逻辑“或”来表示逻辑(A或B或C)。应当理解,方法内的一个或多个步骤可以以不同的顺序(或同时)执行,而不改变本公开的原理。如本文所用,术语“和/或”包括相关列出项中的一个或多个的任意和所有组合。
如本文所用,术语“模块”可以指代、属于或包括专用集成电路(ASIC)、电子电路、组合逻辑电路、现场可编程门阵列(FPGA)、执行代码的处理器(共享的、专用的或组)、提供所述功能的其他合适的硬件组件、或者上述中的一些或全部的组合,例如以芯片上系统的形式。术语“模块”可以包括存储由处理器执行的代码的存储器(共享的、专用的或组)。
如本文所使用的术语“代码”可以包括软件、固件和/或微代码,并且可以指代程序、例程、函数、类和/或对象。如上所使用的术语“共享的”意味着可以使用单个(共享的)处理器来执行来自多个模块的一些或所有代码。此外,来自多个模块的一些或所有代码可以由单个(共享的)存储器存储。如上文所使用的术语“组”意味着可以使用一组处理器来执行来自单个模块的一些或所有代码。此外,可以使用一组存储器来存储来自单个模块的一些或所有代码。
如本文所使用的术语“接口”通常是指用于在组件之间执行数据通信的、位于组件之间的交互点处的通信工具或部件。通常,接口可以适用于硬件和软件两者的级别,并且可以是单向或双向接口。物理硬件接口的示例可以包括电连接器、总线、端口、电缆、终端和其他I/O设备或组件。例如,与接口进行通信的组件可以是计算机系统的多个组件或外围设备。
本公开涉及计算机系统。如附图中所描绘的,计算机组件可以包括物理硬件组件(其被示为实线框)以及虚拟软件组件(其被示为虚线框)。本领域普通技术人员将认识到,除非另外说明,否则这些计算机组件可以以软件、固件或硬件组件、或其组合的形式来实现,但不限于上述形式。
本文描述的装置、系统和方法可以由一个或多个处理器执行的一个或多个计算机程序实现。计算机程序包括存储在非暂时性有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括存储的数据。非暂时性有形计算机可读介质的非限制性示例是非易失性存储器、磁存储器和光存储器。
在下文中,将参考示出本公开实施例的附图,更详细地描述本公开。然而,本公开可以按许多种不同形式来实现,并且不应当被解释为限于本文阐述的实施例;相反,提供这些实施例是为了使本公开是全面和完整的,并且将本公开的范围完全传达给本领域技术人员。
图1示意性地描绘根据本公开的某些实施例的用于自动生成3D虚拟服装模型的系统。如图1所示,系统100包括计算设备110。在某些实施例中,图1所示的计算设备110可以是提供姿态跟踪服务的服务器计算机、集群、云计算机、通用计算机、无头计算机或专用计算机。计算设备110可以包括但不限于处理器112、存储器114和存储设备116。在某些实施例中,计算设备110可以包括用于执行其对应任务的其他硬件组件和软件组件(未示出)。这些硬件和软件组件的示例可以包括但不限于所需要的其他存储器、接口、总线、输入/输出(I/O)模块或设备、网络接口和外围设备。
处理器112可以是中央处理单元(CPU),其被配置为控制计算设备110的操作。处理器112可以执行操作系统(OS)或计算设备110的其他应用。在某些实施例中,计算设备110可以具有作为处理器的多于一个的CPU(例如,两个CPU、四个CPU、八个CPU或任何合适数量的CPU)。
存储器114可以是用于存储计算设备110的操作期间的数据和信息的易失性存储器(例如,随机存取存储器(RAM))。在某些实施例中,存储器114可以是易失性存储器阵列。在某些实施例中,计算设备110可以在多于一个存储器114上运行。
在某些实施例中,计算设备114还可以包括图形卡以帮助处理器112和存储器114进行图像处理和显示。
存储设备116是用于存储OS(未示出)和计算设备110的其他应用的非易失性数据存储介质。存储设备116的示例可以包括非易失性存储器,例如闪存、存储卡、USB驱动器、硬盘驱动器、软盘、光驱动器或任何其他类型的数据存储设备。在某些实施例中,计算设备110可以具有多个存储设备116,这些存储设备可以是相同的存储设备或不同类型的存储设备,并且计算设备110的应用可以存储在计算设备110的存储设备116中的一个或多个中。
在该实施例中,处理器112、存储器114、存储设备116是诸如服务器计算设备之类的计算设备110的组件。在其他实施例中,计算设备110可以是分布式计算设备,并且处理器112、存储器114和存储设备116是来自预定区域中的多个计算机的共享资源。
存储设备116包括3D服装模型生成应用118等等。3D服装模型生成应用118包括服装识别模块120、图像类型分类模块122、服装分割模块124、界标识别(landmarkidentification)与服装解析模块126、界标识别与模型服装解析模块128、姿态估计模块130、服装表示模块132、模型表示模块134、纹理映射模块136和重投影模块138。在某些实施例中,存储设备116可以包括3D服装模型生成应用118的操作所需的其他应用或模块。应注意,模块120-138均由计算机可执行代码或指令、或者数据表或数据库来实现,其中计算机可执行代码或指令、或者数据表或数据库共同形成一个应用。在某些实施例中,模块中的每一个还可以包括子模块。备选地,模块中的一些模块可以组合为一个堆叠,例如,界标识别与服装解析模块126和界标识别与模型服装解析模块128可以组合为一个模块,并且界标识别与模型服装解析模块128和姿态估计模块130可以组合,因为它们共享信息并且可以联合地被训练。在其他实施例中,某些模块可以实现为电路而不是可执行代码。在某些实施例中,3D服装模型生成应用118还可以包括:用户接口,用于用户监测并调整用于3D服装模型生成应用118的参数;和/或调度器,用于管理由3D服装模型生成应用118的不同模块处理的图像和文本;和/或用于对模块120-138中的一个或多个进行训练的服装数据集、图像数据集或其他类型的数据集。
由3D服装模型生成应用118处理的产品是由电子商务平台提供的服装。电子商务平台上的服装的数据包括产品信息和图像。服装的产品信息可以包括服装类型和服装的属性。服装类型指示服装的种类,例如,“毛衣”、“衬衫”、“裤子”。服装的属性通过性别、领口、材料、颜色等来表征服装,并且服装的属性的示例可以包括“女士的(性别特征)”、“V领(领口特征)”、“羊毛(材料特征)”和“红色(颜色特征)”。服装的图像可以包括仅显示服装的一个或多个服装图像、和/或显示由模型穿着的服装的一个或多个模型图像。在某些实施例中,服装的产品信息和图像被存储在对应的产品数据库中,并且可以使用服装的标识(例如,其库存单位(SKU))从数据库检索服装的服装类型、属性和图像。在某些实施例中,服装的产品信息和图像在电子商务平台上的主页中显示,标题语句或描述部分可以包括服装类型和属性,并且可以从主页检索或爬取产品信息和图像。
服装识别模块120被配置为从产品数据库中的对应的服装条目或从电子商务平台中的服装的主页检索或接收服装的产品信息。当服装信息被存储在产品数据库中并且数据库可通过服装识别模块120访问时,从产品数据库直接检索服装信息。在某些实施例中,服装识别模块120包括用于从产品数据库查询和检索服装类型和属性的应用编程接口(API)。在一个示例中,产品数据库中的产品类型和属性(输入)如下:
服装类型:毛衣
性别:女士的
领口:V领
材料:羊毛
颜色:红色
服装识别模块120在查询数据库之后的输出是:
服装类型:毛衣
性别:女士的
领口:V领
材料:羊毛
颜色:红色
当产品数据库不可访问时,服装识别模块120被配置为从服装的主页检索服装类型和属性。在某些实施例中,从主页检索到的数据是服装的标题语句。在其他实施例中,从主页检索到的数据还可以包括服装的其他描述。在某些实施例中,在获得服装的标题语句之后,使用槽位填充算法(slot filling algorithm)来从产品描述中获得类型和属性。在某些实施例中,使用基于简单模板的槽位批量填充算法(slot lot filling algorithm),其中槽位与期望提取的指定实体(即,服装类型和属性)相对应。在其他实施例中,也可以使用更高级的算法,例如,知识库群(knowledge base population)(KBP)。KBP的公开内容(https://nlp.stanford.edu/projects/kbp/)通过引用整体并入本文。在一个实施例中,针对服装类型的列表(例如,{毛衣、衬衫、裙子、T恤、裤子、……}维护字典,通过将语句的名词与目录中的词语直接进行匹配来识别服装类型的指定实体(毛衣)。以类似的方式提取其他属性。例如,提取红色作为颜色并且提取羊毛作为材料。
在一个示例中,产品标题是“女士的红色V领羊毛毛衣”的文字,并且通过槽位填充而确定的服装类型和属性是:
服装类型:毛衣
性别:女士的领口:V领
材料:羊毛
颜色:红色
服装识别模块120还被配置为:在获得服装类型和属性之后,将信息发送给界标识别与服装解析模块126、界标识别与模型服装解析模块128和服装表示模块132。在某些实施例中,所获得的服装类型和属性可以不发送给其他相关的模块。相反,结果被存储在指定的位置中并且可由需要结果的模块访问。
图像类型分类模块122被配置为:从产品数据库中的对应的服装条目或从电子商务平台中的服装的主页检索或接收服装的图像,并且将图像分类为仅包括服装的服装图像或包括穿在时装模型上的服装的模型图像。模型图像也可以被称为模型上的服装图像或服装模型图像。在某些实施例中,通过机器学习来执行图像的分类。图2A示出仅包含服装的服装图像。图2B示出包含模型上穿着的服装的模型图像。图2C示意性地示出根据本公开的某些实施例的用于图像分类的神经网络架构。这个神经网络也被称为图像分类器,其可以与图像类型分类模块122或图像类型分类模块122的实质部分相对应。如图2C所示,图像分类器122包括级联卷积块,以从图像(例如,图2A所示的服装图像和图2B所示的模型图像)提取语义特征。每个卷积块包含一个2D卷积层、一个最大池化层和一个批标准化层(batchnormlayer)。所提取的特征然后被馈送到用于特征变换的两个全卷积(full convolution)层,并且利用softmax激活函数生成概率分布。在处理图像之前使用预先标记的数据训练图像分类器122。在某些实施例中,图像分类器122的输入是图像像素的RGB值,并且输出是表示输入图像属于类别0或类别1的概率的概率分布,其中,0表示仅包含服装的服装图像,并且1表示包含时装模型上的服装的模型图像。当图像被分类时,图像类型分类模块122还被配置为将分类结果和图像发送给服装分割模块124。在某些实施例中,图像类型分类模块122还被配置为:当确定图像是模型图像时,将确定结果和模型图像发送给姿态估计模块130。
分割模块124被配置为:当从图像类型分类模块122接收到图像类别和图像时,分割图像以获得包围服装图像或模型图像中的服装区域的服装掩模(mask)。在某些实施例中,通过机器学习来执行图像的分割。图3A示意性地示出根据本公开的某些实施例的用于图像分割的神经网络架构。如图3A所示,神经网络架构包括作为骨干网络的ResNet101,以从原始图像提取共享的低级特征图。然后,为了得到全局上下文信息,在ResNet 101的最后一级输出之后应用包含了多个卷积层和池化层的Atrous空间金字塔池(ASPP)模块,接着进行1x1卷积和上采样。经上采样的特征被馈送到最后的3x3卷积层并且生成作为二进制2D矩阵的分割掩模。图3A示出服装图像的分割。模型图像的分割是类似的。如图3B所示,通过分割模块124对模型图像的处理输出了穿在模型上的服装的掩模。针对服装图像分割,通过使用经标记的服装图像进行训练来获得分割架构的参数;以及针对模型图像分割,通过使用经标记的模型图像进行训练来获得分割架构的参数。在这个实施例中,所使用的架构参数与图像分类结果一致。在某些实施例中,3D服装模型生成应用118可以提供两个分割模块,一个用于服装图像的分割并且一个用于模型图像的分割。两个分割模块具有相同的模块结构但是具体不同的参数。在获得作为来自服装图像或模型图像的服装的掩模的分割结果之后,服装分割模块124还被配置为将服装掩模和服装图像发送给界标识别与服装解析模块126或将服装掩模和模型图像发送给界标识别与模型服装解析模块128。
界标识别与服装解析模块126被配置为:在接收到来自服装分割模块124的服装图像和服装图像中的服装的掩模以及来自服装识别模块120的服装类型时,识别服装的界标并且将掩模解析成子掩模。每个子掩模是掩模的与服装的特定部分(例如,左袖、右袖、领子、衣身等)相对应的部分。在某些实施例中,界标识别与服装解析模块126的输出是用于限定服装图像的界标点和用于限定子掩模区域或掩模中的部分的掩模标记的列表。在某些实施例中,3D服装模型生成应用118提供用于每种服装类型的预定义的模板。每个预定义的模板标记有界标点并且被分割成不同的部分。当从服装识别模块120获得服装类型时,检索对应的预定义的模板。界标识别与服装解析模块126执行模板到服装掩模上的可变形的图像配准。在可变形的配准之后,服装掩模则具有经标记的界标点和经分割的部分。图4A示意性地描绘用于服装图像的界标识别和服装解析。如图4A所示,输入是服装图像和对应的掩模,并且输出是服装的界标和掩模的经解析的不同部分。在某些实施例中,界标点通过其在服装图像中的坐标来定义,并且每个界标基于服装的类型具有特定的标识;经解析的不同部分中的像素可以通过不同的值来表征。例如,左袖的像素值可以被表征为1,右袖的像素值可以被表征为2,领子的像素值可以被表征为3,并且衣身的像素值可以被表征为4。所述值可以被存储在独立的像素通道中,并且所述值可以通过颜色来显示以用于查看。在一个示例中,提供了长袖衬衫的服装图像,并且使用服装分割模块124获得长袖衬衫的掩模。如图4B的左侧所示,长袖衬衫模板利用界标点进行标记,并且被划分成分开的部分。在使模板变形以拟合图4B的右侧所示的服装掩模之后,服装掩模则利用经拟合的界标点进行标记,并且被划分成不同的部分(或子掩模)。在识别界标点并且将掩模解析成不同的部分之后,界标识别与服装解析模块126还被配置为将结果发送给服装表示模块132。
界标识别与模型服装解析模块128的功能与界标识别与服装解析模块126的功能类似,除了前者使用模型服装模板处理模型图像,而后者使用服装模板处理服装图像。具体地,界标识别与模型服装解析模块128被配置为:在接收到来自服装分割模块124的模型图像和模型图像中的模型服装的掩模和来自服装识别模块120的服装类型时,识别模型服装的界标并且将掩模解析成子掩模。每个子掩模是掩模的与服装的特定部分(例如,左袖、右袖、领子、衣身等)相对应的部分。在某些实施例中,界标识别与模型服装解析模块128的输出是用于限定模型图像的界标点和用于限定子掩模区域或掩模的部分的掩模标记的列表。在某些实施例中,3D服装模型生成应用118可以提供针对每个服装类型的具有不同姿态的预定义的模板。在其他实施例中,模板可以不包括姿态,并且界标识别与模型服装解析模块128可以仅将与服装相对应的模板用作起点,并且从服装模板到模型服装掩模的拟合可能更困难。如上所述,每个预定义的模板标记有界标点并且被分割成不同的部分。当从服装识别模块120获得服装类型时,检索对应的预定义的模板。界标识别与模型服装解析模块128执行模板到模型服装掩模上的可变形的图像配准。在可变形的配准之后,模型服装掩模则具有经标记的界标点和经分割的部分。图5示意性地描绘用于模型图像的界标识别和模型服装解析。如图5所示,输入是模型图像和对应的掩模,并且输出是模型服装的界标和掩模的经解析的不同部分。在某些实施例中,界标点通过其在模型图像中的坐标来定义,并且每个界标标记基于服装的类型具有特定的标识;经解析的不同部分中的像素可以通过不同的值来表征,例如,1用于左袖、2用于右袖、3用于领子、以及4用于衣身。在一个示例中,提供了长袖衬衫的模型图像,并且使用服装分割模块124获得长袖衬衫的掩模。如图5所示,服装的右袖部分覆盖在身体部分上,并且重叠指示模型图像中的模型的姿态。在识别界标点并且将掩模解析成不同的部分之后,界标识别与模型服装解析模块128还被配置为将结果发送给服装表示模块132。
姿态估计模块130被配置为:在接收到来自图像类型分类模块122的分类结果(图像是模型图像)和模型图像时,估计模型图像中的模型的姿态。在某些实施例中,紧接在分类器确定图像是模型图像之后估计姿态。在某些实施例中,姿态估计神经网络与服装界标识别联合地被训练,因为它们共享信息。如图6所示,姿态估计模块130的输入是时装模型上的服装,并且输出是从输入图像估计的时装模型的骨架(skeleton),骨架可以是关节(joint)点的列表。存在用于估计图像中的时装模型的人体姿态的许多不同的现有技术。在某些实施例中,姿态估计模块130可以使用姿态机(http://www.cs.cmu.edu/~vramakri/poseMachines.html),其中,其中并入了多个部分之间的空间交互以及跨不同尺度的部分的信息,以用于姿势估计。在某些实施例中,姿态估计模块130可以使用开放姿态(OpenPose)算法,其中基于深度学习的算法用于联合地学习部分的位置及其关联(https://arxiv.org/abs/1611.08050)。在获得姿态之后,姿态估计模块130还被配置为将所估计的姿态发送给重投影模块138。
服装表示模块132被配置为:在接收到来自界标识别与服装解析模块126和/或界标识别与模型服装解析模块128中的至少一个的界标点、以及来自服装识别模块120的服装类型时,将服装拟合到用于3D建模的特定服装模板。3D服装模型生成应用118基于特定服装类型来提供服装模板。在某些实施例中,本文中使用的服装模板是3D服装模板。服装表示模块132的输入包括:服装类型,例如,“女士的毛衣”;以及服装的界标,例如,“左领口点、右领口点、中央领口点、左肩点、右肩点、左外袖口点、左内袖口点、右外袖口点、右内袖口点、左腋窝点、右腋窝点、左上褶缝点(hem point)、右上褶缝点”的坐标,其中坐标可以与预定义的服装的原点有关。服装表示模块132的输出包括建模特定服装的一系列参数:(1)胸围、颈围、插肩(raglan)、袖孔深度、身长、自然腰围、后腰长、后背宽、臀围、袖长、后颈中央至袖口长(center back neck to cuff length)、上臂围、腕围和肘围;(2)表示服装的3D模型的顶点和表面的集合。
在某些实施例中,图像处理和几何计算的组合可以用于计算参数的全部或子集。例如,为了计算袖长,如果袖子在图像中是平坦的,那么可以简单地计算左肩点和左外袖口点之间的距离。如果在穿着服装的时装模型的图像中不是扁平的,则可以使用轮廓跟踪(contour tracing)算法以跟踪从肩点到袖口点的服装轮廓。在另一示例中,可以使用简单的几何结构来计算胸围。可以将椭圆拟合到人的衣身的水平部分。那么,两个腋窝点之间的距离是长轴的长度。可以事先基于长轴和普通的身体形状来估计短轴的长度。然后可以根据经拟合的椭圆的周长计算胸围。在某些实施例中,当若干个服装的图像可用时,服装表示模块132可以采用来自图像的平均值、中间值或加权平均来计算参数。在某些实施例中,当服装图像和模型图像两者可用时,服装表示模块132可以采用服装图像的更大权重来计算参数。
请注意,并非所有测量都可以从图像中计算出来,但是也并非它们全部都是建模所需要的。参数具有冗余性。还要注意,上述测量都以像素为单位。为了获得现实世界的测量,需要用户指定比例(例如,简单的真实袖长足以计算从图像空间到现实空间的比例)。
服装表示模块132被配置为使用这些参数来创建服装的3D模型。一种方法是使用这些参数来创建2D图案块,然后根据这些2D块在3D空间中创建3D模型。这个过程模仿服装设计的真实过程。另一方法是使用针对该服装类型定义的模板服装网格,然后根据尺寸测量使模板网格模型在3D空间中变形。图7示意性地示出根据本公开的某些实施例的服装表示,其中所述表示是长袖衬衫。在获得服装表示之后,服装表示模块132还被配置为将表示发送给模型表示模块134。
模型表示模块134被配置为:在接收到3D空间中的服装表示时,使模型表示的界标点(关节)与人体模型的关节对准。3D服装模型生成应用118提供人体模型。基于参数集合建立人体模型。在某些实施例中,使用Li等人的方法(Jituo Li Et al.,Fitting 3D garmentmodels onto individual human models,Computers&Graphics,Volume 34,Issue 6,December 2010,Pages 742-755)定义人体模型,该方法通过引用整体并入本文。在建立人体模型之后,模型表示模块134被配置为:通过对准人体模型和服装模板的关节,将服装表示配准到人体模型。在某些实施例中,例如,使用Brouet等人的方法(Remi Brouet et al.,Design preserving garment transfering,ACM Transactions on Graphics,Association for Computing Machinery,2012,SIGGRAPH 2012)也可以拟合不同的身体形状,该方法通过引用整体并入本文。模型表示模块134的输入是预先选择的人体参数和所估计的服装参数,并且输出是服装和身体对准。此时,3D服装模型被获得并且准备被用户查看。在某些实施例中,在对准和获得3D服装模型之后,模型表示模块134还被配置为:将模型表示(具有在人体模型上的经对准的服装的人体模型)发送给用于向3D服装模型提供纹理的纹理映射模块136、和/或发送给用于精细化3D服装模型的重投影模块138。在某些实施例中,3D服装模型还需要通过重投影模块138进行精细化,并且因此3D服装模型被称为初步3D服装模型。
纹理映射模块136被配置为:在接收到服装的模型表示、包含服装的原始图像和解析结果时,将经解析的服装块映射到经平坦化的2D纹理图像。经解析的每个块被映射到图8的左侧所示的2D参考纹理图像上。在某些实施例中,将经解析的块映射到2D纹理图像需要变形。当创建2D纹理图像时,纹理映射模块136还被配置为将2D纹理图像映射到图8的右侧所示的3D模型表示。此时,获得具有纹理的3D服装模型。在某些实施例中,从服装模板获得参考纹理,并且服装模板结合(come with)3D模型和2D经平坦化的参考网格。在某些实施例中,在重投影循环中的每一个重投影循环中,中间3D服装模型被处理为具有纹理,并且纹理信息用于帮助精细化模型。在某些实施例中,根据Xu等人的方法(Xu et al.,3D VirtualGarment Modeling from RGB Images,arXiv:1908.00114v1,31,July 2019)执行3D服装模型的纹理,该方法通过引用整体并入本文。
重投影模块138被配置为:在接收到来自模型表示模块134(经对准的3D服装和预定义的人体)的初步3D服装模型或来自纹理映射模块136的经纹理化的初步3D服装模型、具有时装模型上的服装的原始模型图像和来自姿态估计模块130的姿态、或仅具有服装的原始服装图像、以及来自界标识别与服装解析模块126的界标时,精细化具有或不具有纹理的初步3D服装模型。具体地,重投影模型138被配置为:将初步3D服装模型拟合到通过姿态估计模块130确定的姿态,以获得服装的2D投影;将服装的2D投影与2D模型图像(其被用于确定姿态)进行比较;以及将比较中的差异用于改进3D服装模型估计。所述改进可以通过调整人体模型参数、姿态估计参数和服装构造参数或通过调整服装界标识别参数、服装解析参数和服装构造参数的参数来执行。在某些实施例中,重投影、比较和参数调整的过程是迭代过程,过程迭代地被执行,直到2D源图像(模型图像)和根据所估计的3D服装模型重设姿态的2D投影图像之间的差异最小或在差异范围之内。在某些实施例中,当2D源图像和2D投影之间的差异小于阈值时,将使用重投影的精细化过程确定为最终的。在某些实施例中,阈值是20%的差异。在某些实施例中,阈值是10%的差异。在某些实施例中,阈值是5%的差异。在某些实施例中,阈值是1%的差异。最终的输出是经调整的或最终的3D服装模型。在某些实施例中,使用Li等人描述的方法(Jituo Li et al.,Fitting 3D garment models ontoindividual human models,Computers&Graphics,Volume 34,Issue 6,December 2010,Pages 742-755)执行将3D服装模型重设姿态为由姿态估计模块130确定的估计姿态。
如上所述,可以使用姿态信息针对模型图像来执行重投影,或使用界标针对服装图像来执行重投影。对于模型图像,根据模型图像来估计2D模型的姿态,并且通过以2D模型的姿态设置3D人体模型来执行对应的2D投影。对于服装图像,姿态是不可用的并且仍然可以类似地完成重投影。具体地,为了迭代地进行改进,可以以与考虑姿态将3D服装模型重投影到投影图像的方式相同的方式将3D服装模型重投影到2D服装形状。在这个情况下,根据界标和解析结果来将3D服装模型重投影到2D空间。例如,可以取得3D服装模型的前视图并且将其与输入的前视图服装图像进行比较。如果具有以下描述的从不同的角度(例如,前、后、左侧、右侧……)取得的多个输入服装图像,这可能特别有用,此时,则可以在一个迭代中做出一些比较。
在某些实施例中,服装的图像包括:均仅包括服装的一个或多个服装图像;以及,均包括模型(例如,二维(2D)模型)上穿着的服装的一个或多个模型图像。当服装的图像包括多个图像时,2D投影图像也可以是一个或多个。2D投影图像的数量可以等于或小于服装的图像的数量。在2D投影图像中的一个2D投影图像和服装的图像中的对应的一个图像之间执行比较。例如,如果服装的图像之一是前视图图像,则用于比较的对应的2D投影图像也是从初步3D服装模型投影的服装的前视图。可以在一轮精细化中对多个图像进行比较。当服装的图像包括多个服装图像:前视图图像、后视图图像、左视图图像和右视图图像时,对应的2D投影图像也可以相应地包括多个投影图像:前视图2D投影图像、后视图2D投影图像、左视图2D投影图像和右视图2D投影图像。对对应的图像-投影图像对进行比较,并且组合比较结果以精细化3D服装模型。当服装图像和模型图像两者可用时,重投影精细化可以针对服装图像和模型图像两者来组合比较结果。
在上面的描述中,图像被处理,并且结果从一个模型传递到另一个模型。在某些实施例中,3D服装模型生成应用118还包括对过程进行协调的调度器。例如,当应用118在操作时,应用检索图像并且将将图像放置在存储器114中,然后调度器指示不同的模块来处理图像,并且针对对应的图像将处理结果存储在存储器114中。一个模块的处理结果可由其他模块访问。处理结果可以包括图像类型、服装的掩模、服装的界标点、服装的经解析的块、模型图像中的模型的姿态、服装表示、所设置的人体模型、经解析的块的纹理等。然后对这些处理结果进行组合,以提供经精细化的3D服装模型以供用户查看。因为最终结果是3D服装模型,所以用户可以从不同的角度查看服装、转动3D服装模型,以在确定是否购买服装以前很好地了解服装。
此外,如上所述,应用118提供用于服装表示模块132以及界标识别模块126和128的模板(3D模板和2D参考网格两者),并且将人体模型提供给模型表示模型134。这些信息可以预先存储到应用118或存储在可由应用118访问的数据库中。
图9示意性地描绘根据本公开的某些实施例的用于生成3D服装模型的方法。在某些实施例中,该方法通过图1所示的计算设备110实现。应该特别注意,除非在本公开中另外声明,否则方法的步骤可以以不同的顺序来布置,并且因此不限于图9所示的顺序次序。
在某些实施例中,服装的描述和图像以及处理所述描述和图像的结果顺序地从一个模块传递给另一模块。在其他实施例中,在应用118的操作期间服装的描述和图像以及处理被加载到或存储在存储器114中,并且调度器可以用于协调模块的操作。通过使用调度器协调模块的操作来描述以下方法900,但是本公开不限于此。
在某些实施例中,3D服装模型生成应用118提供针对每种服装类型的服装模板(以及关联的2D参考网格)。参考图4B的左侧,每个服装模板示出服装的形状,服装模板被划分成不同的部分或局部(portion),例如,长袖衬衫模板的左袖、右袖、领子和衣身。模板也包括用于表征模板的不同局部的服装的界标点。不同的部分不同地进行标记并且可以利用基于标记的不同颜色进行显示。
在某些实施例中,3D服装模型生成应用118提供针对每种服装类型的3D服装模板。3D服装模板是用于生成3D服装模型的参数。例如,对于长袖衬衫,3D服装模板可以包括以下参数:胸围、颈围、插肩、袖孔深度、身长、自然腰围、后腰长、后背宽、高腰围(high girth)、袖长、后颈中央至袖口长、上臂围、腕围、肘围、以及表示3D服装模型的顶点和表面的集合。当目标服装的界标点与3D服装模板匹配时,参数进行更新。因此,可以基于已更新的参数来生成新的3D服装模型。
在某些实施例中,3D服装模型生成应用118提供不同的人体模型。人体模型可以通过性别、高度、重量、年龄等限定。在某些实施例中,3D服装模型生成应用118可以定义作为起点的若干个标准人体模型,例如,儿童身体模型、女孩身体模型、男孩身体模型、女人身体模型和男人身体模型,并且这些模型的参数可以根据需要进行调整。人体模型是三维的,并且在3D人体模型中标记关节。3D人体模型的关节可以被定义为与服装的界标点相对应,并且关节/界标点对应可以被用于将服装穿着在人体模型上。
参考图4B的左侧,每个模板示出服装的形状,服装模板被划分成不同的部分或局部,例如,长袖衬衫模板的左袖、右袖、领子和衣身。模板也包括用于表征模板的不同局部的服装的界标点。不同的部分不同地进行标记并且可以利用基于标记的不同颜色进行显示。
如图9所示,在过程902中,提供服装的描述和服装的图像。具体地,调度器可以使用服装的标识从产品数据库检索服装的描述或图像,或者从服装的主页提取描述(例如,服装的标题)和图像。备选地,调度器可以指示服装识别模块120检索或提取服装描述,并且指示图像类型分类模块122检索或提取服装的图像。在某些实施例中,所检索或提取的服装的描述和图像被存储在存储器114的专用部分中以进行处理。在某些实施例中,可以利用服装条目(例如,“服装1”)限定描述和图像,并且描述、图像和以下处理都被存储在相同的服装条目中。在某些实施例中,并行处理多个服装,并且利用特定的服装条目来标记服装中的每一个。
在过程904处,在接收到服装的描述时,调度器将服装识别模块120加载到存储器114并且执行该模块。服装识别模块120在被执行时识别服装的类型和属性。服装的类型和属性被存储在存储器114中的“服装1”的条目中。在某些实施例中,在确定服装的类型和属性之后,可以从“服装1”删除描述。
在过程906处,在接收到服装的图像时,调度器将图像类型分类模块122加载到存储器114并且执行该模块。图像类型分类模块122在被执行时,将图像分类为服装图像或模型图像,其中,服装图像仅包含服装,并且模型图像包含模型上穿着的服装。图像类型分类模块122然后将“服装图像”或“模型(服装)图像”的图像的类别存储到与正在进行处理的图像相对应的条目“服装1”。
在过程908处,在对图像进行分类时,调度器将服装分割模块124加载到存储器114并且执行该模块。服装分割模块124在被执行时,基于图像的类别分割图像以获得服装的掩模。具体地,当图像是服装图像时,服装分割模块124从服装图像识别服装区域;当图像是模型图像时,服装分割模块124可以使用边界框包围服装,并且根据边界框来识别服装区域。利用掩模来限定所识别的服装。服装分割模块124然后将掩模与图像一起存储在条目“服装1”中。
在过程910处,在获得到服装的掩模时,当图像被分类为服装图像时,调度器加载界标识别与服装解析模块126并且执行该模块,并且当图像被分类为模型图像(或即包含模型上穿着的服装的模型服装图像)时,调度器加载界标识别与模型服装解析模块128并且执行该模块。
当图像是服装图像时,界标识别与服装解析模块126基于服装的类型来选择2D服装模板,使2D服装模板变形以拟合从服装图像得出的服装的掩模。在2D服装模板变形之后,界标点和不同的部分也移动或变形以拟合掩模。然后,界标识别与服装解析模块126利用经移动的界标点和经变形的服装部分来标记掩模。
当图像是模型图像时,类似地,界标识别与模型服装解析模块128基于服装的类型来选择2D服装模板,使2D服装模板变形以拟合从服装图像得出的服装的掩模。在2D服装模板变形之后,界标点和不同的部分也移动或变形以拟合掩模。然后,界标识别与模型服装解析模块128利用经移动的界标点和经变形的服装部分来标记掩模。在某些实施例中,因为2D服装模板与穿在模型上的服装的掩模非常不同,所以变形是不准确的。为了改进界标识别和解析,在某些实施例中,界标识别与模型服装解析模块128可以使用模型服装的姿态估计来辅助该过程。例如,如果姿态估计模块130确定右袖部分覆盖在身体部分上,则界标识别与模型服装解析模块128将使2D服装模板的右袖部分折叠到2D服装模板的身体部分上,然后针对掩模使2D服装模板变形。在某些实施例中,3D服装模型生成应用118也可以提供与服装类型的不同的姿态相对应的多个2D服装模板。因此,可以基于服装的类型和模型图像的姿态来选择合适的2D服装模板,以用于界标点识别和解析。
在这个过程之后,界标识别与模型服装解析模块128将界标点和经解析的部分存储到条目“服装1”。
在过程912处,在获得到服装的界标点和经解析的部分时,调度器加载服装表示模块132并且执行该模块。服装表示模块132在被执行时,根据“服装1”的类型来选择3D服装模板,将界标点拟合到3D服装模板,并且将经拟合和经计算的参数用于生成服装的3D模型或3D表示。服装表示模块132将参数和/或3D服装模型存储在与服装的图像有关的“服装1”中。
在过程914处,在获得到3D服装模型时,调度器加载模型表示模块134并且执行该模块。模型表示模块134在被执行时,选择人体模型,并且将3D服装模型配准到人体模型。在某些实施例中,模型表示模块134通过使3D服装模型的界标点与人体模型的对应关节对准来执行配准。在某些实施例中,人体模型和3D服装模型通过数值参数来表示,并且可以利用数学计算完成界标点与关节的对准。在对准之后,模型表示模型134然后基于这些参数来生成3D服装模型,在该3D服装模型中,服装穿着在以3D表示的人体模型上。
在某些实施例中,调度器还可以指示纹理映射模块136以将服装的纹理映射到3D服装模型上。因为服装被解析成不同的部分,所以纹理映射模块136可以通过每个部分的相应的材料和颜色来表征每个部分。纹理映射模块136然后将材料和颜色映射到3D服装模型中的对应的部分,以获得经纹理映射的3D服装模型。在某些实施例中,纹理映射模块136将纹理映射到每个3D服装模型,包括在以上步骤914中生成的3D服装模型、在以下步骤916中的精细化期间的中间3D服装模型、以及在以下步骤916中精细化的最终3D服装模型,其中纹理信息可以用于帮助精细化过程。在其他实施例中,纹理映射模块136可以仅将纹理映射到经精细化的最终3D服装模型。
在过程916处,调度器将重投影模块138加载到存储器114并且执行该模块。重投影模块138在被执行时,迭代地精细化3D服装模型以获得经精细化的最终3D服装模型。
当与重投影有关的服装的图像是模型图像时,在重投影以前通过已执行的姿态估计模块130来估计模型图像中的模型的姿态。具体地,在将图像分类为模型图像之后并且在重投影的步骤之前,调度器将姿态估计模块130加载到存储器114并且执行该模块。姿态估计模块130的输入是包括穿着在模型上的服装的模型图像,并且输出是从输入图像估计的时装模型的骨架,所述骨架可以是如图6的右侧所示的关节点的列表。在某些实施例中,姿态估计模块130在每当图像被确定为模型图像时就对图像执行姿态估计。在其他实施例中,姿态估计模块130可以在模型表示模块134获得3D服装模型之后执行姿态估计。
当3D服装模型和所估计的模型图像中的模型的姿态可用时,执行的重投影模块138将3D服装模型的姿态调整为由姿态估计模块130根据模型图像而估计的姿态,生成3D服装模型的具有经调整的姿态的2D投影,将所生成的2D投影与原始模型图像进行比较以获得差异,并且将差异用作反馈以改进3D服装模型。所述改进包括以下至少一项:经由模型表示模块134来调整人体模型参数、经由姿态估计模块130来调整姿态估计参数、经由界标识别与模型服装解析模块128来调整界标识别和模型服装解析参数、以及经由服装表示模块132和模型表示模块134来调整服装构造参数。在调整参数之后,姿态估计模块130估计新的姿态,界标识别与模型服装解析模块128重识别界标并且将掩模解析成子掩模,服装表示模块132生成新的3D服装表示,并且模型表示模块134基于新的3D服装表示来生成新的3D服装模型。然后,重投影模块138使用新的姿态执行3D服装模型的2D投影,并且将新的2D投影与原始模型图像进行比较。以上过程可以被迭代地执行预定数量(例如,3-5次)的循环或被迭代地执行直到当前的2D投影和原始模型图像之间的差异小于预定阈值。在某些实施例中,重投影包括:调整服装表示参数;生成经更新的3D服装表示;(通过配准到人体模型)生成经更新的3D服装模型;以及再次重投影3D服装模型以获得用于比较的2D投影图像。
在某些实施例中,当服装的图像仅包括服装图像而没有模型图像时,不需要姿态估计步骤,但是仍然可以针对一个或多个服装图像完成以下重投影。在某些实施例中,当不存在模型图像并且仅存在服装图像时,重投影模块将相应地使用所估计的服装界标和解析结果把3D服装模型投影到2D服装空间。利用新的界标和新的解析结果、以及新的3D服装模型,可以执行类似的迭代过程以改进3D服装模型结果。在某些实施例中,重投影过程包括:调整服装表示参数;生成经更新的3D服装表示;生成经更新的具有纹理的3D服装模型;以及再次重投影3D服装模型以获得用于比较的2D投影图像。
在某些实施例中,当服装具有多个图像时,通过相应地重投影和比较来处理所有或大多数的图像,并且来自多个图像的结果可以被平均或加权,以获得准确的3D服装模型。在某些实施例中,当多个图像包括至少一个模型图像和至少一个服装图像时,关于至少一个模型图像的重投影和比较结果可以在调整对应的参数时设置更大的权重。
在某些实施例中,对于原始图像(模型图像或服装图像)的处理,在每次重投影之后的参数调整可以包括改变3D服装模型的参数,使得当前的重投影2D图像比先前的中间重投影2D图像更好地匹配原始图像。
在某些实施例中,重投影和比较结果可以用于从先前的模块选择更好的中间结果。例如,服装界标识别可以生成最佳估计结果——根据优化目标的界标集合,然而,不是一个结果,它可以生成多于一个的界标集合(例如前三个最佳估计)。可以将具有最小重投影误差的一个确定为用于最终服装模型生成的最终的一个。例如,对于使用原始图像(模型图像或服装图像)的处理,在每次重投影之后的参数调整可以包括改变界标识别与服装解析模块126、界标识别与模型服装解析模块128、姿态估计模块130、模型表示模块134、以及纹理映射模块136中的至少一个的参数。在某些示例中,不同的一些参数集合可以用于以上模块126-136中的至少一个,每个集合与一个2D重投影相对应,并且针对该模块保持具有2D重投影图像和原始图像之间的最佳匹配的一个参数集合。在一个示例中,利用不同的参数调整袖长,并且当与一个袖长相对应的2D重投影图像与原始图像最佳匹配时保持所述一个袖长。然后,利用不同的参数调整衬衫长,并且当与一个衬衫长相对应的2D重投影图像与原始图像最佳匹配时保持所述一个衬衫长。通过调整与例如袖长和衬衫长有关的这些重要参数,可以获得精细化的3D服装模型。
图10示出根据本公开的某些实施例的工作流程1000。如图10所示,针对目标服装,检索服装信息和服装图像。服装识别提取目标服装的类型和属性。图像分类将图像中的每一个分类为服装图像或模型图像。服装图像仅包含目标服装,其可以是目标服装的前视图、侧视图或后视图;并且模型图像包含模型上穿着的目标服装,并且模型可以具有特定的姿态。模型图像的姿态可以通过姿态估计来估计。
当图像是服装图像时,服装图像分割给出用于目标服装的掩模。基于目标服装的类型来提供服装模板,并且服装模板包含界标点和经解析的部分。服装模板可变形地配准到目标服装图像的掩模,以获得目标服装的界标点和经解析的部分。
当图像是模型图像时,服装图像分割给出用于目标服装的掩模,其中掩模还指示模型的姿态。基于目标服装的类型来提供(具有或不具有姿态的)服装模板,并且服装模板包含界标点和经解析的部分。服装模板可变形地配准到目标服装图像的掩模,以获得目标服装的界标点和经解析的部分。
当来自一个或多个图像的界标和经解析的部分可用时,将这些信息用于服装表示。基于服装的类型来提供3D服装模板,并且通过将界标点拟合到3D服装模板的界标点来执行服装表示。服装表示实际上是可以用于生成目标服装的3D表示的参数集合。
提供3D人体模型,并且将目标服装的3D表示配准到3D人体模型。通过使3D表示中的服装的界标点与3D人体模型的关节对准来执行配准,以使目标3D服装模型“穿着”在人体上。
所生成的服装的3D服装模型可能不是最优结果。为了改进模型,执行重投影。具体地,对于针对模型图像的重投影,将所生成的3D服装模型设置成从模型图像估计的姿态,并且然后投影到2D。然后,将2D投影与模型图像进行比较,并且将差异用作反馈以调整用于姿态估计、界标识别和模型服装解析、服装表示的参数、以及用于调整人体模型的参数。重投影过程被迭代地执行预定的次数或直到2D投影和原始模型图像之间的差异小于预定阈值。因此,获得精细化的最终3D服装模型。对于针对服装图像的重投影,不需要姿态的估计,并且通过以下操作来执行精细化:将3D服装模型投影到与服装图像的布局相对应的2D(例如,前、后左侧或右侧视图);将2D投影图像与原始服装图像进行比较;使用比较结果调整界标识别、解析、服装表示和服装配准的参数中的至少一个;以及再次执行界标标记识别、解析、服装表示和服装配准的步骤,以获得更新的3D服装模型。重投影过程被迭代地执行预定的次数或直到2D投影和原始模型图像之间的差异小于预定阈值。因此,获得精细化的最终3D服装模型。
图11示出根据本公开的某些实施例的工作流程1100。在实施例中,3D服装模型生成应用118包括用于协调过程的调度器,并且将其已检索的信息和结果存储到服装数据。代替从一个模块到另一个模块的数据流,将全部数据/结果存储在服装数据中,并且已存储的服装数据可以由全部模块访问以用于执行其相应功能。如图11所示,已执行的调度器检索或指示某些模块以检索目标服装信息、目标图像和服装模板,并且将这些信息存储到服装数据。调度器还加载用于以预定的时间顺序处理某些服装数据的各种功能。这些功能可以包括从服装数据检索输入(来自其他模块的目标信息、目标图像和/或结果),并且将其结果存储到服装数据。
如图11所示,当处理器112执行3D服装模型生成应用118时,调度器被激活。对于目标服装,调度器检索服装信息和服装图像并且将它们存储在服装数据中。为了处理效率,服装数据优选地存在于存储器114中,并且可以是用于存储与服装有关的信息的表的形式。在获得目标服装信息之后,调度器指示服装识别模块120执行服装识别过程以提取目标服装的类型和属性,并且将服装类型和属性存储在数据中。此时,调度器还可以检索与服装类型相对应的服装的配置并且将服装的配置存储到服装数据。服装的配置可以包括服装的掩模、针对掩模的服装的界标、经解析的掩模的块或部分、关于经解析的块的服装的2D参考纹理、服装的3D模板、以及一个或多个3D人体模型。调度器还指示图像类型分类模块122对目标服装的图像中的每一个图像执行图像分类,并且将图像是服装图像还是模型图像的结果存储在服装数据中。在某些实施例中,用于图像分类的输入可以不仅包括图像,还包括图像的服装识别。换言之,服装识别结果可以用于帮助图像分类过程,以确定图像仅包含目标服装还是包含模型上穿着的服装还是根本不包含目标服装。
当图像是仅包含服装的服装图像时,调度器指示服装分割模块124执行服装图像分割。针对目标服装获得掩模,并且包含界标点和经解析的部分在内的2D服装模板可变形地配准到目标服装图像的掩模,以获得目标服装的界标点和经解析的部分。目标服装的界标点和经解析的部分也存储在服装数据中。
当图像是模型图像时,调度器指示服装分割模块124执行服装图像分割。过程给出用于目标服装的掩模,其中掩模还指示模型的姿态。从服装数据检索包含界标点和经解析的部分在内的对应的服装模板,并且将其可变形地配准到模型图像的掩模,以获得目标服装的界标点和经解析的部分。在某些实施例中,调度器还指示姿态估计模块130估计模型图像中的模型的姿态。在某些实施例中,模型图像的服装分割和模型图像中的模型的姿态估计可以一起执行。模型的分割结果和姿态存储在服装数据中。
当来自一个或多个图像的界标和经解析的部分可用时,调度器将这些信息和3D服装模板用于服装表示。具体地,通过将界标点拟合到3D服装模板的界标点来执行服装表示,并且将结果存储在服装数据中。服装表示实际上是可以用于生成目标服装的3D表示的参数集合。
调度器指示模型表示模块134将目标服装的3D表示配准到3D人体模型。通过使3D表示中的服装的界标点与3D人体模型的关节对准来执行配准,以使目标3D服装模型“穿着”在人体上。在配准之后,穿着在人体上的3D表示可以存储在服装数据中,并且被称为初步3D服装模型,因为服装模型可能不是最优的。
为了改进初步服装模型,调度器安排重投影过程。具体地,将已生成的初步3D服装模型设置为从模型图像估计的姿态,然后投影到2D。然后,将2D投影与模型图像(根据该模型图像来估计姿态)进行比较,并且将差异用作反馈以调整用于姿态估计、界标识别和模型服装解析、服装表示的参数、以及用于调整人体模型的参数。重投影过程被迭代地执行预定的次数或直到2D投影和原始模型图像之间的差异小于预定阈值。
在某些实施例中,针对在重投影循环期间的初步3D服装模型和中间3D服装模型中的每一个3D服装模型来渲染纹理,并且这些模型的纹理用于促进3D服装模型的精细化。在某些实施例中,利用纹理对最终的3D服装模型进行渲染,这有益于用户的查看。
在某些实施例中,2D投影包括针对仅具有服装的图像的3D服装模型的投影,并且以与上述类似的方式计算差异以改进3D服装模型。
在另一方面,本公开涉及存储计算机可执行代码的非暂时性计算机可读介质。代码在计算设备的处理器处被执行时,可以执行如上所述的方法900。在某些实施例中,非暂时性计算机可读介质可以包括但不限于任何物理或虚拟存储介质。在某些实施例中,非暂时性计算机可读介质可以实现为如图1所示的计算设备110的存储设备116。
总之,本公开的某些实施例提供用于基于描述和2D图像来生成服装的3D服装模型的自动的经济有效的方法。此外,通过将服装的3D服装模型投影到2D、将2D投影与原始2D图像进行比较、以及使用差异调整模型的参数,将重投影方法用于调整3D服装模型。
仅出于说明的目的提出了本公开的示例性实施例的前述描述,并且所述描述不旨在穷举或将本公开限制在所公开的精确形式。鉴于上述教导,许多修改和变化都是可能的。
选择和描述实施例是为了解释本公开的原理及其实际应用,以使本领域其他技术人员能够利用本公开和各实施例以及适合于预期的特定用途的各种修改。在不脱离本公开的精神和范围的情况下,替代实施例对于本公开所属领域的技术人员将变得显而易见。因此,本公开的范围由所附权利要求限定,而不是由以上描述和本文描述的示例性实施例限定。
参考文献:
1.Bin Zhou et al.,Garment Modeling from a Single Image,PacificGraphics,2013,vol 32,No.7。
2.Shan Yang et al.,Detailed Garment Recovery from a Single-ViewImage,2016,ArXiv:1608.01250v4。
3.Moon-Hwan Jeong et al.,Garment capture from a photograph,ComputerAnimation and Virtual Worlds,2015,vol 26,issue 3-4。
4.Knowledge Base Population(KBP),https://nlp.stanford.edu/projects/kbp/。
5.Ziwei Liu et al.,Fashion Landmark Detection in the Wild,2016,ArXiv:1608.03049v1。
6.https://www.marvelousdesigner.com/product/overview。
7.http://www.cs.cmu.edu/~vramakri/poseMachines.html。
8.Vivek Kwatra et al.,Graphcut Textures:Image and Video SynthesisUsing Graph Cuts,ACM Transactions on Graphics(TOG),2003,vol 22,issue 3。
9.Shaoqing Ren et al.,Faster R-CNN:Towards Real-Time Object Detectionwith Region Proposal Networks,2016,arXiv:1506.01497v3。
10.Jituo Li et al.,Fitting 3D garment models onto individual humanmodels,Computers&Graphics,2010,vol 34,issue 6,pp 742-755。
11.Remi Brouet et al.,Design preserving garment transfer,ACMTransactions on Graphics,2012。
- 用于使用产品描述自动生成三维虚拟服装模型的系统和方法
- 三维虚拟服装模型制作方法及装置