在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AI頭發分割模塊、頭發換色、顏色增強與修正模塊等技術原理

DPVg_AI_era ? 來源:未知 ? 作者:李倩 ? 2018-08-03 09:27 ? 次閱讀

如今,在類似天天P圖、美圖秀秀等手機APP中,給指定照片或視頻中的人物更換頭發顏色已經是再正常不過的事情了。那么本文便介紹了該功能背后如AI頭發分割模塊、頭發換色、顏色增強與修正模塊等技術原理(附代碼)。

首先,為照片或視頻中人物換發色的算法流程如下圖所示:

AI頭發分割模塊

基于深度學習的目標分割算法已經比較成熟,比較常用的有FCN,SegNet,UNet,PspNet,DenseNet等等。這里我們使用Unet網絡來進行頭發分割,具體可以參考如下鏈接:點擊打開鏈接Unet頭發分割代碼如下:

defget_unet_256(input_shape=(256,256,3),num_classes=1):inputs=Input(shape=input_shape)#256down0=Conv2D(32,(3,3),padding='same')(inputs)down0=BatchNormalization()(down0)down0=Activation('relu')(down0)down0=Conv2D(32,(3,3),padding='same')(down0)down0=BatchNormalization()(down0)down0=Activation('relu')(down0)down0_pool=MaxPooling2D((2,2),strides=(2,2))(down0)#128down1=Conv2D(64,(3,3),padding='same')(down0_pool)down1=BatchNormalization()(down1)down1=Activation('relu')(down1)down1=Conv2D(64,(3,3),padding='same')(down1)down1=BatchNormalization()(down1)down1=Activation('relu')(down1)down1_pool=MaxPooling2D((2,2),strides=(2,2))(down1)#64down2=Conv2D(128,(3,3),padding='same')(down1_pool)down2=BatchNormalization()(down2)down2=Activation('relu')(down2)down2=Conv2D(128,(3,3),padding='same')(down2)down2=BatchNormalization()(down2)down2=Activation('relu')(down2)down2_pool=MaxPooling2D((2,2),strides=(2,2))(down2)#32down3=Conv2D(256,(3,3),padding='same')(down2_pool)down3=BatchNormalization()(down3)down3=Activation('relu')(down3)down3=Conv2D(256,(3,3),padding='same')(down3)down3=BatchNormalization()(down3)down3=Activation('relu')(down3)down3_pool=MaxPooling2D((2,2),strides=(2,2))(down3)#16down4=Conv2D(512,(3,3),padding='same')(down3_pool)down4=BatchNormalization()(down4)down4=Activation('relu')(down4)down4=Conv2D(512,(3,3),padding='same')(down4)down4=BatchNormalization()(down4)down4=Activation('relu')(down4)down4_pool=MaxPooling2D((2,2),strides=(2,2))(down4)#8center=Conv2D(1024,(3,3),padding='same')(down4_pool)center=BatchNormalization()(center)center=Activation('relu')(center)center=Conv2D(1024,(3,3),padding='same')(center)center=BatchNormalization()(center)center=Activation('relu')(center)#centerup4=UpSamepling2D((2,2))(center)up4=Concatenate([down4,up4],axis=3)up4=Conv2D(512,(3,3),padding='same')(up4)up4=BatchNormalization()(up4)up4=Activation('relu')(up4)up4=Conv2d(512,(3,3),padding='same')(up4)up4=BatchNormalization()(up4)up4=Activation('relu')(up4)#16up3=UpSamepling2D((2,2))(up4)up3=Concatenate([down4,up4],axis=3)up3=Conv2D(256,(3,3),padding='same')(up3)up3=BatchNormalization()(up3)up3=Activation('relu')(up3)up3=Conv2d(256,(3,3),padding='same')(up3)up3=BatchNormalization()(up3)up3=Activation('relu')(up3)#32up2=UpSamepling2D((2,2))(up3)up2=Concatenate([down4,up4],axis=3)up2=Conv2D(128,(3,3),padding='same')(up2)up2=BatchNormalization()(up2)up2=Activation('relu')(up2)up2=Conv2d(128,(3,3),padding='same')(up2)up2=BatchNormalization()(up2)up2=Activation('relu')(up2)#64up1=UpSamepling2D((2,2))(up2)up1=Concatenate([down4,up4],axis=3)up1=Conv2D(64,(3,3),padding='same')(up1)up1=BatchNormalization()(up1)up1=Activation('relu')(up1)up1=Conv2d(64,(3,3),padding='same')(up1)up1=BatchNormalization()(up1)up1=Activation('relu')(up1)#128up0=UpSamepling2D((2,2))(up1)up0=Concatenate([down4,up4],axis=3)up0=Conv2D(32,(3,3),padding='same')(up0)up0=BatchNormalization()(up0)up0=Activation('relu')(up0)up0=Conv2d(32,(3,3),padding='same')(up0)up0=BatchNormalization()(up0)up0=Activation('relu')(up0)#256classify=Con2D(num_classes,(1,1)),activation='sigmoid')(up0)model=Model(input=inputs,outputs=classify)#model.compile(optimizer=RMSprop(lr=0.0001),loss=bce_dice_loss,metrices=[dice_coeff])returnmodel

