Python深度学习实现DIY专属个人表情包

news/2025/1/8 7:00:16/

引言:

在现代社交媒体的时代,表情包已经成为了人们日常生活中不可或缺的一部分。表情包可以用来表达情感、传递信息,甚至成为一种文化符号。然而,随着表情包的日益普及,大量的表情包已经不能满足人们的需求,许多人开始尝试制作自己的表情包,以满足个性化的需求。制作自己的表情包不仅能够满足个性化需求,还能够锻炼自己的创造力和表现力。本文将为大家详细介绍如何利用深度学习零成本制作专属自己的表情包,让你也能成为一个炫酷的表情包制作大师!
制作表情包的第一步是选择获取人脸特,将人脸五官等个人专属特征通过深度学习绘制获得。制作表情包的第二步是选择一张背景图片,将获取到的五官等信息处理放置背景图中。总之,制作自己的表情包不仅能够满足个性化需求,还能够锻炼自己的创造力和表现力。通过阅读本文,大家可以掌握利用深度学习技术+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动图,从而制作出生动的表情包。同时也可以尝试将不同的素材进行组合,添加一些有趣的文字或者特效,从而制作出独一无二的表情包。创意和想象力是制作表情包的灵魂,只有你敢于尝试、敢于创新,才能够制作出真正有趣、有用的表情包。
在这里插入图片描述

让我们一起来尝试这个有趣的表情包自制项目吧!

完整代码:https://gitcode.net/qq_42279468/python-emotion.git


http://www.ppmy.cn/news/45288.html

相关文章

开源正当时,共赢新未来 OpenHarmony开发者大会成功召开

4月19日,以“开源正当时,共赢新未来”为主题的开放原子开源基金会OpenHarmony开发者大会2023(以下简称“大会”)成功举办。 本次大会由开放原子开源基金会指导,OpenHarmony项目群工作委员会主办,华为、开鸿…

2024软件工程考研之《软件工程导论》专业课复习

一、考察《软件工程导论》的学校 截止目前,考察《软件工程导论》的学校主要有: 大连理工大学887 北京航天航空大学991 北京交通大学901 河海大学846 海南大学835 新疆大学841 成都信息工程大学809 长安大学846 天津工业大学840 华东交通大学837 大连交通…

一个苹果,预防多种疾病

01 辅助预防癌症 苹果中含有的花青素、多酚、黄酮类物质是高效抗氧化剂,能辅助预防癌症。 02 保护心脑血管 苹果中含有果胶,这种可溶纤维能有助于降低血压、血糖、胆固醇,保护血管,降低中风和冠心病的风险。 03 防痴…

Java中的注解,自定义注解

文章目录 1. 注解概述2. 注解与注释3. 注解的重要性4. 常见的Annotation作用4.1 生成文档相关的注解4.2 在编译时进行格式检查(JDK内置的三个基本注解) 5. 元注解6. 自定义注解6.1 定义自定义注解6.2 使用自定义注解6.3 读取和处理自定义注解 框架 注解 反射 设计模式 1. 注…

电磁干扰的屏蔽方法~屏蔽设计难点

屏蔽设计难点 由于接缝会导致屏蔽罩导通率下降,因此屏蔽效率也会降低。要注意低于截止频率的辐射其衰减只取决于缝隙的长度直径比,例如长度直径比为 3 时可获得 100dB 的衰减。在需要穿孔时,可利用厚屏蔽罩上面小孔的波导特性;另一…

JavaWeb——IO、存储、硬盘、文件系统相关常识

目录 一、IO 1、定义 二、存储和硬盘 1、存储 2、硬盘 三、文件系统 1、文件 (1)、定义 (2)、分类 (3)、操作 2、树形结构和目录 3、路径 (1)、定义 (2&…

记录一 :对象锁和类锁

目录 简介 通过8个案例来解释说明 案例及总结 简介 阿里规约【强制】高并发时,同步调用应该去考量锁的性能损耗。能用无锁数据结构,就不要用锁;能 锁区块,就不要锁整个方法体;能用对象锁,就不要用类锁。…

Windows环境下调试DAB-DETR与Deformable-DETR

先前都是在服务器上运行DETR的相关程序,服务器使用的是Linux,所以运行较为简单,但如果想要简单的debug的话就没必要使用服务器了,今天便来在Winodws环境下调试DETR类项目,这里以Deformable-DETR与DAB-DETR为例。 首先是…