<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 3658字,需瀏覽 8分鐘

           ·

          2024-04-29 23:44

           Datawhale分享 

          作者:馬琦鈞,Datawhale成員

          簡 介

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

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

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

          作者本人決賽路演圖

          賽題分析

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

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

          整體框架圖

          數(shù)據(jù)集準備

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

          我們使用了 Datawhale 的免費開源軟件 whale-anno 做圖片點標注,標簽選擇了痣、斑、痘、皺紋,如下圖(為保護人臉隱私,截圖時原圖做了模糊處理):

          人臉痣標注截圖

          whale-anno 支持移動平臺標注,本次標注有一半是在 ipad 上完成標注的。

          模型訓(xùn)練

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

          模型加載代碼如下:

          from torchvision.models.detection import keypointrcnn_resnet50_fpn

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

          這個模型最早用于檢測人體關(guān)鍵點,但我們在訓(xùn)練人臉時,不一定會每次都有痣出現(xiàn)。我們在處理訓(xùn)練數(shù)據(jù)的時候,可以把沒有目標特征的關(guān)鍵點設(shè)置到(0, 0)位置。在推理的時候,根據(jù)關(guān)鍵點的置信度來確定對應(yīng)人臉是否有痣。

          后處理

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

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

          這里其實會涉及到挺多細節(jié),最早嘗試了直接將圖貼過去的方式,但因為光照等影響會有差異,所以有了如下根據(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)

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

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

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

          痣融合人臉效果示例

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

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

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

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

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

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

          篩選代碼節(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)

          評委點評

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

          寫在最后

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

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

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

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

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

          瀏覽 417
          1點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          1點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  翔田千里黑人 | 欧美老妇XX | 超碰免费天天操天天干 | 三级黄色国产高清电影 | 亚洲看片 |