分割效果舉例如下:

使用的訓練和測試數據集合大家自己準備即可。

發色更換模塊

這個模塊看起來比較簡單,實際上卻并非如此。這個模塊要細分為:

①頭發顏色增強與修正模塊;

②顏色空間染色模塊;

③頭發細節增強;

發色增強與修正模塊

為什么要對頭發的顏色進行增強與修正? 先看下面一組圖,我們直接使用HSV顏色空間對純黑色的頭發進行染色,目標色是紫色,結果如下:

大家可以看到,針對上面這張原圖,頭發比較黑,在HSV顏色空間進行頭發換色之后,效果圖中很不明顯,只有輕微的顏色變化。

為什么會出現這種情況?原因如下:我們以RGB和HSV顏色空間為例,首先來看下HSV和RGB之間的轉換公式:

設 (r, g, b)分別是一個顏色的紅、綠和藍坐標,它們的值是在0到1之間的實數。設max等價于r, g和b中的最大者。設min等于這些值中的最小者。要找到在HSL空間中的 (h, s, l)值,這里的h ∈ [0, 360)度是角度的色相角,而s, l ∈ [0,1]是飽和度和亮度,計算為:

我們假設頭發為純黑色,R=G=B=0,那么按照HSV計算公式可以得到H = S = V = 0;

假設我們要把頭發顏色替換為紅色(r=255,g=0,b=0);

那么,我們先將紅色轉換為對應的hsv,然后保留原始黑色頭發的V,紅色頭發的hs,重新組合新的hsV,在轉換為RGB顏色空間,即為頭發換色之后的效果(hs是顏色屬性,v是明度屬性,保留原始黑色頭發的明度,替換顏色屬性以達到換色目的);

HSV轉換為RGB的公式如下:

對于黑色,我們計算的結果是H=S=V=0,由于V=0,因此,p=q=t=0,不管目標顏色的hs值是多少,rgb始終都是0,也就是黑色;

這樣,雖然我們使用了紅色,來替換黑色頭發,但是,結果卻依舊是黑色,結論也就是hsv/hsl顏色空間,無法對黑色換色。

下面,我們給出天天P圖和美妝相機對應紫色的換發色效果:

與之前HSV顏色空間的結果對比,我們明顯可以看到,天天P圖和美妝相機的效果要更濃,更好看,而且對近乎黑色的頭發進行了完美的換色;

由于上述原因,我們這里需要對圖像中的頭發區域進行一定的增強處理:提亮,輕微改變色調;

這一步通常可以在PS上進行提亮調色,然后使用LUT來處理;

經過提亮之后的上色效果如下圖所示:

可以看到,基本與美妝相機和天天P圖類似了。

HSV/HSL/YCbCr顏色空間換色

這一步比較簡單,保留明度分量不變,將其他顏色、色調分量替換為目標發色就可以了。

這里以HSV顏色空間為例:

假如我們要將頭發染發為一半青色,一般粉紅色,那么我們構建如下圖所示的顏色MAP:

對于頭發區域的每一個像素點P,我們將P的RGB轉換為HSV顏色空間,得到H/S/V;

根據P在原圖頭發區域的位置比例關系,我們在顏色MAP中找到對應位置的像素點D,將D的RGB轉換為HSV顏色空間,得到目標顏色的h/s/v;

