背景

上周末实现的《AI穿搭——AIGC永不休眠》,是通过对ChatGPT和StableDiffusion的API调用来串联整个AIGC流程,再通过WordPress将内容进行结构化沉淀。

现在AI穿搭中的衣服是基于如下的200多种穿搭风格进行拓展开的。

休闲风, 运动风, 街头风, 朋克风, 复古风, 摇滚风, 帅气风, 酷炫风, 清新淑女风, 甜美可爱风, 优雅知性风, 日常休闲风, 舒适家居风, 海滩度假风, 田园风, 波西米亚风, 简约主义风, 欧美风, 韩式风, 日系风, 中式风, 民族风, 时尚达人风, 学院风, 牛仔风, 运动休闲风, 运动时尚风, 森系风, 春季混搭风, 夏季混搭风, 秋季混搭风, 冬季混搭风, 蕾丝风, 针织风, 粉色系风, 红色系风, 黑色系风, 白色系风, 紫色系风, 灰色系风, 绿色系风, 蓝色系风, 黄色系风, 橙色系风, 红黑搭配风, 黑白搭配风, 蓝白搭配风, 粉蓝搭配风, 黄黑搭配风, 红蓝搭配风, 灰黑搭配风, 黄蓝搭配风, 绿白搭配风, 红白搭配风, 黄白搭配风, 蓝黑搭配风, 紫黑搭配风, 紫蓝搭配风, 军绿色系风, 灰蓝搭配风, 灰白搭配风, 灰蓝绿搭配风, 灰白黑搭配风, 粉红色系风, 草绿色系风, 印花风, 动物花纹风, 花卉花纹风, 水果花纹风, 格子花纹风, 条纹花纹风, 波点花纹风, 系带风, 翻领风, 大衣风, 风衣风, 棉衣风…

也就是说,先是由程序从这200多种风格中随机挑选1个,然后再让ChatGPT基于这个风格来给我挑选搭配,具体prompt如下:

推荐一套<此处填充上面的风格>的穿搭,包含衣着、鞋子、耳环、项链这几方面

然后便能得到ChatGPT给出的单品搭配:

衣着:宽松上衣, A字裙,高腰牛仔裤

鞋子:白色运动鞋,小白鞋

耳环:珍珠耳钉,金属圆环

项链:简约项链,细链项链

紧接着,再拿这些单品搭配,去StableDiffusion中结合lora生成符合预期的穿搭。

这整条链路对于AIGC来产生UGC内容来说没什么问题,因为UGC内容需要需要多样性和随机性,以降低用户的审美疲劳。

但对于普通大众来说,这可能会有些理想主义了,因为上述的搭配单品是ChatGPT从巨量的训练语料库中挑选出来的,而普通人很难拥有它推荐的每一件搭配(氪金玩家忽略)。因此更适合大多数人的推荐场景,不是“给我推荐好看的穿搭”,而是“从我的衣橱里给我推荐符合实际场景的穿搭”。

这里着重强调的两点是穿搭的备选范围和穿搭的实际场景,例如很多时候我们知道有些搭配好看但没有这件衣服,再例如明明在冬天却推荐了T恤。

idea萌芽,充分利用ChatGPT

以往的智能穿搭,更多的是从颜色和预置的搭配公式等相对较少的维度看来实现推荐逻辑,缺失的结合语境和上下文的能力。

而这正是ChatGPT强大的地方,它具有强大的语义理解和表达力,基于这一点我们就能推演出更加具象化的生活应用场景,所以现在我们完全可以尝试基于ChatGPT的实现。

初步尝试,第一次对话

首先,需要有一个包含很多衣服的衣橱,这一点仍然可以借助ChatGPT。以上衣来举例

输入:

随机推荐20款女生的上衣,要求每款标明颜色、材质和款式,比如“白色针织毛衣”,其中款式尽量不要重复。

输出:

黑色丝绸衬衫

灰色羊毛针织衫

绿色麻质长袖衬衫

红色绒面布外套

白色蕾丝上衣

灰色丝绸罩衫

蓝色牛仔夹克

粉色毛线套头毛衣

黄色棉质卫衣

红色雪纺抹胸上衣

灰色棉麻T恤

蓝色丝绸衬衫

紫色针织开衫

绿色长袖紧身T恤

白色棉质衬衫

粉色雪纺上衣

黑色皮革外套

灰色毛线开衫

蓝色印花衬衫

红色长袖衬衫

以此类推,再让它依次生成下身和鞋子,最终整理如下:

上身 下身 鞋子
黑色丝绸衬衫 黑色牛仔长裤 黑色亮皮高跟鞋
灰色羊毛针织衫 灰色毛呢短裙 白色帆布鞋
绿色麻质长袖衬衫 绿色半身裙 红色绒面靴子
红色绒面布外套 红色丝绸长裤 蓝色牛皮平底鞋
白色蕾丝上衣 白色牛仔短裤 灰色运动鞋
灰色丝绸罩衫 灰色高腰裤 粉色凉鞋
蓝色牛仔夹克 蓝色长裙 绿色帆布鞋
粉色毛线套头毛衣 粉色休闲裤 黄色绒面靴子
黄色棉质卫衣 黄色紧身裤 白色绸缎高跟鞋
红色雪纺抹胸上衣 红色皮革裙 灰色牛皮平底鞋
灰色棉麻T恤 灰色运动裤 红色漆皮高跟鞋
蓝色丝绸衬衫 蓝色雪纺长裙 黑色绸缎平底鞋
紫色针织开衫 紫色连体裤 棕色皮革马丁鞋
绿色长袖紧身T恤 绿色牛仔短裙 粉色球鞋
白色棉质衬衫 白色运动裤 黑色绸缎凉鞋
粉色雪纺上衣 粉色毛呢长裤 蓝色亮皮高跟鞋
黑色皮革外套 黑色裙裤 白色皮质平底鞋
灰色毛线开衫 灰色休闲裤 绿色亮皮高跟鞋
蓝色印花衬衫 蓝色短裙 灰色绒面球鞋
红色长袖衬衫 红色高腰裙 紫色绸缎凉鞋

有了这些单品信息之后,就有了自己的衣橱。接下来通过如下代码输出对应的prompt:


choices = f'我的上衣有:{",".join(wardrobe.up_cloths)};下衣有:{",".join(wardrobe.down_cloths)};鞋子有{",".join(wardrobe.shoes)}。'

prompt = f'{choices}请根据这些信息推荐我一套穿搭,并说明理由。'

print(prompt)

输出Prompt如下:

我的上衣有:黑色丝绸衬衫,灰色羊毛针织衫,绿色麻质长袖衬衫,红色绒面布外套,白色蕾丝上衣,灰色丝绸罩衫,蓝色牛仔夹克,粉色毛线套头毛衣,黄色棉质卫衣,红色雪纺抹胸上衣,灰色棉麻T恤,蓝色丝绸衬衫,紫色针织开衫,绿色长袖紧身T恤,白色棉质衬衫,粉色雪纺上衣,黑色皮革外套,灰色毛线开衫,蓝色印花衬衫,红色长袖衬衫;下衣有:黑色牛仔长裤,灰色毛呢短裙,绿色半身裙,红色丝绸长裤,白色牛仔短裤,灰色高腰裤,蓝色长裙,粉色休闲裤,黄色紧身裤,红色皮革裙,灰色运动裤,蓝色雪纺长裙,紫色连体裤,绿色牛仔短裙,白色运动裤,粉色毛呢长裤,黑色裙裤,灰色休闲裤,蓝色短裙,红色高腰裙;鞋子有黑色亮皮高跟鞋,白色帆布鞋,红色绒面靴子,蓝色牛皮平底鞋,灰色运动鞋,粉色凉鞋,绿色帆布鞋,黄色绒面靴子,白色绸缎高跟鞋,灰色牛皮平底鞋,红色漆皮高跟鞋,黑色绸缎平底鞋,棕色皮革马丁鞋,粉色球鞋,黑色绸缎凉鞋,蓝色亮皮高跟鞋,白色皮质平底鞋,绿色亮皮高跟鞋,灰色绒面球鞋,紫色绸缎凉鞋。请根据这些信息推荐我一套穿搭,并说明理由。

拿着这个Prompt给到ChatGPT,得到如下的回复:

我为您推荐以下穿搭:

黑色丝绸衬衫 + 灰色高腰裤 + 绿色帆布鞋

这套穿搭相对简单,但是也很有气质。黑色丝绸衬衫时尚百搭,可以搭配各种下装。搭配灰色高腰裤,可以突出身材比例,让腿部看起来更加修长。绿色帆布鞋一方面能够注入一定的时尚元素,另一方面对于整体颜色的搭配来说也非常和谐。

回复内容看上去还是有板有眼的,最后check推荐的三个单品,确实都是上述衣橱里已经有的,而非它凭空YY出来的。

有了以上的基础,便可以丰富具体的场景了。

场景模拟,结合现实场景

场景一

场景:

今天阳光很好,室外温度15~22度,我早上8点坐地铁上班,晚上9点坐公交车回来。

建议:

