一鍵抹除瑕疵、褶皺:深入解讀達摩院高清人像美膚模型ABPN
隨著數位文化產業的蓬勃發展,人工智慧技術開始廣泛應用於影像編輯和美化領域。其中,人像美膚無疑是應用最廣、需求最大的技術之一。傳統美顏演算法利用基於濾波的影像編輯技術,實現了自動化的磨皮去瑕疵效果,在社交、直播等場景中取得了廣泛的應用。
然而,在門檻較高的專業攝影行業,由於對影像解析度以及品質標準的較高要求,人工修圖師還是作為人像美膚修圖的主要生產力,完成包括勻膚、去瑕疵、美白等一系列工作。通常,專業修圖師對一張高清人像進行美膚操作的平均處理時間為 1-2 分鐘,在精度要求更高的廣告、影視等領域,該處理時間則更長。
相較於互娛場景的磨皮美顏,廣告級、影樓級的精細化美膚為演算法帶來了更高的要求與挑戰。一方面,瑕疵種類眾多,包含痘痘、痘印、雀斑、膚色不均等,演算法需要對不同瑕疵進行自適應地處理;另一方面,在去除瑕疵的過程中,需要盡可能的保留皮膚的紋理、質感,實現高精度的皮膚修飾;最後也是十分重要的一點,隨著攝影設備的不斷迭代,專業攝影領域目前常用的圖像分辨率已經達到了4K 甚至8K,這對算法的處理效率提出了極其嚴苛的要求。
因此,我們以實現專業級的智慧美膚為出發點,研發了一套高清影像的超精細局部修圖演算法ABPN,在超清影像中的美膚與服飾去皺任務都實現了很好的效果與應用。
- 論文:https://openaccess.thecvf.com/content/CVPR2022/papers/Lei_ABPN_Adaptive_Blend_Pyramid_Network_for_Real-Time_Local_Retouching_of_CVPR_2022_#per.pdf.pdf模型& 代碼:https://www.modelscope.cn/models/damo/cv_unet_skin-retouching/summary
- ##相關工作
##3.1傳統美顏演算法
傳統美顏演算法的核心是讓皮膚區域的像素變得更平滑,降低瑕疵的顯著程度,從而使皮膚看起來更加光滑。一般來說,現有的美顏演算法可劃分為三步驟:1)影像濾波演算法,2)影像融合,3)銳利化。整體流程如下:
其中為了實現皮膚區域的平滑,同時保留影像中的邊緣,傳統美顏演算法首先使用保邊濾波器(如雙邊濾波、導向濾波等)來處理影像。不同於常用的均值濾波、高斯濾波,保邊濾波器考慮了不同區域像素值的變化,對像素變化較大的邊緣部分以及變化較為平緩的中間區域像素採取不同的加權,從而實現對於圖像邊緣的保留。而後,為了不影響背景區域,分割偵測演算法通常被用於定位皮膚區域,引導原圖與平滑後的影像進行融合。最後,銳利化操作可以進一步提升邊緣的顯著性以及感官上的清晰度。下圖展示了目前傳統美顏演算法的效果:
從效果來看,傳統美顏演算法存在兩大問題:1)對於瑕疵的處理是非自適應的,無法較好的處理不同類型的瑕疵。 2)平滑處理造成了皮膚紋理、質感的流失。這些問題在高清影像中尤其明顯。
3.2 現有深度學習演算法
#為了實現皮膚不同區域、不同瑕疵的自適應修飾,基於數據驅動的深度學習演算法似乎是更好的解決方案。考慮任務的相關性,我們對 Image-to-Image Translation、Photo Retouching、Image Inpainting、High-resolution Image Editing 這四類現有方法對於美膚任務的適用性進行了討論和對比。
- 3.2.1 Image-to-Image Translation
圖片翻譯(Image-to-Image Translation) 任務最開始由pix2pix [1 ] 所定義,其將大量電腦視覺任務總結為像素到像素的預測任務,並提出了一個基於條件生成對抗網路的通用框架來解決這類問題。基於pix2pix [1],各類方法被陸續提出以解決影像翻譯問題,其中包括利用成對資料(paired images) 的方法[2,3,4,5] 以及利用非成對資料(unpaired images)的方法[6,7,8,9]。有些工作聚焦於某些特定的影像翻譯任務(例如語意影像合成 [2,3,5],風格遷移等 [9,10,11,12]),取得了令人印象深刻效果。然而,上述大部分的影像翻譯主要關注於影像到影像的整體變換,缺乏對局部區域的注意力,這限制了其在美膚任務中的表現。
- 3.2.2 Photo Retouching
#受益於深度卷積神經網路的發展,基於學習的方法[ 13,14,15,16] 近年來在修圖領域展現了出色的效果。然而,與大多數影像翻譯方法相似的是,現有的 retouching 演算法主要聚焦於操控影像的一些整體屬性,例如色彩、光線、曝光等。很少注意局部區域的修飾,而美膚恰恰是一個局部修飾任務(Local Photo Retouching),需要在修飾目標區域的同時,保持背景區域不動。
- 3.2.3 Image Inpainting
圖片補全(image inpainting) 演算法常用於對影像缺少的部分進行補全生成,與美膚任務有著較大的相似性。憑藉著強大的特徵學習能力,基於深度生成網路的方法 [17,18,19,20] 這些年在 inpainting 任務中取得了巨大的進步。然而,inpainting 方法依賴目標區域的 mask 作為輸入,而在美膚以及其他局部修飾任務中,取得精確的目標區域 mask 本身就是一個非常具有挑戰性的任務。因而,大部分的 image inpainting 任務無法直接用於美膚。近年來,一些 blind image inpainting 的方法 [21,22,23] 擺脫了對於 mask 的依賴,實現了目標區域的自動檢測與補全。儘管如此,與大多數其他 image inpainting 方法一樣,這些方法有兩個問題:a) 缺乏對於目標區域紋理及語義資訊的充分利用,b) 計算量較大,難以應用於超高解析度影像。
- 3.2.4 High-resolution Image Editing
為了實現高解析度映像的編輯,[15, 24,25,26] 等方法透過將主要的計算量從高解析度圖轉移到低解析度影像中,以減輕空間和時間的負擔。儘管在效率上取得了出色的表現,由於缺乏對局部區域的關注,其中大部分方法都不適用於美膚這類局部修飾任務。綜上,現有的深度學習方法大都難以直接應用於美膚任務中,主要原因在於缺乏對局部區域的關注或是計算量較大難以應用於高解析度影像。
基於自適應混合金字塔的局部修圖框架
美膚本質在於對影像的編輯,不同於大多數其他影像轉換任務的是,這種編輯是局部的。與其相似的還有服飾去皺,商品修飾等任務。這類局部修圖任務具有很強的共通性,我們總結其三點主要的困難與挑戰:1)目標區域的精準定位。 2)具有全域一致性以及細節保真度的局部產生(修飾)。 3)超高解析度影像處理。為此,我們提出了一個基於自適應混合金字塔的局部修圖框架(ABPN: Adaptive Blend Pyramid Network for Real-Time Local Retouching of Ultra High-Resolution Photo, CVPR2022,[27]),以實現超高解析度影像的精細化局部修圖,以下我們將其實作細節進行介紹。
4.1 網路整體結構
如上圖所示,網路結構主要由兩個部分組成:上下文感知的局部修飾層(LRL)和自適應混合金字塔層(BPL)。其中 LRL 的目的是對降採樣後的低解析度影像進行局部修飾,產生低解析度的修飾結果圖,充分考慮全局的上下文資訊以及局部的紋理資訊。進一步,BPL 用於將 LRL 中產生的低解析度結果逐步向上拓展到高解析度結果。其中,我們設計了一個自適應混合模組(ABM)及其逆向模組(R-ABM),利用中間混合圖層Bi,可實現原圖與結果圖之間的自適應轉換以及向上拓展,展現了強大的可拓展性和細節保真能力。我們在臉部修飾及服飾修飾兩個資料集中進行了大量實驗,結果顯示我們的方法在效果和效率上都大幅領先了現有方法。值得一提的是,我們的模型在單卡 P100 上實現了 4K 超高解析度影像的即時推理。下面,我們將 LRL、BPL 及網路的訓練 loss 分別介紹。
4.2 上下文感知的局部修飾層(Context-aware Local Retouching Layer)
在LRL 中,我們想要解決三中提到的兩個挑戰:目標區域的精準定位以及具有全局一致性的局部生成。如 Figure 3 所示,LRL 由一個共享編碼器、遮罩預測分支 (MPB) 以及局部修飾分支 (LRB) 構成。
總得來說,我們使用了一個多任務的結構,以實現明確的目標區域預測,與局部修飾的引導。其中,共享編碼器的結構可以利用兩個分支的共同訓練來最佳化特徵,提高修飾分支對於目標全局的語意資訊和局部的感知。大多數的圖像翻譯方法使用傳統的encoder-decoder 結構直接實現局部的編輯,沒有將目標定位與生成進行解耦,從而限制了生成的效果(網絡的容量有限),相比之下多分支的結構更利於任務的解耦以及互利。在局部修飾分支 LRB 中我們設計了 LAM(Figure 4),將空間注意力機制與特徵注意力機制同時作用,以實現特徵的充分融合以及目標區域的語義、紋理的捕捉。消融實驗(Figure 6)展現了各個模組設計的效能。
4.3 自適應混合金字塔層(Adaptive Blend Pyramid Layer)
LRL 在低解析度上實現了局部修飾,如何將修飾的結果拓展到高解析度同時增強其細節保真度?這是我們在這部分想要解決的問題。
- 4.3.1 自適應混合模組(Adaptive Blend Module)
在影像編輯領域,混合圖層(blend layer)常被用於與影像(base layer)以不同的模式混合以實現各種各樣的影像編輯任務,例如對比度的增強,加深、減淡操作等。通常地,給定一張圖片,以及一個混合圖層
,我們可以將兩個圖層進行混合得到圖像編輯結果
,如下:
其中f 是固定的逐像素映射函數,通常由混合模式決定。受限於轉化能力,一個特定的混合模式及固定的函數 f 難以直接應用於種類多樣的編輯任務中去。為了更好的適應資料的分佈以及不同任務的轉換模式,我們借鑒了影像編輯中常用的柔光模式,設計了一個自適應混合模組 (ABM),如下:
表示Hadmard product,和為可學習的參數,被網路中所有的ABM 模組以及接下來的R-ABM 模組所共享,表示所有值為1 的常數矩陣。
- 4.3.2 逆向自適應混合模組(Reverse Adaptive Blend Module)
#,為了得到混合圖層B,我們對公式3 進行求解,建構了一個反向自適應混合模組(R-ABM),如下:
總的來說,透過利用混合圖層作為中間媒介,ABM 模組和R-ABM 模組實現了影像I 和結果R 之間的自適應轉換,相較於直接對低解析度結果利用卷積上採樣等操作進行向上拓展(如Pix2PixHD),我們利用混合圖層來實現這個目標,有其兩方面的優勢:1)在局部修飾任務中,混合圖層主要記錄了兩張影像之間的局部轉換訊息,這意味著其包含更少的無關訊息,且更容易由一個輕量級的網路進行最佳化。 2)混合圖層直接作用於原始影像來實現最後的修飾,可以充分利用影像本身的訊息,進而實現高度的細節保真。
實際上,關於自適應混合模組有許多可供選擇的函數或策略,我們在論文中對設計的動機以及其他方案的對比進行了詳細介紹,這裡不進行更多的闡述了,Figure 7 展示了我們的方法和其他混合方法的消融對比。
4.3.3 Refining Module
4.4 損失函數
實驗結果
#5.1 與SOTA 方法比較
#效果顯示
#美膚效果展示:
原始圖片來自unsplash [31]
######原始影像來自人臉資料集FFHQ [32]#############
可以看到,相較於傳統的美顏演算法,我們提出的局部修圖框架在去除皮膚瑕疵的同時,充分的保留了皮膚的紋理和質感,實現了精細、智能化的膚質優化。進一步,我們將方法拓展到服飾去皺領域,也實現了不錯的效果,如下:
以上是一鍵抹除瑕疵、褶皺:深入解讀達摩院高清人像美膚模型ABPN的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

