自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用

發(fā)布于 2024-3-28 13:29
瀏覽
0收藏

淘寶人生2(又名:第二人生)是淘寶的一個(gè)虛擬人裝扮類應(yīng)用,承擔(dān)了用戶在淘寶的第二個(gè)人生的作用。我們旨在通過(guò)AI為淘寶人生2的用戶提供豐富有趣的可玩性內(nèi)容,隨著最近火熱的AIGC技術(shù)的發(fā)展,我們也進(jìn)行了相關(guān)嘗試和落地,目前已經(jīng)上線了AI拍照風(fēng)格化、AI寫真館、AI服飾涂鴉等項(xiàng)目。本文主要以AI服飾涂鴉為例介紹我們?cè)贏IGC圖像領(lǐng)域的探索和應(yīng)用,希望能夠?qū)Υ蠹矣兴鶈l(fā)和幫助,也歡迎大家建議和合作。

一、項(xiàng)目背景

為了能夠讓淘寶人生2的用戶擁有更多可互動(dòng)性的有趣玩法,提高社區(qū)內(nèi)容發(fā)布量,我們開(kāi)發(fā)了AI服飾涂鴉項(xiàng)目,能夠讓用戶自行創(chuàng)作生成相關(guān)服飾,增加用戶的參與感和成就感。具體玩法主要是:通過(guò)選定一張底圖,用戶可以在圖上進(jìn)行自由涂鴉和創(chuàng)作,同時(shí)也支持輸入文字描述,然后通過(guò)AIGC算法技術(shù),最終生成和用戶涂鴉相像的高質(zhì)量風(fēng)格圖像。下列涂鴉來(lái)自淘寶人生2的用戶創(chuàng)作:

AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖1 AI服飾涂鴉示例


二、前置技術(shù)介紹

本節(jié)內(nèi)容主要是簡(jiǎn)介一些項(xiàng)目使用到的關(guān)鍵技術(shù),不會(huì)長(zhǎng)篇大論進(jìn)行具體的理論分析,只是讓大家有一個(gè)大致的了解,如果想深入了解相關(guān)的原理可以查看論文或者網(wǎng)上大佬們的文章博客。

Stable Diffusion

在具體圖像生成算法選擇上,我們選擇以Stable Diffusion(后續(xù)簡(jiǎn)稱為SD)技術(shù)為核心,進(jìn)行開(kāi)發(fā)和優(yōu)化。其核心是基于Latent Diffusion Models(LDMs)實(shí)現(xiàn)的的文生圖模型,SD模型基于Latent的擴(kuò)散模型的優(yōu)勢(shì)是因?yàn)閳D像的Latent空間要比Pixel空間小得多,計(jì)算效率更高效。下圖是其主要框架結(jié)構(gòu),它先采用AutoEncoder能夠?qū)D像壓縮到Latent空間,然后通過(guò)擴(kuò)散模型并在U-Net中引入TextCondition來(lái)實(shí)現(xiàn)基于文本生成圖像的Latents,最后送入AutoEncoder的Decoder模塊解碼得到生成的圖像。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖2 基于Latent的擴(kuò)散模型結(jié)構(gòu)


SD模型主要包括了三大件:圖像壓縮還原模型(變分自編碼器VAE),文本編碼器(CLIP Text Encoder)和潛空間擴(kuò)散模型(U-Net結(jié)構(gòu))。

  1. VAE其分為Encoder和Decoder兩部分,Encoder將圖像壓縮到Latent空間,而Decoder將Latent解碼為圖像。
  2. CLIPTextEncoder:理解輸入的文字描述,把文字信息轉(zhuǎn)換成特征向量,并注入到擴(kuò)散模型的UNet中,指導(dǎo)圖像生成。
  3. UNet:擴(kuò)散模型的主體,在潛空間中逐步處理擴(kuò)散信息,用來(lái)實(shí)現(xiàn)文本引導(dǎo)下的圖像Latent生成。

SD更深入的原理和具體訓(xùn)練過(guò)程和我們?cè)谶@不詳細(xì)展開(kāi),我們關(guān)注其整體的推理部分,我們將上述三個(gè)大模塊組合一下,以一個(gè)具體示例進(jìn)行展示:

AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖3 SD模型三大件工作流程

通過(guò)上面展示的SD流程,我們即可實(shí)現(xiàn)給定一段文本描述prompt后生成相關(guān)的圖像。

ControlNet

上面SD模型能夠通過(guò)prompt以及image的輸入,生成一張圖像,但是其生成的圖像不太可控,具有一定的抽卡性質(zhì),有非常多千差萬(wàn)別的圖像符合輸入描述的文本。