根據目標顏色重組hsV,然后轉為RGB即可;

這一模塊代碼如下:

#h=[0,360],s=[0,1],v=[0,1]voidRGBToHSV(intR,intG,intB,float*h,float*s,float*v){floatmin,max;floatr=R/255.0f;floatg=G/255.0f;floatb=B/255.0f;min=MIN2(r,MIN2(g,b));max=MAX2(r,MAX2(g,b));if(max==min)*h=0;if(max==r&&g>=b)*h=60.0f*(g-b)/(max-min);if(max==r&&g

效果圖如下:

本文算法對比美妝相機效果如下:

頭發區域增強

這一步主要是為了突出頭發絲的細節,可以使用銳化算法,如Laplace銳化,USM銳化等等。上述過程基本是模擬美妝相機染發算法的過程,給大家參考一下,最后給出本文算法的一些效果舉例:

本文效果除了實現正常的單色染發,混合色染發之外,還實現了挑染,如最下方一組效果圖所示。

對于挑染的算法原理:

計算頭發紋理,根據頭發紋理選取需要挑染的頭發束,然后對這些頭發束與其他頭發分開染色即可,具體邏輯這里不再累贅,大家自行研究,這里給出解決思路供大家參考。

最后,本文算法理論上實時處理是沒有問題的,頭發分割已經可以實時處理,所以后面基本沒有什么耗時操作,使用opengl實現實時染發是沒有問題的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • AI
    AI
    +關注

    關注

    87

    文章

    31527

    瀏覽量

    270339
  • 深度學習
    +關注

    關注

    73

    文章

    5515

    瀏覽量

    121553

