人工智慧能學習穿衣圖像分割完整教程(附python代碼)

時裝業是人工智能領域很有前景的領域。 研究人員可以開發具有一定實用價值的應用。 在這裏我開發了一個來自Zalando在線商店的推薦和標記服裝的解決方案。

在這篇文章中,我們會開發一個提取連衣裙的應用。 它輸入原始的圖像(從網絡上下載或用智能手機拍照),並提取圖像中的連衣裙。 分割的難點在於原始圖像中存在了大量的噪聲,但是我們會在預處理期間通過一個技巧來解決這個問題。

最後,您還可以嘗試將此解決方案與之前引用的解決方案合併。 這允許您通過外出和拍攝時拍攝的照片,開發一個實時推薦和標記服裝的系統。

數據集
最近有一項關於服裝視覺分析和分割的Kaggle比賽。 這是一個非常有趣的比賽,但它並不適合我們。 我們的目標是從圖像中提取連衣裙,因此這個數據集不太適合我們,因爲它包含了比較多的冗餘。 我們需要的是包含連衣裙的圖像,因此最好自己來構建數據集。

我收集了網絡上的一些圖片,其中包含了在不同場景穿着不同類型的連衣裙的人。 然後需要創建蒙版,它在每個對象分割任務中都是必要的。

下面是我們的數據樣本。 我從互聯網上收集了一些原始圖像,經過進一步剪切,將人與衣服分開。

人工智慧能學習穿衣圖像分割完整教程(附python代碼)
圖像分割示例

因爲我們要將背景、皮膚和連衣裙進行分離,首先要將它們區分出來。 背景和皮膚是本問題中最相關的噪聲源,我們要儘量減少它們的干擾。

通過手動分割來創建蒙版,如下圖所示,簡單的對蒙版進行二值化。
人工智慧能學習穿衣圖像分割完整教程(附python代碼)
蒙版示例

最後一步,我們將所有的蒙版圖像合併爲三維的單個圖像。 這張照片表示了原始圖像的相關特徵。 我們的目的主要是分離背景,皮膚和連衣裙,因此這個圖像非常適合!

人工智慧能學習穿衣圖像分割完整教程(附python代碼)
最終蒙版

我們對數據集中的每個圖像重複這個過程,爲每個原始圖像提供三維的對應蒙版。

模型
我們可以很容易的建立模型,過程非常簡單:

我們需要訓練這樣一個模型,該模型輸入原始圖像,可以輸出它的三維蒙版,即分離皮膚、背景和衣服。 訓練完成之後,當一個新的圖像輸入時,我們就可以將它分成三個不同的部分: 背景、皮膚和衣服。 我們只關注感興趣區域(連衣裙),這樣蒙版結合原始圖像,就可以裁剪出我們需要的連衣裙。

我們使用UNet建立該模型,它經常用於類似的分割任務,而且很容易在Keras中實現。

人工智慧能學習穿衣圖像分割完整教程(附python代碼)
在開始訓練之前,要對所有的原始圖像進行均值標準化。

結果和預測
在預測期間,當遇到高噪聲的圖像(背景或皮膚模糊等)時,模型開始動盪。 這種問題可以簡單地通過增加訓練圖像的數量進行解決。 但我們也開發了一個巧妙的方法來避免這種問題。

我們使用 OpenCV 提供的 GrubCut 算法。 該算法利用高斯混合模型分離前景和背景。 通過它可以幫助我們找到圖像中的人物。

我們只實現了簡單的功能。 假設感興趣的人站在圖像的中間。

python def cut(img): img = cv.resize(img,(224,224)) ¨K5K

人工智慧能學習穿衣圖像分割完整教程(附python代碼)
執行GrubCut結果

下面是結合使用GrubCut和UNet之後的結果:

人工智慧能學習穿衣圖像分割完整教程(附python代碼)
人工智慧能學習穿衣圖像分割完整教程(附python代碼)
人工智慧能學習穿衣圖像分割完整教程(附python代碼)
人工智慧能學習穿衣圖像分割完整教程(附python代碼)
人工智慧能學習穿衣圖像分割完整教程(附python代碼)
GrubCut與UNet相結合得到了優秀的結果。

總結
在這篇文章中,我們爲連衣裙分割開發了一套解決方案。 爲了達到這個目的,我們使用了GrubCut和UNet。 我們計劃在真實照片中使用這個解決方案,並根據它構建一個視覺推薦系統。

[來源商業新知網,原標題:從零開始實現穿衣圖像分割完整教程(附python代碼演練)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章