而ControlNet的出現(xiàn),將AI繪畫(huà)推向了高峰,ControlNet是一個(gè)神經(jīng)網(wǎng)絡(luò)架構(gòu),該網(wǎng)絡(luò)可以控制SD模型使其支持更多的輸入條件,提高圖像生成模型在特定結(jié)構(gòu)和布局控制上的能力。

AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖4 ControlNet結(jié)構(gòu)

圖中ControlNet結(jié)果的locked部分固定了原始模型的權(quán)重,保留原始模型已經(jīng)學(xué)習(xí)到的圖像生成能力,通過(guò)額外學(xué)習(xí)網(wǎng)絡(luò)參數(shù)加入到原始模型中,以最終控制圖像的生成。其中zero convolution是一個(gè)1x1的卷積層,初始化權(quán)重和偏差都為0,以保證訓(xùn)練初始階段隨機(jī)噪聲不會(huì)影響主干網(wǎng)絡(luò)。ControlNet在SD模型中應(yīng)用的結(jié)構(gòu)如下:

AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖5 ControlNet和StableDiffusion結(jié)合

通過(guò)不同的控制條件作為輸入輸出訓(xùn)練,即可實(shí)現(xiàn)通過(guò)物體邊緣、人物姿態(tài)、深度圖等等條件來(lái)控制SD模型推理得到的圖達(dá)到和輸入布局類似的效果。一些不同控制條件下的SD+ControlNet生圖效果:

AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖6 不同控制條件下的SD+ControlNet生圖效果

LoRA

由于大模型的訓(xùn)練需要非常高的數(shù)據(jù)和機(jī)器資源成本,即使是進(jìn)行 Fine-tuning微調(diào)也需要較多算力資源的消耗。而LoRA(Low-Rank Adaptation)的提出,便大大節(jié)約了算力、提高了效率,它能夠讓下游細(xì)分領(lǐng)域任務(wù)的微調(diào)大面積應(yīng)用起來(lái)。其最初是為L(zhǎng)LM大語(yǔ)言模型設(shè)計(jì)的低秩適配器,一開(kāi)始SD并不支持LoRA,據(jù)說(shuō)Simo Ryu是第一個(gè)讓SD支持LoRA的人。

其主要原理是假設(shè)模型在適配特定任務(wù)時(shí)的參數(shù)改變量是低秩的,通過(guò)低秩分解來(lái)模擬參數(shù)的改變量,從而實(shí)現(xiàn)間接的訓(xùn)練神經(jīng)網(wǎng)絡(luò)的參數(shù),由此引出低秩自適應(yīng)方法LoRA。

AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖7 LoRA結(jié)構(gòu)

LoRA在SD模型中的訓(xùn)練邏輯是首先凍結(jié)SD模型的權(quán)重,然后在SD模型的U-Net結(jié)構(gòu)中注入LoRA模塊,并將其與CrossAttention模塊結(jié)合,并只對(duì)這部分參數(shù)進(jìn)行微調(diào)訓(xùn)練,其中低秩分解是由兩個(gè)低秩矩陣的乘積組成。LoRA模型能在較小的數(shù)據(jù)集上進(jìn)行訓(xùn)練,即使是幾張圖像也能夠完成特定的細(xì)分領(lǐng)域微調(diào)任務(wù)。

雖然LoRA模型能夠比較好的適應(yīng)特定的任務(wù)比如圖像風(fēng)格化,但是總體來(lái)說(shuō)在圖像的多樣性和泛化性上還是有所欠缺的,因此我們?cè)陧?xiàng)目中大部分情況下不同的風(fēng)格還是選擇使用不同的底模。

三、生圖服務(wù)部署

目前大家常用的SD服務(wù),主要是SD-WebUI和ComfyUI,但是對(duì)于一個(gè)有特定業(yè)務(wù)需求且要提供給大量用戶使用的在線服務(wù)而言,穩(wěn)定性、代碼可控性、定制開(kāi)發(fā)、開(kāi)源協(xié)議等等方面都有一定的要求,因此我們基于集團(tuán)內(nèi)部已有的能力,站在巨人的肩膀上搭建了基于diffusers庫(kù)二次開(kāi)發(fā)以適應(yīng)我們自己業(yè)務(wù)的SD生圖框架。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖8 SD生圖工程框架

該框架能夠通過(guò)json入?yún)⑴渲肧D絕大部分功能如ControlNet、LoRA、VAE、Sampler等等模塊,并使用集團(tuán)模型加速庫(kù)來(lái)實(shí)現(xiàn)高效的文生圖和圖生圖等。

