PortraitFCN算法详解
論文題目:Automatic Portrait Segmentation for Image Stylization
論文鏈接:論文鏈接
代碼鏈接:代碼鏈接
目錄
- 一、人像分割基礎知識
- 1. 什么是人像分割?
- 2. 人像分割與語義分割的聯系和區別?
- 3. 人像分割的應用場景有哪些?
- 二、PortraitFCN人像分割算法框圖詳解
- 三、PortraitFCN人像分割算法細節詳解
- 1. 歸一化的X和Y通道是如何獲得的?(位置通道)
- 2. 形狀通道是如何獲得的?
- 3. 整個算法的亮點?
- 四、PortraitFCN人像分割算法效果展示
- 五、算法總結
- 參考文獻
- 注意事項
一、人像分割基礎知識
1. 什么是人像分割?
簡單來講,所謂的人像分割就是將輸入的包含人像的圖片中屬于人像的像素點分割出來,輸入的是一張包含人像的彩色圖片;輸出是一張二值圖片,屬于人像的像素點用白色表示,不屬于人像的像素點用黑色表示。具體的效果如圖1所示:圖1中的左圖表示的是輸入的包含人像的待分割圖片,圖1中的右圖表示的是人像分割算法處理后的效果(二值圖)。
2. 人像分割與語義分割的聯系和區別?
聯系:人像分割和語義分割都屬于圖像分割這個大領域, 人像分割屬于語義分割的一個小分支;人像分割一般都是在語義分割的結果上進行精細分割獲得的。
區別:人像分割是在語義分割的基礎上面就人像的一些細節信息分割出來,具體包括頭發絲等等,如圖1所示,人像分割的結果可以明顯的觀察到人像的頭發絲,而普通的語義分割算法是做不到這一點的;
3. 人像分割的應用場景有哪些?
圖2展示了人像分割算法的一些應用場景。圖2a表示的是原始的輸入圖片;圖2b表示的是人像分割算法處理后的結果;圖2c表示的是根據人像分割的結果2b從原始圖像中獲得人像圖片后對其進行灰度化處理后的效果;圖2d表示的是對原始圖像中除人像之外的區域進行模糊后并疊加人像分割圖像的結果,即所謂的背景模糊;圖2e表示的是對原始圖像中的人像更換背景的效果,人像分割在現實場景中具有很多應用,具體包括:背景虛化、人像風格化、更換背景、增加特效等等。
二、PortraitFCN人像分割算法框圖詳解
圖3展示了PortraitFCN人像分割算法的整體框圖,以下將圍繞這個框圖對該算法進行理解,具體的細節請看下一部分的講解。
PortraitFCN人像分割算法實現步驟:
三、PortraitFCN人像分割算法細節詳解
1. 歸一化的X和Y通道是如何獲得的?(位置通道)
這個通道的目的是為了對與人臉相關的像素的位置進行編碼。即找到算法需要進行優化的區域,因為對于大頭照而言,對于人體的其它而言,比如胳膊、手等一般的語義分割算法就能處理的很好,人像分割算法更關注于如何對那些語義分割算法處理不好的細節進行很好的處理,因此找到待優化的區域變得至關重要。
為了獲得歸一化的X和Y通道,我們需要執行以下的步驟:1. 使用預訓練好的人臉檢測器檢測出圖像中的人臉;2. 使用預訓練好的人臉關鍵點檢測算法檢測出人臉的關鍵點;3. 根據過濾的特征和候選的位姿計算出一個變換關系T,即通過對檢測到的人臉的關鍵點和標準模板人臉的關鍵點計算出這個變換關系;4. T(X)和T(Y)則為我們的結果,表示的是該像素距離人臉中心之間的偏差值。
2. 形狀通道是如何獲得的?
所謂的形狀通道指的是Mean Mask通道,該通道可以大致指示出目標所在的區域,可以提供一個較好的初始化,便于獲得最優解。
為了獲得形狀通道,我們需要執行以下的步驟:1. 在整個訓練集中計算出一個對齊的平均掩模;2. 對于每一個訓練人像掩模對{Pi, Mi},其中Pi表示當前人臉圖像的關鍵點,Mi是通過變換關系T(Pi)得到的,最終的平均掩碼M的表達式如下所示:M=∑iwi°τi(Mi)∑iwiM=\frac{\sum i w_{i} \circ \tau _{i}(M_{i})}{\sum i w_{i}}M=∑iwi?∑iwi?°τi?(Mi?)?其中wi是一個矩陣,表示的是經過變換后的Mi是否在圖像的范圍內,如果在圖像的范圍內為1表示,反之則用0表示。
3. 整個算法的亮點?
仔細觀察整個人像分割算法的過程,我們會發現該算法基本上和FCN的思路類似,最大的貢獻就是提出了添加位置通道和形狀通道到輸入圖像中,從而構成一個5通道的輸入,讓網絡更加關注于人臉周圍的區域,從而獲得更好的人像分割效果。
四、PortraitFCN人像分割算法效果展示
圖4展示了PortraitFCN人像分割算法在測試圖片上面的效果展示,圖4中的第1列表示的是原始的輸入圖片,圖4中的第2列表示的是人像分割的GT,圖4中的第3列表示的是傳統的FCN-8s算法分割后的效果,圖4中的第4列表示的是Graph-cut算法的分割效果(傳統算法中的state-of-art),圖4中的第5列表示的是PortraitFCN算法的分割效果。相比于FCN和Graph-cut算法而言,PortraitFCN能夠獲得更好的分割效果,該算法分割出來的效果基本上和GT十分接近,而FCN和Graph-cut算法分割后的結果中會出現嚴重的人像缺失和背景干擾等問題。因此,PortraitFCN算法極大的提升了人像分割算法的性能,也是第一個使用神經網絡獲得最好的分割效果的算法,因此值得一讀。
為了證明該算法的有效性,作者將該算法應用在人像摳圖中,即利用PortraitFCN算法生成人像二值mask之后,將該mask邊界附近的10像素看做unknown區域,用灰色的粗線表示出來,即形成所謂的trimap圖片;然后將原始圖片和相應的trimap圖片一起輸入到KNN Matting算法中獲得最終的人像摳圖結果。圖中展示的效果還可以,但是我們可以觀察到圖5a中左邊區域的一些頭發絲并沒有被摳出來。
圖6展示了PortraitFCN算法在不同圖片上面的一些具體應用,整體來看,該算法的分割效果還不錯,基本達到了可以在現實場景中應用的程度。通過圖6大家也許能夠理解一些圖像處理軟件中的魔法了吧,哈哈哈。
五、算法總結
看完了這篇文章的細節,你也許會感慨這篇文章的思路也就那樣,很簡單,也沒有大多的心意,本文最大的創新點在于:首先,提出了位置通道和形狀通道,并將其和原始的RGB一起輸入到網絡中獲取特征;然后,本文作者發布了一個比較的人像分割數據集,人像分割任務一直不能取得很大的進步的原因其實也和數據集有關,對于人像分割的數據集需要精細到發絲,因此會耗費大量的人力和物力,這個數據集為后續的人像分割領域也做出了很大的貢獻;最后,作者在FCN算法的基礎上都能獲得這么好的效果,如果使用當前較好的語義分割算法可能能夠獲得更好的效果,縱觀后續的人像分割算法的思路,基本上都是在這篇論文的思路的基礎之上進行改進和優化,使用傳統的語義分割算法獲得基本的分割結果后使用一個淺層的reefine網絡來進一步對這個結果進行細化。因此,我認為這是一篇很值得去讀的文章,可謂是人像分割的開山之作。
參考文獻
[1] 原始論文
注意事項
[1] 該博客是本人原創博客,如果您對該博客感興趣,想要轉載該博客,請與我聯系(qq郵箱:1575262785@qq.com),我會在第一時間回復大家,謝謝大家的關注。
[2] 由于個人能力有限,該博客可能存在很多的問題,希望大家能夠提出改進意見。
[3] 如果您在閱讀本博客時遇到不理解的地方,希望您可以聯系我,我會及時的回復您,和您交流想法和意見,謝謝。
[4] 本人業余時間承接各種本科畢設設計和各種小項目,包括圖像處理(數據挖掘、機器學習、深度學習等)、matlab仿真、python算法及仿真等,有需要的請加QQ:1575262785詳聊!!!
總結
以上是生活随笔為你收集整理的PortraitFCN算法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机视觉领域热门研究方向state-o
- 下一篇: 3D点云论文汇总-实时更新