大家好我是 AI 召喚師阿正,今天我要和大家講個非常實用的真人化技術,如何把假模特兒真人化。在經營電商時,要大量的商品的照片,這需要攝影師、模特兒、後製等一個團隊做出來。如果掌握了這種真人化技術,對電商而言會省錢、省時、省力。
例如,你有像這樣的穿著衣服的人台照片,這張是我們自己展示室拍的照片。
會用 Stable Diffusion ,不用十分鐘,第一張圖就出來了。
就算要做調整,一小時也都夠了。例如:
要知道光請模特兒一小時的錢,都可以用 AI 生成上千張照片了,這是未來經營電商必備技能。那這種省錢省力的技術,那要怎麼使用呢?
我們用 Stable Diffusion 的來做沒有模特兒的真人商品照吧。
一、假模特兒真人化基本思路
將假人台變真人還要保留衣服,這要怎麼做呢?
這時熟悉 Stable Diffusion 的朋友就會說:我知道,就是用圖生圖裡 Inpaint 功能,然後把衣服外的地方做遮罩,讓 Stable Diffusion 重繪。
那遮罩怎麼做?如果要用手一筆筆做遮罩那太慢了,要是這樣,我就不用特別出這篇。
又會有人說:我知道,先用 photoshop 把遮罩做出來,再用遮罩重繪功能。
這也是個方法,但現在還可以更智慧。
今天我們要使用一個外掛 inpainting anything,給一張照片,他可以把照片用色塊分別出不同的東西。到時候我們只要選哪些色塊要做成遮罩,這樣子遮罩就做出來了。
然後再利用重繪的功能,在保留衣服的情況下,把假人真人化。
雖然基本的思路是這樣,但是如果你自己有操作過,你就會知道路上還是有很多的坑。
所以在這篇文章裡,我不止會手把手教你如何把假人變成真人,重要的事情是我還會告訴你我是怎麼樣把這些坑填平的。
現在就一一跟大家說明。
二、假模特兒真人化準備工具
這篇示範是使用 Automatic 1111 的 WebUI ,並採用 SD 1.5 的模型,我們開始準備吧!
準備 1 :inpaint anything
首先會用到 Inpaint Anything 這個外掛,請檢查您的 Automatic 1111 的 WebUI 看看有沒有頁籤 Inpaint Anything 的外掛,沒有的話請安裝一下
安裝 inpaint anything
到 Install from URL,輸入
https://github.com/Uminosachi/sd-webui-inpaint-anything.git
即可安裝
安裝好後,回到 install 頁籤,按下 Apply and quit 即可
準備 2 :Inpaint 專用的模型
這次AI召喚師我會用 epiCPhotoGasm 示範,這模型出來的品質都像是攝影大師照出來的照片,特別適合用在需要真實畫面的地方。
我們今天要用的不是他的主要模型,而是要用他的 Inpaint 模型。
請到下方連結,下載它的 Inpaint 模型並安裝好,準備等下使用。
https://civitai.com/models/132632?modelVersionId=201346
準備 3 :假人照
我們就用我們的例子這張
這是在自家的展示室拍的,要注意的是他是個黑色的人台,這等一下會惹出些麻煩。這邊先預告。
這 3 個東西準備好後,我們就可以開始了。
三、操作示範
這個教學是用 SD 1.5 的模型來示範整個流程。
第 1 步:選 SAM 模型及下載模型
按下 Inpaint Anything 頁籤,會看到像這樣的畫面
選擇要使用的語義分割模型 Segment Model ID,。我們這裡選 sam_vit_l_0b3195.pth
這一個模型。如果你是剛安裝好的話,這些模型還沒有下載,你要 Download model 鈕,它才會下
載。
第 2 步:取得實例分割圖
上傳圖片到 inpaint anything,然後按下 Run Segment Anything 。
你會在右邊看到實例分割圖
第 3 步:做出初步的遮罩(mask)
如果等下我們要用重繪功能,就要把想要重繪的區域做出遮罩。那現在有語義分隔後的色塊,要如何快速的做出遮罩呢?
很簡單,只要拿滑鼠在想要做遮罩的色塊上點一下就好,不必塗整個色塊,只要有點到那個色塊等一下就會變成遮罩。
因為我們希望是背景、假人等等要重繪,所以這些地方要選起來,但是但背景有些複雜,做起
來太麻煩,所以我們可以改將點選衣服上的色塊,然後將 Invert Mask 打勾就好。
都點選好以後,按下 Create Mask ,你就會看到遮罩結果。
第 4 步: 查看遮罩(mask)結果
檢查遮罩結果,看看有沒有漏掉的,其實畫面如果比較複雜,這樣很難看清楚,這裡有個訣竅,把旁邊的 Mask Only 頁籤開出來。
上面有兩個按鈕:
- Get mask as alpha of image
- Get mask
這兩鈕按下去以後,你就可以看到遮罩有沒有做好。
注意,這邊的白色,才是遮罩,是未來要 AI 填充的地方,黑色是要保留的部分,不要弄錯了。
第 5 步: 微調遮罩
從這個遮罩圖可以發現,除了衣服以外,還有其它地方還沒有被遮罩到(也就是有不該出現的
黑色線條)。
這時就手工微調一下。
回到產生遮罩的圖,在上面把要加遮罩的地方塗上。如果有要增加黑色的地方,就手動畫一下,然後按 Trim mask by skatch 鈕,反之,要增加白色的方法,手動畫一下,按 Add mask by skatch 鈕。
如果覺得圖太小不好塗抹,可以用按 S
將圖放大,再按一次 S
即可還原。
加黑色:Trim mask by skatch 鈕
加白色:Add mask by skatch 鈕
塗好以後,按下 Add mask by sketch。
接著再到 Mask Only 頁籤裡按下 Get mask
及 Get mask as alpha of image
,是不是我們想要
的遮罩。
如果還有其它雜點,就用同樣的方式修掉;如果沒問題,我們就進下一步。
第 6 步:開始在 inpaint anything 裡重繪
當我們的遮罩都做好以後,我們就可以開始請 stable diffusion 幫我們填充背景。
到 inpaint 頁籤,填上提詞和反向提詞。因為我想要生成出來的畫面是:美麗的女人穿著婚紗,手拿著白色玫瑰。所以輸入以下的提詞:
A beautiful woman wearing a white wedding dress while holding a bouquet of white roses.
Dynamic pose, photography, masterpiece, best quality, 8K, HDR, highres, absurdres: 1.2,
Kodak portra 400, film grain, blurry background, bokeh: 1.2, lens flare
反向提詞如下:
Nsfw, ugly, paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres
提詞使用可以參考以下這篇:生成專業攝影照一定要有的品質提示詞範例 – 10 個就很夠用了 – Stable Diffusion 教學
選擇一個 inpaint 模型,這幾個模型是 inpaint anything 他預設的。
因為我們要做真實的照片,所以使用 Uminosachi/realisticVisionV51_v51VAE-inpainting
這個
模型。
按下 Run Inpainting 後,你就會拿到真人模特兒的圖
看來不錯,我們來多生幾張。
拿到圖以後,你以為這次的教學就結束了嗎?
還沒有!因為真的要用的話,還有些問題
- 沒有辦法一次出很多張圖讓我們挑
- 沒有辦法使用我們想要的模型
那怎麼辦呢?所以我們需要下一步。
免費領取假人變真人
進階教學影片
包含:1. 如何生成更自然 2. 如何用一般的模型 3. 光影要怎麼更自然 4. 如何生成更豐富的照片
第 7 步: 使用圖生圖的重繪功能
回到 Mask Only 頁籤,按下”Send to img 2 img inpaint”。
當您送出遮照後,會跳到圖生圖的 Inpaint Upload 頁籤。你會看到你的圖片和遮罩都被傳過來了
這時候熟 SD 的人就會很開心,回到熟悉的地方了,終於可以選自己喜歡的模型了。
那來選一個模型吧!這裡我選 chilloutmix。
再來調圖片尺寸,按下三角板後,系統自動把寬高調成和照片一樣,不必我們再輸入。
現在要來填提詞,現在想要改一下,讓美女在海邊穿著婚紗,她的頭髮被微風輕輕吹起,她手裡拿著一束白玫瑰。所以我們修改提詞如下:
A beautiful woman wearing a white wedding dress adorned with lace, walking along the
beach at sunset. Her hair is gently lifted by the breeze, and she is holding a bouquet of white roses. Dynamic pose, photography, masterpiece, best quality, 8K, HDR, highres, absurdres: 1.2,
Kodak portra 400, film grain, blurry background, bokeh: 1.2, lens flare
反向提詞不變:
Nsfw, ugly, paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres
採樣器用 DPM++ 2 M Karras ,採樣步數設到 40。
其它參數都用預設,如下圖:
應都準備好了,現在就生成吧!
出現了怪東西!
為什麼 AI 生成的模特兒,不把衣服換好?衣服像是漂在空中一樣。
難道是 Masked content 要調? 目前預設是 original 。
那調成別的看看,先調成 fill
結果還是沒穿好。那調成 latent noise 看看。
畫面還更怪了。那難道是要用 latent nothing ?
一樣沒穿好!這到底怎麼回事?為什麼衣服總是不穿好?
所以在這邊,我們就可以得到一個結論… 它壞了 ….
先別這麼快下結論,這其實是我們選錯模型。
第 8 步: 選擇 epiCPhotoGasm Inpainting 模型重繪
剛剛衣服總是不穿好的原因很簡單,我們現在在做的事是重繪,不是純粹的生成,所以我們要用專門用來做重繪的模型。
ChilloutMix 並不是用來重繪的模型,所以我們現在要改用之前下載好的 epiCPhotoGasm_zinpainting
模型。
換了模型,我們就開始生成吧,這下應該沒問題了吧!
我們來看看結果:
我們得到了一個穿上衣服的…漂亮的人台。
這又是怎麼回事?剛剛衣服沒穿好,現在人不見了,說好的美女呢?難道是運氣不好,再生成一次看看。
結果,美女是出現了,但他胸口的黑布是怎麼回事?我們並沒有要這塊布呀!
這原因是因為目前 mask content 的參數是 original ,它在重繪時會參照原圖上的結構和顏色進行重繪,所以才會出現人台及黑布,因為這些在原圖上都有。那我們要怎麼解決這問題?
簡單,換別的參數就好了,例如,我們改用 fill ,會得到像下面這樣的圖。
如果是用 latent noise ,會是像下面的結果
若是用 latent nothing ,則會出現
這樣的畫面是不是很不錯了?都還沒有精細的微調就可以有這樣子的品質,再優化的話就會更好,那接下來要怎麼優化呢?
剩下我們就留在進階教學再來處理了,這次的示範就到這邊。
免費領取假人變真人
進階教學影片
包含:1. 如何生成更自然 2. 如何用一般的模型 3. 光影要怎麼更自然 4. 如何生成更豐富的照片
四、常見問題
這樣一操作下來,大家可能有些問題,一一為大家說明。
問題 1 :什麼是實例分割?
實例分割指的是指將圖片上的東西進行區分,將不同的東西用不同的顏色標示出來,每一種顏色代表一個東西。
這次就是用實例分割,加速我們製作遮罩的時間。
問題 2 :Inpaint Anything 有不同的 Segment Anything Model ,有什麼區別?
Segment Anything Model ,也叫 SAM ,在 Inpaint Anything 提供了 9 種,
可以分成4類,我們一一說明。
第 1 類:sam_vit 開頭的 – Meta 提供的 SAM 模型
sam_vit 開頭的,是 meta 提供的模型。因為 Meta 把他們的語義分割模型命名為 Segment Anything Model ,我們目前所稱的 SAM 算是從這裡開始算起,應算是這一波 SAM 模型的始祖。
這是一系列的模型是 Meta 在 2023 年 4 月公佈的,其它的 SAM 模型都會拿來和這系列做比較。共有 3 種模型,以大小分別為,h (huge), l (large), b (base),huge > large > base ,精準度理論上也是和大小成正比,計算速度也是。
從效果上看, huge 和 large 的差別不大,但和 base 就有明顯差別。
Meta SAM 參考資料:
- https://segment-anything.com/
- https://github.com/facebookresearch/segment-anything
- https://huggingface.co/facebook/sam-vit-base/tree/main
- https://huggingface.co/facebook/sam-vit-large
- https://huggingface.co/facebook/sam-vit-huge
第 2 類: sam_hq_vit 開頭的 – Segment Anything in High Quality 系列
若是 sam_hq_vit 開頭模型就是蘇黎世聯邦理工學院視覺智慧與系統小組 (Visual Intelligence and Systems Group at ETH Zürich) 提供的高品質語義分割模型。根據根據他們的論文提供的數據,他們的切割準度比 Meta 還來得好,所以稱為high quality。雖然他們分割出來的區域是比 Meta 還來得細,但在我們的例子裡面分別不大。
SAM HQ 參考資料:
第 3 類:FastSAM 開頭的 – FastSAM 系列
如果要效果不錯,又省些記憶體,可以用 FastSAM 系列,它是由 CASIA-IVA 實驗室 (CASIA-IVA-Lab) 提供的。我自己在小 VRAM 的機器上會用這個模型。
它的有 2 種型號,X 和 S。
X 這個型號在我們這次婚紗的例子,效果還可以,但 S 就不適合我們的例子。
FastSAM 資料如下:
第 4 類:Mobile SAM
又小又快的 SAM ,用 CPU 也可以跑得很快的 SAM 。但,效果也是最差的一個,只適合分辨大區塊的東西。
Mobile SAM 參考資料:
問題 3 : Inpaint 的 Masked content 參數控制了什麼?
Masked content 的選項有4個,說明如下:
選項 1 :Fill
fill 選項會將重繪區域的圖像最大程度地模糊化,僅保留大致的結構和色彩。因此,在需要大規模重繪會使用它。
在我們的範例中,海平面的位置、沙難的走向,都是一致的,連夕陽的顏色也都差不多。
選項 2 : Original
Original 會參考原圖,生成出的圖,區塊、顏色等等會和原圖很像。
在我們的範例中,這選項會留人台黑色的部份,並且沙灘的走向也會保留。
選項 3 : Latent noise
Latent noise 把要重繪的部份給雜訊,容易產生不相關內容,適用於需要創意的地方。
在我們這次的示範中你會發現,用 latent noise 生成的圖,若 prompt 裡有提到小東西(如我們的是白玫瑰),則會重覆出現這小東西。
選項 4 : Latent nothing
Latent nothing 會參考要重繪的區域附近的顏色,找出附近顏色的平均值,再填回重繪區。這種方式非常適用於移除不需要的物件。
但在我們這次的範例中,因為我們是大範圍的重繪,所以感覺不出有移除東西。但你觀察用 latent nothing 生成的圖,你會發現他們的配色和構圖會很像,例如沙的顏色也都很像。
五、回顧延伸問題
我們回顧一下剛剛做了什麼?
簡單說,就是 2 大步驟:
- 用 Inpaint Anything 的語義分割功能做遮罩。
- 再傳送到圖生圖用 inpaint upload 以及 inpaint 專用模型重繪。
光是這樣,就可以做出來像今天一樣的成果了。
凡事都還可以更好,如果用目前這種方式,仍然還會有幾個問題:
- 我要的模型沒有 inpaint 模型怎麼辦?可以用一般模型嗎?
- 要怎麼改變衣服上的光影?
- 有時會有P圖的感覺,要如何才會更自然?
- 如何生成更豐富的圖片,不是現在做出來的這幾個樣子。
以上這些都是優化的問題,這些我會再做進階的內容,到時我會使用 ControlNet 的技巧以及其它手法的來處理優化的問題。有興趣的朋友,請看以下說明,取得進階優化的教學。
免費領取假人變真人
進階教學影片
包含:1. 如何生成更自然 2. 如何用一般的模型 3. 光影要怎麼更自然 4. 如何生成更豐富的照片