同時(shí)也提供了類似于sd-webui的界面方便進(jìn)行prompt和模型等的參數(shù)調(diào)優(yōu),對(duì)模型的下載加載、生命周期管理和圖像的管理也進(jìn)行了開(kāi)發(fā)和優(yōu)化。

模型管理

我們對(duì)原始SD代碼流程進(jìn)行了優(yōu)化,將ControlNet作為可插拔的模塊進(jìn)行管理,對(duì)ControlNet模型進(jìn)行緩存,在初始構(gòu)建SD的Pipeline時(shí),不指定使用的ControlNet,而是在SD模型推理的時(shí)候,根據(jù)參數(shù)來(lái)決定動(dòng)態(tài)加入ControlNet,這樣做的好處是帶ControlNet和不帶ControlNet的SD可以共用一個(gè)Pipeline,在輸入?yún)?shù)變化的時(shí)候避免Pipeline切換帶來(lái)的開(kāi)銷,同時(shí)對(duì)ControlNet模型的單獨(dú)管理,也能夠使ControlNet在不同底模上的復(fù)用。同理,LoRA模型也是類似。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖9 推理時(shí)動(dòng)態(tài)加載ControlNet模型

對(duì)于場(chǎng)景只有單個(gè)底模的業(yè)務(wù)來(lái)說(shuō),提前初始化好Pipeline并加載好底模,問(wèn)題不大。但是許多業(yè)務(wù)場(chǎng)景下存在多個(gè)底模切換推理的問(wèn)題,而底模通常都非常大,直接從磁盤加載會(huì)存在高達(dá)幾十秒的耗時(shí),這對(duì)于在線推理來(lái)說(shuō)是不可忍受的。

顯然,我們可以把需要的底模都提前加載到GPU,切換的時(shí)候就不需要再重新load,反正推理的時(shí)候還是只有一個(gè)模型在推理,不會(huì)影響推理速度,實(shí)現(xiàn)無(wú)縫切換。但是GPU顯存畢竟是有限的,考慮到從內(nèi)存轉(zhuǎn)移到顯存比直接從磁盤load還是快很多的,而內(nèi)存可以擴(kuò)展的更大,因此對(duì)于底模的管理,我們加入了顯存-內(nèi)存的LRU隊(duì)列汰換策略,可以做到支持同時(shí)load n個(gè)模型進(jìn)顯存(取決于你的GPU顯存),同時(shí)將m個(gè)模型load進(jìn)內(nèi)存(取決于你的內(nèi)存容量),然后通根據(jù)入?yún)⑼ㄟ^(guò)LRU策略進(jìn)行顯存和內(nèi)存之間的轉(zhuǎn)移和推理。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖10 推理模型內(nèi)存-顯存LRU隊(duì)列汰換

服務(wù)部署

一般常規(guī)的方式,是用戶發(fā)起請(qǐng)求,服務(wù)器接受請(qǐng)求,然后分發(fā)到空閑的GPU機(jī)器進(jìn)行推理,最后返回。我們采用集團(tuán)的TPP服務(wù)平臺(tái),由vipserver綁定了多臺(tái)GPU機(jī)器,然后通過(guò)TPP調(diào)用vipserver的方式進(jìn)行服務(wù)調(diào)用,但是發(fā)現(xiàn)實(shí)際調(diào)度的時(shí)候存在負(fù)載不均衡的情況,會(huì)出現(xiàn)1臺(tái)機(jī)器空著,1臺(tái)機(jī)器在排隊(duì)的情況,以及存在超時(shí)的問(wèn)題??赡苁怯捎谖覀兊臉I(yè)務(wù)場(chǎng)景相對(duì)來(lái)說(shuō)QPS較小推理時(shí)長(zhǎng)較大,對(duì)于這種方式的調(diào)度沒(méi)有做針對(duì)性優(yōu)化。