使用C 中的chrono庫可以讓你更加精確地控制時間和時間間隔,讓我們來探討一下這個庫的魅力所在吧。 C 的chrono庫是標準庫的一部分,它提供了一種現代化的方式來處理時間和時間間隔。對於那些曾經飽受time.h和ctime折磨的程序員來說,chrono無疑是一個福音。它不僅提高了代碼的可讀性和可維護性,還提供了更高的精度和靈活性。讓我們從基礎開始,chrono庫主要包括以下幾個關鍵組件:std::chrono::system_clock:表示系統時鐘,用於獲取當前時間。 std::chron

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:

在C 中處理高DPI顯示可以通過以下步驟實現:1)理解DPI和縮放,使用操作系統API獲取DPI信息並調整圖形輸出;2)處理跨平台兼容性,使用如SDL或Qt的跨平台圖形庫;3)進行性能優化,通過緩存、硬件加速和動態調整細節級別來提升性能;4)解決常見問題,如模糊文本和界面元素過小,通過正確應用DPI縮放來解決。

C 在實時操作系統(RTOS)編程中表現出色,提供了高效的執行效率和精確的時間管理。 1)C 通過直接操作硬件資源和高效的內存管理滿足RTOS的需求。 2)利用面向對象特性,C 可以設計靈活的任務調度系統。 3)C 支持高效的中斷處理,但需避免動態內存分配和異常處理以保證實時性。 4)模板編程和內聯函數有助於性能優化。 5)實際應用中,C 可用於實現高效的日誌系統。

在C 中測量線程性能可以使用標準庫中的計時工具、性能分析工具和自定義計時器。 1.使用庫測量執行時間。 2.使用gprof進行性能分析,步驟包括編譯時添加-pg選項、運行程序生成gmon.out文件、生成性能報告。 3.使用Valgrind的Callgrind模塊進行更詳細的分析,步驟包括運行程序生成callgrind.out文件、使用kcachegrind查看結果。 4.自定義計時器可靈活測量特定代碼段的執行時間。這些方法幫助全面了解線程性能,並優化代碼。

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

C 中使用字符串流的主要步驟和注意事項如下:1.創建輸出字符串流並轉換數據,如將整數轉換為字符串。 2.應用於復雜數據結構的序列化,如將vector轉換為字符串。 3.注意性能問題,避免在處理大量數據時頻繁使用字符串流,可考慮使用std::string的append方法。 4.注意內存管理,避免頻繁創建和銷毀字符串流對象,可以重用或使用std::stringstream。
