换发型算法_【AI超级美发师】深度学习算法打造染发特效(附代码)

原标题:【AI超级美发师】深度学习算法打造染发特效(附代码)

来源:OpenCV学堂

作者:胡耀武

【新智元导读】如今,在类似天天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)

#256

down0 = 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)

#128

down1 = 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)

#64

down2 = 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)

#32

down3 = Conv2D(256,(3,3), padding='same')(down2_pool)

down3 = BatchNormalization()(down3)

down3 = Activat

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值