因此,我們需要尋找一種可以榨干GPU的方案。可以想到的是,自己建立一個(gè)中心化的請(qǐng)求服務(wù)器,所有GPU機(jī)器向它報(bào)告自己的空閑狀態(tài),然后根據(jù)機(jī)器狀態(tài)進(jìn)行用戶請(qǐng)求任務(wù)的分發(fā)。同時(shí)我們了解到服務(wù)端同學(xué)那邊之前已經(jīng)為離線渲染任務(wù)做了請(qǐng)求輪詢拉取的方案,由于時(shí)間和成本關(guān)系,于是我們就直接采用了這種方式。所有請(qǐng)求先進(jìn)入服務(wù)端的任務(wù)隊(duì)列,由服務(wù)端進(jìn)行超時(shí)、重試、限流等策略控制,算法部署的GPU機(jī)器直接對(duì)任務(wù)隊(duì)列進(jìn)行輪詢,只要拉取到任務(wù)后進(jìn)行推理返回即可。這樣就解決了負(fù)載均衡的問(wèn)題,但是不足的是可能存在輪詢的百ms級(jí)的時(shí)延問(wèn)題,但是對(duì)于大模型推理時(shí)間來(lái)說(shuō)這也是可以接受。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖11 服務(wù)請(qǐng)求流程

涂鴉項(xiàng)目

回到我們的AI服飾涂鴉項(xiàng)目,我們整體的Pipeline是采用基于SD的文+圖+Controlnets來(lái)對(duì)用戶涂鴉進(jìn)行風(fēng)格化。針對(duì)每期的主題風(fēng)格,我們會(huì)對(duì)模型、prompt等參數(shù)進(jìn)行調(diào)優(yōu)和部署,其中用戶的涂鴉和背景底圖是分別進(jìn)行傳輸?shù)模覀儗?duì)其進(jìn)行合成后編碼成圖像潛空間特征,作為初始噪聲替代原始SD文生圖的隨機(jī)噪聲,文本輸入我們以預(yù)先設(shè)定的prompt和用戶自己輸入的prompt疊加進(jìn)行文本特征提取,再選擇幾個(gè)合適的ControlNet對(duì)生成圖像布局進(jìn)行一定的約束,最終生成和用戶涂鴉相似又不失美感的服飾圖像。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖12 AI服飾涂鴉生圖流程

考慮到用戶有調(diào)皮鬼,可能會(huì)把圖全部涂黑或者涂滿隨便畫(huà),所以需要加入ControlNet的Pose模型來(lái)約束生成人物,同時(shí)考慮到用戶涂鴉后會(huì)破壞人物Pose的識(shí)別,所以使用的是對(duì)涂鴉前的原圖進(jìn)行識(shí)別,最后這樣即使亂涂也能生成一定的人物。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖13 全黑圖人物生成

生成多張圖

為了讓用戶一次涂鴉生成多張圖片進(jìn)行挑選,一種最簡(jiǎn)單的方式就是直接使用4個(gè)不同隨機(jī)種子作為噪聲擾動(dòng),生成4張不同的圖,而由于我們的Pipeline加入了較多的約束信息,會(huì)導(dǎo)致這種方式生成的圖結(jié)果差異性不大。于是我們提供了2個(gè)底模4套參數(shù)分別來(lái)生成4張圖,使其跟涂鴉圖相似的同時(shí)又具有較大的差異性。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖14 一次性涂鴉生成4張具有差異性的圖

目前為了生成較為精美的圖像,我們使用了較大分辨率和較高的迭代步數(shù),以至于生成一張圖像要接近10s。如果生成4張圖,直接串行生成,時(shí)間上要比較久了,考慮到用戶體驗(yàn)肯定不能讓用戶等這么久。怎么辦?

第一種方式:一張一張逐步返回。每生成完一張圖返回一張,讓用戶每隔一段時(shí)間看到一張圖,不至于等很長(zhǎng)時(shí)間再一次性出圖,但全部生成完的總體時(shí)間還是比較長(zhǎng)。第二種方式:加錢。凡是能用錢解決的問(wèn)題都不是問(wèn)題,增加GPU推理機(jī)器,將用戶的一次請(qǐng)求,由服務(wù)端分成4個(gè)并行任務(wù),然后算法分別在4臺(tái)機(jī)器上同時(shí)推理進(jìn)行返回。最后選擇了第二種方案,加機(jī)器減少用戶的等待時(shí)間。

AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖15 單次請(qǐng)求分成4份并行處理

這時(shí)候有同學(xué)可能就要問(wèn)了,不能直接在一臺(tái)機(jī)器上同時(shí)推理嗎?問(wèn)得好,我們確實(shí)嘗試過(guò)在一臺(tái)機(jī)器上多實(shí)例同時(shí)進(jìn)行模型推理,但是結(jié)果發(fā)現(xiàn)推理時(shí)長(zhǎng)變長(zhǎng)了,應(yīng)該是受限于計(jì)算帶寬的瓶頸,不足以支撐多個(gè)任務(wù)同時(shí)推理。

部分優(yōu)化

