1. FaceChain高保真人像風(fēng)格生成挑戰(zhàn)賽:一等獎(jiǎng)方案

        共 3658字,需瀏覽 8分鐘

         ·

        2024-04-29 23:44

         Datawhale分享 

        作者:馬琦鈞,Datawhale成員

        簡(jiǎn) 介

        大家好,我是馬琦鈞,Datawhale成員,畢業(yè)于浙江農(nóng)林大學(xué),統(tǒng)計(jì)學(xué)/會(huì)計(jì)學(xué)雙學(xué)位,獲得過(guò)由阿里云、谷歌、百度、CVPR、思否、極棒等舉辦的相關(guān)賽事獎(jiǎng)項(xiàng)。

        本次主要分享 FaceChain 高保真人像風(fēng)格生成挑戰(zhàn)賽——賽題三的一等獎(jiǎng)方案。

        賽事地址:https://competition.atomgit.com/competitionInfo?id=7fc6be7904f842050caa5597fa00ba32

        作者本人決賽路演圖

        賽題分析

        賽題三要求提升生成的人像真實(shí)感,原始的facechain其實(shí)已經(jīng)能很好地生成高質(zhì)量人像,但在微觀細(xì)節(jié)上仍有提升空間,框架自帶的人臉美化模型可能會(huì)導(dǎo)致生成的人像缺少痣、皺紋等相關(guān)特征,皮膚相對(duì)有磨皮、反光感等。

        賽題要求還原人臉痣、皺紋等特征,考慮直接復(fù)制原始人臉的痣、皺紋、斑等特征到新生成的人臉上進(jìn)行還原(簡(jiǎn)單來(lái)說(shuō)就像P圖,直接把原始的部分P過(guò)去)。

        整體框架圖

        數(shù)據(jù)集準(zhǔn)備

        數(shù)據(jù)集來(lái)源:https://www.seeprettyface.com/mydataset_page3.html#yellow網(wǎng)站提供的真實(shí)數(shù)據(jù)集——黃種臉訓(xùn)練集

        我們使用了 Datawhale 的免費(fèi)開源軟件 whale-anno 做圖片點(diǎn)標(biāo)注,標(biāo)簽選擇了痣、斑、痘、皺紋,如下圖(為保護(hù)人臉隱私,截圖時(shí)原圖做了模糊處理):

        人臉痣標(biāo)注截圖

        whale-anno 支持移動(dòng)平臺(tái)標(biāo)注,本次標(biāo)注有一半是在 ipad 上完成標(biāo)注的。

        模型訓(xùn)練

        標(biāo)注了100張以后,通過(guò) keypoint-rcnn 已可很好地檢測(cè)到非數(shù)據(jù)集圖片中人臉痣的位置。在標(biāo)注完大約300張圖片后再訓(xùn)練,平常不太見到的比較大的痣也可以很好地檢測(cè)出來(lái),而且位置(坐標(biāo))更精準(zhǔn)了。

        模型加載代碼如下:

        from torchvision.models.detection import keypointrcnn_resnet50_fpn

        model = keypointrcnn_resnet50_fpn(pretrained=False, pretrained_backbone=True,
                                          num_keypoints=4, num_classes=2)

        這個(gè)模型最早用于檢測(cè)人體關(guān)鍵點(diǎn),但我們?cè)谟?xùn)練人臉時(shí),不一定會(huì)每次都有痣出現(xiàn)。我們?cè)谔幚碛?xùn)練數(shù)據(jù)的時(shí)候,可以把沒(méi)有目標(biāo)特征的關(guān)鍵點(diǎn)設(shè)置到(0, 0)位置。在推理的時(shí)候,根據(jù)關(guān)鍵點(diǎn)的置信度來(lái)確定對(duì)應(yīng)人臉是否有痣。

        后處理

        1.人臉痣模型優(yōu)化

        將人臉輸入到上述模型獲取到坐標(biāo)后,計(jì)算出新人臉相對(duì)位置圖像的亮度系數(shù),按新圖調(diào)整后,先用高斯模糊來(lái)降噪,然后將原始的痣用cv2.findContours查找輪廓去除背景,再貼圖到新圖像上。

        這里其實(shí)會(huì)涉及到挺多細(xì)節(jié),最早嘗試了直接將圖貼過(guò)去的方式,但因?yàn)楣庹盏扔绊憰?huì)有差異,所以有了如下根據(jù)亮度調(diào)整的方案,亮度轉(zhuǎn)換代碼如下:

        # 轉(zhuǎn)換到LAB顏色空間
        source_lab = cv2.cvtColor(source, cv2.COLOR_BGR2LAB)

        輪廓查找代碼如下:

        # 查找輪廓
        contours, _ = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

        新的坐標(biāo)根據(jù)3個(gè)最接近的人臉關(guān)鍵點(diǎn)計(jì)算相對(duì)位置得到,如下圖中藍(lán)色圓點(diǎn)表示。

        和痣最接近的3個(gè)人臉關(guān)鍵點(diǎn)

        最終生成的效果如下(為保護(hù)隱私,這里沒(méi)有使用真實(shí)人臉LoRA):

        痣融合人臉效果示例

        2. LoRA模型微調(diào)優(yōu)化

        人臉模型基于真實(shí)人臉先微調(diào),再基于目標(biāo)人臉繼續(xù)微調(diào),訓(xùn)練出的人臉更加真實(shí),減少了磨皮感和反光。不過(guò)由于在背景為白色的人臉圖上訓(xùn)練過(guò)多,這樣操作以后人臉附近可能會(huì)有斷層出現(xiàn)。

        模型微調(diào)需要18G顯存,我們這里使用了a10顯卡,訓(xùn)練每張圖大約需要3分鐘,生成每張圖大約需要12秒。

        這里再簡(jiǎn)單科普一下LoRA(Low-Rank Adaptation),如果模型層本來(lái)需要MxN個(gè)參數(shù),改為增加MxR, RxN的疊加訓(xùn)練,如果M是100,N是100,R是2的話,相當(dāng)于原來(lái)需要訓(xùn)練100 * 100=10000個(gè)參數(shù),現(xiàn)在只需要訓(xùn)練100 * 2+2 * 100=400個(gè)參數(shù),是一個(gè)很巧妙地用小參數(shù)量表征大參數(shù)量的方案。

        3. 人臉篩選優(yōu)化

        從原始的生成10張,篩選6張并和最高單張圖片比較相似度,改為生成20張,與所有人臉比較相似度并再按最高得分排序。測(cè)試下來(lái)這樣得到的人臉與目標(biāo)人物更相似。

        篩選代碼節(jié)選如下:

        max_sim = 0
        for selected_face_emb in selected_face_embs:
            sim = np.dot(emb, selected_face_emb)
            if sim.item() > max_sim:
                max_sim = sim.item()
        sim_list.append(max_sim)

        評(píng)委點(diǎn)評(píng)

        1. (人臉痣模型)是一個(gè)簡(jiǎn)單但有效的方案
        2. 能看到不同光照下痣的區(qū)別
        3. 有測(cè)試:添加痣后人臉相似度有無(wú)變化(賽后有測(cè)試,模型評(píng)判為變化不大,但肉眼看起來(lái)還是變化挺大的)
        4. 紋變化看起來(lái)不太直觀
        5. 特征位置的細(xì)節(jié)還有待優(yōu)化(目前采用最近三個(gè)人臉關(guān)鍵點(diǎn)來(lái)定位,如果結(jié)合人臉旋轉(zhuǎn)角度,應(yīng)該能更精準(zhǔn))

        寫在最后

        這是作者本人參加這么多比賽以來(lái)第一次獲得一等獎(jiǎng),總體來(lái)說(shuō)收獲很多,比如從facechain(https://github.com/modelscope/facechain) 的開源代碼中,能學(xué)習(xí)到很多人臉相關(guān)的各類處理流程。

        同時(shí)在這次比賽中,有浙大學(xué)生們制作了精美的電競(jìng)風(fēng)獲得了賽道二的一等獎(jiǎng),春日?qǐng)F(tuán)隊(duì)做的表情包控制人臉生成,基于圖像壞損來(lái)修復(fù)人臉圖像,還有用agent控制生成場(chǎng)景提示詞,圖像推理風(fēng)格等等優(yōu)秀方案。

        在之前Datawhale的組隊(duì)學(xué)習(xí)中,也總是能看到大家對(duì)于AI學(xué)習(xí)的某種追求,希望大家都能在這樣的氛圍里學(xué)習(xí)到東西,互幫互助,一起構(gòu)建出AI的未來(lái)~

        作者本人是whale-anno項(xiàng)目的前端,目前項(xiàng)目已有文本分類、實(shí)體抽取、關(guān)系抽取、圖片點(diǎn)標(biāo)注、圖片分類等功能,之后還會(huì)增加語(yǔ)義分割、自動(dòng)標(biāo)注等功能,有數(shù)據(jù)標(biāo)注需求的同學(xué)歡迎關(guān)注本項(xiàng)目:
        https://github.com/datawhalechina/whale-anno

        比賽代碼開源地址:https://atomgit.com/maxmon/FaceChain_competition/tree/master/zhi_readd

        瀏覽 417
        1點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        1點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 精品人妻无码一区二区三级精东 | 国产一级一级毛片 | 蜜桃传媒av免费麻豆老师 | 日日摸夜夜添夜夜添国产精品 | 欧美黑人巨大久久久精品一区 |