原文標題:【AI超級美發師】深度學習算法打造染發特效(附代碼)

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    小車上安一個無線攝像頭發給電腦,需要什么模塊配件?

    想在自己小車上按一個無線攝像頭發給筆記本,可以看清小車前面的圖像,以前沒接觸過無線模塊,都不太清楚需要什么,想問問需要買什么模塊,我自己用51做了個避障小車,這樣,還望賜教
    發表于 02-26 18:12

    頭發茂密的FPGA工程師嗎

    剛入行,看到網上的頭發級別好擔憂哇這年頭有頭發茂密的FPGA工程師嗎?級別.jpg
    發表于 09-07 15:52

    攝像頭發送數據時WIFI信號消失的原因?

    cam_start信號 ,當其為高時,模擬攝像頭發送數據現在的問題是:之前WIFI搜索,TCP連接都正常,但當cam_start置高,FPGA發送數據的一瞬間,WIFI信號找不到了,然后只要FPGA工作,WIFI信號就搜索不到,請問一下,這是什么原因呢?
    發表于 02-15 08:04

    6LED背光模塊光學特性

    6LED背光模塊光學特性:使用6 LED 背光模塊的液晶顯示器,可以顯示以往3 原色ED 背光模塊液晶顯示器不易達成的
    發表于 09-22 08:07 ?26次下載

    變電設備接頭發熱的原因與解決方案

    變電設備接頭發熱的原因與解決方案 1 運行中變電設備接頭發熱的原因 (1)接頭聯接安裝工藝不當。聯接安裝過程中,錯誤使用砂紙打磨鋁質母線接
    發表于 04-11 18:27 ?3059次閱讀

    基于顯著性特征進行密度修正的均值漂移分割算法

    針對固定空間和色彩帶寬的均值漂移分割算法無法解決的錯分割問題,提出一種基于顯著性特征進行密度修正的均值漂移分割算法。首先基于密度估計的主顏色
    發表于 12-22 10:58 ?0次下載

    充電器的頭特別燙手_充電頭發燙有危險嗎

    本文開始介紹了充電器的定義與工作原理,其次闡述了充電器插頭發燙原因及分析了充電器的頭特別燙手是否正常,最后分析了充電頭發燙是否有危險以及正確的選購充電器方法。
    的頭像 發表于 03-13 16:51 ?30.1w次閱讀
    充電器的頭特別燙手_充電<b class='flag-5'>頭發</b>燙有危險嗎

    MIT提出語義分割技術,電影特效自動化生成

    來自 MIT CSAIL 的研究人員開發了一種精細程度遠超傳統語義分割方法的「語義軟分割技術,連頭發都能清晰地在分割掩碼中呈現。
    的頭像 發表于 08-23 14:18 ?3926次閱讀

    3D打印毛囊突破性進展!“頭發工廠”將成禿頂的救星

    人到中年,最讓人頭疼的就是脫發和禿頂。當前的技術,僅限于頭發植入,并不能滿足大面積禿頂人士的需求。
    的頭像 發表于 07-08 10:01 ?5961次閱讀
    3D打印毛囊突破性進展!“<b class='flag-5'>頭發</b>工廠”將成禿頂的救星

    追覓高速吹風機,一款可以養護頭發的吹發神器

    在冬天這個季節,應該每個家庭都會用到吹風機吧。天氣太冷,洗完頭發之后都需要用吹風機吹干頭發,之前我用的一直是幾十塊錢的普通吹風機,每次洗完頭發都要很久才能吹干,溫度也很難控制,一味的吹熱風,感覺會
    的頭像 發表于 12-17 10:51 ?2100次閱讀

    戴森持續深耕頭發科學,從源頭呵護頭發健康

    作為美發護發行業的領導者,戴森持續深入探索頭發科學領域,從戴森 Superson不斷創新和無法復制的科技,從用戶的真實需求出發,發現并解決被人們所忽略的頭發問題。 2012年11月1日戴森正式進入
    發表于 12-15 14:35 ?323次閱讀
    戴森持續深耕<b class='flag-5'>頭發</b>科學,從源頭呵護<b class='flag-5'>頭發</b>健康

    如何評估頭發柔順度、頭發順滑度

    如何評估頭發柔順度、頭發順滑度
    發表于 01-18 09:11 ?3次下載

    保圣頭發順滑度梳理儀規格書

    人體頭發的外層由許多細小的毛鱗片重疊而成。如果毛鱗片受損、翹起、不規則,會直接影響頭發的光澤度和順滑度,造成頭發毛糙、干枯、分叉情況。 市場上有很多護發產品宣稱能夠修復毛鱗片,
    發表于 01-18 09:57 ?4次下載

    戴森頭發護理品類重塑大眾造型理念

    戴森頭發護理品類重塑大眾造型理念,以顛覆科技實現“零負擔”日常造型
    發表于 02-28 17:07 ?307次閱讀
    戴森<b class='flag-5'>頭發</b>護理品類重塑大眾造型理念

    根據光模塊拉環顏色區分光模塊

    常用的光模塊有四種波長,850nm,1310nm,1490nm,1550nm。其中千兆SPF光模塊850nm對應的拉環顏色為黑色,1310nm對應的 拉環顏色為藍色,1490nm的拉
    發表于 05-17 10:24 ?1次下載
    根據光<b class='flag-5'>模塊</b>拉環<b class='flag-5'>顏色</b>區分光<b class='flag-5'>模塊</b>
    主站蜘蛛池模板: 狠狠色网 | 午夜美女写真福利写视频 | 欧美成人高清性色生活 | 欧美福利视频网站 | 天天舔天天色 | 亚洲国产美女精品久久 | 一级毛片a | 丁香啪啪天堂激情婷婷 | 四虎精品免费永久在线 | 亚洲福利视频一区二区 | 欧美精品成人a多人在线观看 | 成人性色生活影片 | 婷婷5月天| 国产免费一区二区三区 | 4虎影院最近地址 | 日日夜夜精品 | 欧美日韩在线成人看片a | 国产精品成人一区二区三区 | 在线成人亚洲 | 人与牲动交bbbbxxxx | 悠悠影院欧美日韩国产 | 国产老头和美女在线观看 | 天堂bt种子资源+在线 | 日本免费在线一区 | 四虎最新视频 | 青草91 | 亚洲欧美成人在线 | 成人在线一区二区三区 | 欧美成人精品欧美一级乱黄 | 人与禽一级一级毛片 | 亚洲春色www| 激情综合网激情 | 伊人久久大杳蕉综合大象 | 色妞视频资源在线观看 | 国产美女精品久久久久久久免费 | xxxx性xx另类 | 麦克斯奥特曼免费观看 | 欧美黑人xxxx猛牲大交 | 四虎comwww最新地址 | 黄网站色视频大全免费观看 | 午夜啪 |