我們將部分圖片如背景底圖和人物Pose圖進(jìn)行了緩存,因?yàn)檫@兩種圖像數(shù)量和樣式是由運(yùn)營(yíng)配置的,是固定有限的,只需要第一次下載加載緩存后,后續(xù)遇到同樣的圖像可以直接取出進(jìn)行處理,減少耗時(shí)開(kāi)銷。

隨著生圖分辨率增大,推理時(shí)長(zhǎng)急劇上漲,于是思考是不是可以先生成小分辨率的圖再超分到大分辨率,說(shuō)干就干。干完后發(fā)現(xiàn)耗時(shí)確實(shí)可以少不少時(shí)間,但是隨之而來(lái)的是由于是生成全身像,臉部和手部的區(qū)域占比較小,導(dǎo)致其生成的崩壞問(wèn)題比較明顯,這顯然無(wú)法通過(guò)超分解決,遂作罷,并將面部和手部修復(fù)作為后續(xù)優(yōu)化手段。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖16 先生成小圖再變成大圖

對(duì)于我們現(xiàn)在使用的生圖分辨率來(lái)說(shuō),總體來(lái)看人臉部分相對(duì)來(lái)說(shuō)還是較小,還是會(huì)出現(xiàn)生成的人臉有點(diǎn)不和諧的情況,所以加入面部修復(fù)被提上了日程。我們首先對(duì)SD生成的圖像進(jìn)行人臉檢測(cè),然后對(duì)人臉部分再使用SD的圖生圖功能,對(duì)人臉部分進(jìn)行重新生成,最后將生成的人臉進(jìn)行Blur后貼回到前面的圖上。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖17 面部修復(fù)流程

隨著我們主題的上新,模型數(shù)量也在不斷增加,為了保證耗時(shí)和資源利用率,除了通過(guò)之前介紹的底模LRU汰換策略之外,我們也在探索其他可優(yōu)化的方式。

敏感圖問(wèn)題

為了避免有比較暴露的圖出現(xiàn),我們加入了一些策略來(lái)進(jìn)行控制。首先我們對(duì)輸入敏感詞進(jìn)行了一定的過(guò)濾,在SD生圖中也加入了一些負(fù)向提示詞,然后SD模型提供了SafetyChecker能夠?qū)ι傻膱D像進(jìn)行過(guò)濾,但是其對(duì)偏卡通的圖像存在一些誤檢情況,我們對(duì)其閾值進(jìn)行了調(diào)整,最后由服務(wù)端再送入集團(tuán)綠網(wǎng)進(jìn)行檢測(cè)過(guò)濾。


AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖18 敏感圖過(guò)濾

上線撒花

經(jīng)歷了種種磨難,最終成功上線,撒花。用戶反響不錯(cuò),用戶的創(chuàng)作水平也非常的可以!放幾張來(lái)自用戶的創(chuàng)作:

AIGC圖像技術(shù)在淘寶人生2的探索和應(yīng)用-AI.x社區(qū)

圖19 用戶創(chuàng)作的涂鴉生成圖

快來(lái)淘寶APP進(jìn)入淘寶人生2,開(kāi)啟你的第二人生,創(chuàng)作屬于你的AI涂鴉服飾吧!


四、引用

[1] ??https://arxiv.org/abs/2112.10752??

[2] https://arxiv.org/abs/2302.05543

[3] https://arxiv.org/abs/2106.09685

[4] https://github.com/AUTOMATIC1111/stable-diffusion-webui

[5] https://github.com/comfyanonymous/ComfyUI

[6] https://github.com/huggingface/diffusers

五、團(tuán)隊(duì)介紹

我們是淘天集團(tuán)-FC技術(shù)部-智能策略團(tuán)隊(duì),主要負(fù)責(zé)手機(jī)天貓搜索、推薦、AI創(chuàng)新等業(yè)務(wù)研發(fā),以及淘寶人生的AI互動(dòng)玩法的研發(fā),致力于運(yùn)用搜推算法、計(jì)算機(jī)視覺(jué)、AIGC等前沿技術(shù),為用戶帶來(lái)更好的購(gòu)物體驗(yàn)和內(nèi)容創(chuàng)作。歡迎搜索推薦相關(guān)以及AIGC相關(guān)的算法同學(xué)加入我們,簡(jiǎn)歷可投遞至zhujianbo.zjb@taobao.com。


本文轉(zhuǎn)載自大淘寶技術(shù),作者:玄羿

原文鏈接:??https://mp.weixin.qq.com/s/udBGUhM3hYt6vpWX1emDoA??

已于2024-3-28 13:31:23修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