根据今天的气温和出行方式,我建议你穿上灰色羊毛针织衫和黑色牛仔长裤,搭配白色帆布鞋。

灰色羊毛针织衫可以很好地保暖,同时也很舒适。黑色牛仔长裤是百搭款式,与灰色羊毛针织衫搭配可以营造出干练、稳重的感觉。而白色帆布鞋既舒适又时尚,可以很好地突出整个穿搭的休闲感。这套穿搭也很适合坐地铁和公交车出行,不管是上下车还是走路,都很方便。

分析回复:

因为室外温度15~22度,所以灰色羊毛针织衫可以很好地保暖;

因为上下班公交地铁,所以不管是上下车还是走路,都很方便;

场景二

场景:

今天上午有大雨,室外温度5~10度,我早上8点打车上班,晚上9点步行回来。

建议:

根据今天的天气和出行方式,我建议你穿上黑色皮革外套、灰色高腰裤和黑色绸缎平底鞋,再搭配上白色棉质衬衫。

黑色皮革外套可以很好地防水、保暖,能够有效应对下雨天的天气状况。灰色高腰裤是百搭款式,与黑色皮革外套搭配可以营造出干练、稳重的感觉。黑色绸缎平底鞋既舒适又时尚,可以很好地突出整个穿搭的优雅感。白色棉质衬衫的颜色可以很好地中和整个穿搭的暗沉感,让整个穿搭更显明亮。

分析回复:

我特意添加了下雨的场景,看它的反馈,结果依然出众,直接推荐了黑色皮革外套,并结合天气和温度给出可以很好地防水、保暖的理由。

场景三

场景:

今天天气晴朗,室外温度35~40度,我早上8点骑自行车上班,中午还要步行出门办个事,晚上9点打车回来。

建议:

根据今天的天气和出行方式,我建议你穿上白色棉质衬衫、蓝色牛仔短裤和白色帆布鞋,再搭配上紫色针织开衫。

白色棉质衬衫透气性好,穿着舒服,能够很好地吸收汗水,并且白色具有很好的遮阳效果。蓝色牛仔短裤可以很好地展现出夏日的轻松、自由感,同时可以很好地搭配上各种鞋款。白色帆布鞋舒适度高,通风透气,符合夏季出行的需求。紫色针织开衫可以很好地增加穿搭的层次感,同时也是夏季必备的轻薄外套。

分析回复:

我直接让温度上升到35~40度了,它马上就推荐白色棉质衬衫,因为衬衫透气性好,穿着舒服,能够很好地吸收汗水,并且白色具有很好的遮阳效果。对应的还有蓝色牛仔短裤和白色帆布鞋。

场景总结

以上几个场景给到反馈都蛮不错,实际应用过程中,关于场景这部分的补充我们可以做到更多,比如

通过程序化自动输入当天是工作日或是周末,让它推荐更合适的上班或者周末的衣服;

通过天气API接口查询当前天气,自动将天气和温度信息填充到上下文中,让它推荐适合这个天气的衣服;

通过读取手机上的日程安排,来推荐对应的衣服,如读到周六要去爬山,就会推荐爬山的装备;

技术实现,可行性分析

录入衣橱

用户用手机拍下每件衣服的照片,然后通过手动输入或识图API,得到该衣服的颜色、材质和款式,然后录入到个人的线上衣橱中。也就是说录入线上衣橱之后,线上衣橱中的每件衣服,都对应自己的一件实体衣物。

当然这个录入还有更好的方案,比如高级一些的就是实体衣橱内置摄像头,衣服放进去就会自动识别和录入。

触发器

触发器里具体做的事情就是执行上述的推荐逻辑。

触发器的条件可以是,设置固定时间(如工作日早上8点),或者结合智能穿戴设备(如智能手表检测到你醒来),再或者结合智能家居(通过人在传感器检测早上去洗手间洗漱完)等等。

填充上下文

将前面提到的“天气”、“温度”、“时间”、“交通方式”、“日程”等全部信息均进行输入,以得到更加全面的上下文。

不夸张的说,当上下文足够丰富时,ChatGPT思考的全面性和合理性会远超人类的。

处理推荐结果

通过ChatGPT的API来获取推荐,并将推荐信息以某种形态进行展示。

这里的形态,可以有很多拓展,比如:

结合“天猫精灵”或“小爱音箱”直接进行语音播报;

结合AI绘画,直接将穿搭作为输入,生成实际的上身效果,并显示在手机或者衣柜旁边的电子屏上;

结合智能衣柜,自动将选中的衣服旋转到面前;

总结

以上是目前的想法和一些初步尝试,欢迎讨论、交流。