智能搭配,衣櫥里的衣服也能這么搭:Snap, Match, & Rock 穿衣助手Gemini
再也不用纠结穿什么了——Gemini让你轻松搞定出门准备!!!
用一个穿着T恤和短裤的卡通人物作为封面!
厌倦了对着衣柜发呆,不知道该搭配什么来配你心爱的T恤?我们都有过这样的经历!这就是为什么我创建了一个APP,它能帮你解决搭配衣服时的猜测问题。通过Gemini的强大AI,你现在可以拍一张你穿T恤的自拍,立刻得到你衣柜里匹配的裤子或短裤推荐!
它是怎么工作的:向量搜索和LLM魔力的混合这款应用利用了检索增强生成(RAG)模式,结合了向量搜索的高效性和大型语言模型(简称LLM)的细致理解。以下是具体说明:
视觉编码: 当你上传自拍时,该应用会分析你的T恤图像,专注于颜色、图案、风格和领口等方面。Gemini 根据你的喜好,为你准备一个详细的搭配建议。这些信息会被转换成向量表示,用数值形式捕捉其精髓。
衣橱数字化: 想象一下,你整个衣橱都有了数字版本!在开始使用应用时,你需要上传你的衣物照片。应用会将这些照片转换为数据,生成一个可以搜索的风格数据库。
AI驱动的匹配: 现在是有趣的部分开始啦!应用通过向量搜索,快速从你的衣橱中找到与你选中的上衣向量相近的下装。这会将选择范围缩小到最匹配的单品。
LLM 验证和优化: 虽然向量搜索提供了一个很好的起点,但 Gemini 的 LLM 添加了一层类似人类的判断。它会综合考虑各种因素,如 POLO衫的风格、场合、当前的潮流,甚至您的个人风格偏好(您可以在应用中设置),以制定最终推荐。
高层次流程图
双子的力量:背景及更多Gemini的100多万个上下文窗口在这里是一个游戏规则改变者。它使LLM(大规模语言模型)能够做到以下几点:
了解你所有的衣服: Gemini 不仅仅分析你所有的穿搭记录,还会给你提出更个性化的搭配建议。
根据您的偏好进行微调: 您更喜欢休闲、正式还是酷炫的风格?Gemini 会学习您的喜好并据此调整推荐。我们已经为 Gemini 1.5 Pro 模型进行了微调,这样您就不必担心样式通用的问题。
紧跟潮流: 通过访问Fine-Tuned实时数据和你的衣橱信息,Gemini让你的穿搭总是紧跟潮流。
我们是怎么搞的?1. 在AlloyDB中创建衣橱数据库
这里有一个详细的codelab教程,讲述了我们如何在AlloyDB中进行这项工作的。
2. 微调 Gemini 模型,让它更符合您的时尚品味
在这里了解更多关于实战微调的例子。
3. 开发一个网页应用,该应用与调整好的模型交互,分析你常穿的上衣并推荐合适的下装搭配
为此,我使用了Java Spring Boot应用程序和一个简单的Thymeleaf前端。控制器与微调过的Gemini通信,以分析服装并推荐适合的风格!这是用Java编写的调用模型的代码片段:(Java代码)
try (VertexAI vertexAi = new VertexAI(PROJECT_ID, LOCATION); ) {
GenerationConfig generationConfig =
GenerationConfig.newBuilder()
.setMaxOutputTokens(2048)
.setTemperature(0.4F)
.setTopK(32)
.setTopP(1)
.build();
GenerativeModel model = new GenerativeModel("<<MODEL>>", generationConfig, vertexAi);
String context =
"所附图片展示了前景中人物穿着特定上衣的情景。图片可能包含背景中的其他细节,也可能没有显示任何衣物。忽略图片中的其他背景细节,仅描述人物所穿的上衣。若图片中未显示任何上衣,请回复警告信息:'请拍一张穿T恤的照片!'。如果图片中包含T恤或其他类似上衣,直接描述上衣,无需使用 'a photo of a' 或 'a picture of a' 开头。直接描述即可,仅描述图片中的实际上衣,不要自行编造。例如:一件白色T恤,带有蓝色花卉图案,显然是棉质材料。然后,基于上述描述,推荐五种独立的下装(如裤子、裙子、牛仔裤、短裤、长裤、紧身裤),这些推荐应与上衣描述相配,既时尚又风格一致。确保下装推荐具体到颜色、风格和材质,不要过于宽泛。仅返回推荐部分,以 'STYLE RECOMMENDATION:' 作为开头。因此,你的回复应遵循以下示例结构:一件白色T恤,带有蓝色花卉图案,显然是棉质材料。STYLE RECOMMENDATION: <<推荐内容占位符>>";
Content content = ContentMaker.fromMultiModalData(
context,
PartMaker.fromMimeTypeAndData("image/png", readImageFile_bytes(baseline_url))
);
GenerateContentResponse response = model.generateContent(content);
String responseOutput = ResponseHandler.getText(response);
}catch(Exception e){
System.out.println(e);
}
4. 在 AlloyDB 中进行基于 RAG 的查询功能以匹配并验证一致性
查询以获取已匹配并验证的搭配数据:
select id, content, uri, regexp_replace(gemini_validation, '[^a-zA-Z,: ]', '', 'g') as gemini_validation from (
SELECT id, content, uri,
cast(ARRAY_AGG(LLM_RESPONSE) as text) as gemini_validation
FROM (
SELECT id, content, uri,
json_array_elements( google_ml.predict_row( model_id => 'gemini-1.5',
request_body => CONCAT('{
"contents": [
{ "role": "user",
"parts":
[ { "text": "阅读以下用户搜索文本:', recommended_text, '。注意,用户搜索文本中的每个逗号分隔的短语都是一个独立的搭配建议。检查以下产品库存是否与任何一项推荐足够接近:', content, '。返回一个一行的响应,包含3个值:1) 匹配:如果这两个上下文在颜色或色系、风格或面料方面有合理匹配,应为简单的是或否。只有在完全不符合用户搜索标准时才选择否。2) 百分比:匹配的程度,请确保准确性。3) 两个产品之间的差异简短描述。记住,如果用户搜索文本中禁止存在的某些属性出现在记录中,则应为不匹配。"
} ]
}
] }'
)::json))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text'
::text
AS LLM_RESPONSE
FROM (
SELECT id, pdt_desc AS content, uri, ' + search_text + ' as recommended_text
FROM apparels where sub_category = 'Bottomwear'
ORDER BY embedding <=> embedding('textembedding-gecko', ' + search_text + ')::vector LIMIT 10) AS xyz ) AS X
group by id, content, uri
) as final_matches
where regexp_replace(gemini_validation, '[^a-zA-Z,: ]', '', 'g') like '%MATCH%:%YES%'
最内层的查询代表基于矢量搜索的匹配过程,在这个过程中,我们直接利用AlloyDB中的文本嵌入模型来查找与Gemini推荐的风格选项最相似的匹配项。
外层查询只是获取最接近的匹配项,并要求Gemini进行类似人类的验证,以确认该匹配项是否真正符合推荐和风格,同时也要紧跟潮流!
5. 展示Gemini批准的匹配项,使用简单的Thymeleaf HTML前端。
<div id="imagerecommendationsdiv" th:if="${not #lists.isEmpty(recommendation)}">
⬇️
<center>
<div th:each="recc : ${recommendation}">
<img th:class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="${recc}" alt="推荐的图片" />
</div>
</center>
</div>
还有 SERVERLESS!
所以,这些功能和操作组件都在谷歌云上以无服务器模式流畅运行。
我用Cloud Run来运行基于Spring Boot和Thymeleaf的web应用,并用Cloud Run Functions来检查与我基于AlloyDB的推荐引擎的交互。
演示这是演示片段,在缩略图中是我最喜欢的裤子之一!
限时(几天内),你可以在这里访问该应用程序,试试它!限时几天哦!
演示影片
就这样吧!这是我的github仓库中数据库引擎部分的链接(这篇博客中的查询是为此用例定制的,因此与仓库中的略有不同)。Spring Boot应用可以在这里找到这里。如果你有兴趣扩展它并添加更多功能,可以提交PR并通过我的LinkedIn个人资料联系我,这里!
《时尚科技的未来》这款应用只是在时尚领域中展现的部分人工智能可能性。你不必想象,因为有了Imagen,你就有 Imagen 了。
- 虚拟试穿: 在不实际换衣服的情况下看到衣服穿在你身上的样子。使用Imagen3,你可以在你的自拍上试穿搭配!
- 基于AI的设计: 根据你的偏好和体型定制服装。
- 可持续衣柜管理: 优化你的衣柜,减少浪费,最大化时尚。
有了像 Gemini 這樣的 AI,未來的時尚將會是個性化、創意十足且輕松時髦的。所以,甩掉穿衣烦恼,利用AI的力量,发现你最适合的造型。
今天我尝试了双子座的风格!
发生了什么事?
我们即将在印度的谷歌办公室(海得拉巴、孟买、班加罗尔、古尔冈)举行以“构建与博客马拉松”为主题的活动,你可以在为期两天的(也可线上参与)沉浸式体验中实现你的创意,还有机会赢取丰厚奖励。详情请见 https://codevipassana.dev!
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章