引言:
在现代社交媒体的时代,表情包已经成为了人们日常生活中不可或缺的一部分。表情包可以用来表达情感、传递信息,甚至成为一种文化符号。然而,随着表情包的日益普及,大量的表情包已经不能满足人们的需求,许多人开始尝试制作自己的表情包,以满足个性化的需求。制作自己的表情包不仅能够满足个性化需求,还能够锻炼自己的创造力和表现力。本文将为大家详细介绍如何利用深度学习零成本制作专属自己的表情包,让你也能成为一个炫酷的表情包制作大师!
制作表情包的第一步是选择获取人脸特,将人脸五官等个人专属特征通过深度学习绘制获得。制作表情包的第二步是选择一张背景图片,将获取到的五官等信息处理放置背景图中。总之,制作自己的表情包不仅能够满足个性化需求,还能够锻炼自己的创造力和表现力。通过阅读本文,大家可以掌握利用深度学习技术+python实现DIY专属个人表情包的制作,最终效果如图:
深度学习实现DIY专属个人表情包的技术路线分为以下几个部分:
(1)通过U2NET深度学习模型实现从照片中提取人脸信息,并绘制成素描图像;
(2)处理构建表情包背景图;
(3)对素描生成图像和表情包背景图做处理,生成结果;
其中的程序操作流程:
首先运行u2net_portrait_test生成照片素描图,并缩放至和表情包背景图统一尺寸;然后通过画图板将素描图人脸区域复制到背景图人脸,最后对其进行基本处理。
具体功能的形成分为以下几个部分介绍,最终代码也会免费放置文末,供大家学习参考。
一、项目环境要求
项目使用的深度学习模型框架为Pytorch。具体的版本号关系如下:
torch 1.8.1+cu111
torch-encoding 1.2.2b20211110
torchfile 0.1.0
torchgeometry 0.1.2
torchlight 1.0
torchnet 0.0.4
torchsample 0.1.3
torchtext 0.6.0
torchvision 0.9.1+cu111
二、人脸素描图像生成
人脸五官等特征的绘制通过深度学习模型U2NET实现,最终模型可生成五官素描照。
2.1 U2NET模型基本介绍
运行:
2.2 U2NET代码介绍
U2NET测试代码主要分为读取文件路径、测试图片读入、加载模型和生成结果几个部分。
(1)定义测试图片路径、结果保存路径和读取模型代码如下:
image_dir = './test_data/test_portrait_images/portrait_im'
prediction_dir = './test_data/test_portrait_images/portrait_results'
if(not os.path.exists(prediction_dir)):
os.mkdir(prediction_dir)
model_dir = './saved_models/u2net_portrait/u2net_portrait.pth'
img_name_list = glob.glob(image_dir+'/*')
print("Number of images: ", len(img_name_list))
(2)数据读入代码如下:
test_salobj_dataset = SalObjDataset(img_name_list = img_name_list,
lbl_name_list = [],
transform=transforms.Compose([RescaleT(256),
ToTensorLab(flag=0)])
)
test_salobj_dataloader = DataLoader(test_salobj_dataset,
batch_size=1,
shuffle=False,
num_workers=1)
(3)加载模型文件,变为测试模式:
net = U2NET(3,1)
net.load_state_dict(torch.load(model_dir))
if torch.cuda.is_available():
net.cuda()
net.eval()
(4)提取特征并生成结果,保存结果:
for i_test, data_test in enumerate(test_salobj_dataloader):
print("inferencing:",img_name_list[i_test].split(os.sep)[-1])
inputs_test = data_test['image']
inputs_test = inputs_test.type(torch.FloatTensor)
if torch.cuda.is_available():
inputs_test = Variable(inputs_test.cuda())
else:
inputs_test = Variable(inputs_test)
d1,d2,d3,d4,d5,d6,d7= net(inputs_test)
pred = 1.0 - d1[:,0,:,:]
pred = normPRED(pred)
save_output(img_name_list[i_test],pred,prediction_dir)
del d1,d2,d3,d4,d5,d6,d7
最终生成的素描图像如下:
三、构建表情包
表情包的构建可以简单通过画图板构建。当然,也可以使用一些更高级的图片编辑软件来进行处理。比如,Photoshop、GIMP、Pixlr等软件都是非常好用的图片编辑工具,它们可以帮助你进行裁剪、调整颜色、添加文字等操作,使得你的表情包更加生动有趣。
(1)首先,找到一个表情包背景图,如下:
(2)使用画图板对生成的素描图像缩放和表情包背景统一尺寸:
(3)使用画图对其脸部区域进行裁剪复制:
(4)将复制得到的人脸区域粘贴到表情包背景图中:
(5)去除多余的边角等,并保存图像,最终可生成专属个人表情包:
(6)二次加工:
如果你想要制作动态表情包,那么你需要使用一些GIF制作工具。比如,GIFmaker、GIF Brewery、GIF Animator等工具都是非常好用的GIF制作软件,它们可以帮助你将多张图片合成为一个GIF动图,从而制作出生动的表情包。同时也可以尝试将不同的素材进行组合,添加一些有趣的文字或者特效,从而制作出独一无二的表情包。创意和想象力是制作表情包的灵魂,只有你敢于尝试、敢于创新,才能够制作出真正有趣、有用的表情包。