Python深度學(xué)習(xí)實(shí)現(xiàn)DIY專屬個(gè)人表情包【免費(fèi)源碼】
? ? 在現(xiàn)代社交媒體的時(shí)代,表情包已經(jīng)成為了人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。表情包可以用?lái)表達(dá)情感、傳遞信息,甚至成為一種文化符號(hào)。然而,隨著表情包的日益普及,大量的表情包已經(jīng)不能滿足人們的需求,許多人開(kāi)始嘗試制作自己的表情包,以滿足個(gè)性化的需求。制作自己的表情包不僅能夠滿足個(gè)性化需求,還能夠鍛煉自己的創(chuàng)造力和表現(xiàn)力。本文將為大家詳細(xì)介紹如何利用深度學(xué)習(xí)零成本制作專屬自己的表情包,讓你也能成為一個(gè)炫酷的表情包制作大師!
? ? 制作表情包的第一步是選擇獲取人臉特,將人臉五官等個(gè)人專屬特征通過(guò)深度學(xué)習(xí)繪制獲得。制作表情包的第二步是選擇一張背景圖片,將獲取到的五官等信息處理放置背景圖中??傊?,制作自己的表情包不僅能夠滿足個(gè)性化需求,還能夠鍛煉自己的創(chuàng)造力和表現(xiàn)力。通過(guò)閱讀本文,大家可以掌握利用深度學(xué)習(xí)技術(shù)+python實(shí)現(xiàn)DIY專屬個(gè)人表情包的制作,最終效果如圖:
深度學(xué)習(xí)實(shí)現(xiàn)DIY專屬個(gè)人表情包的技術(shù)路線分為以下幾個(gè)部分:
(1)通過(guò)U2NET深度學(xué)習(xí)模型實(shí)現(xiàn)從照片中提取人臉信息,并繪制成素描圖像;
(2)處理構(gòu)建表情包背景圖;
(3)對(duì)素描生成圖像和表情包背景圖做處理,生成結(jié)果;
? ? 其中的程序操作流程:
首先運(yùn)行u2net_portrait_test生成照片素描圖,并縮放至和表情包背景圖統(tǒng)一尺寸;然后通過(guò)畫(huà)圖板將素描圖人臉區(qū)域復(fù)制到背景圖人臉,最后對(duì)其進(jìn)行基本處理。
具體功能的形成分為以下幾個(gè)部分介紹,最終代碼也會(huì)免費(fèi)放置文末,供大家學(xué)習(xí)參考。
一、項(xiàng)目環(huán)境要求
項(xiàng)目使用的深度學(xué)習(xí)模型框架為Pytorch。具體的版本號(hào)關(guān)系如下:
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
二、人臉?biāo)孛鑸D像生成
人臉五官等特征的繪制通過(guò)深度學(xué)習(xí)模型U2NET實(shí)現(xiàn),最終模型可生成五官素描照。
2.1 U2NET模型基本介紹
2.2 U2NET代碼介紹
U2NET測(cè)試代碼主要分為讀取文件路徑、測(cè)試圖片讀入、加載模型和生成結(jié)果幾個(gè)部分。
(1)定義測(cè)試圖片路徑、結(jié)果保存路徑和讀取模型代碼如下:
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)數(shù)據(jù)讀入代碼如下:
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)加載模型文件,變?yōu)闇y(cè)試模式:
net?=?U2NET(3,1) net.load_state_dict(torch.load(model_dir)) if?torch.cuda.is_available(): ????net.cuda() net.eval()
(4)提取特征并生成結(jié)果,保存結(jié)果:
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
最終生成的素描圖像如下:
三、構(gòu)建表情包
表情包的構(gòu)建可以簡(jiǎn)單通過(guò)畫(huà)圖板構(gòu)建。當(dāng)然,也可以使用一些更高級(jí)的圖片編輯軟件來(lái)進(jìn)行處理。比如,Photoshop、GIMP、Pixlr等軟件都是非常好用的圖片編輯工具,它們可以幫助你進(jìn)行裁剪、調(diào)整顏色、添加文字等操作,使得你的表情包更加生動(dòng)有趣。
(1)首先,找到一個(gè)表情包背景圖,如下:
(2)使用畫(huà)圖板對(duì)生成的素描圖像縮放和表情包背景統(tǒng)一尺寸:
(3)使用畫(huà)圖對(duì)其臉部區(qū)域進(jìn)行裁剪復(fù)制:
(4)將復(fù)制得到的人臉區(qū)域粘貼到表情包背景圖中:
(5)去除多余的邊角等,并保存圖像,最終可生成專屬個(gè)人表情包:
(6)二次加工:
如果你想要制作動(dòng)態(tài)表情包,那么你需要使用一些GIF制作工具。比如,GIFmaker、GIF Brewery、GIF Animator等工具都是非常好用的GIF制作軟件,它們可以幫助你將多張圖片合成為一個(gè)GIF動(dòng)圖,從而制作出生動(dòng)的表情包。同時(shí)也可以嘗試將不同的素材進(jìn)行組合,添加一些有趣的文字或者特效,從而制作出獨(dú)一無(wú)二的表情包。創(chuàng)意和想象力是制作表情包的靈魂,只有你敢于嘗試、敢于創(chuàng)新,才能夠制作出真正有趣、有用的表情包。
讓我們一起來(lái)嘗試這個(gè)有趣的表情包自制項(xiàng)目吧!
完整代碼:
鏈接:https://pan.baidu.com/s/1FS16vYoijCIuA_ebZNxRng?
提取碼:3c6z
或者掃碼下載