天天看點

PaddleHub創意作品 -無價之姐之三十而已序言

無價之姐之三十而已

  • 序言
    • 創意的由來
    • puddlehub初體驗
    • 技術路線
    • 總結

序言

首先非常感謝百度提供的平台AIstudio和百度提供的本次教育訓練,通過參加這次教育訓練讓我了解到了什麼是飛槳paddlepaddle架構,這個架構是首個國内開源的深度學習架構,使用這個架構感覺實作項目非常地便利,功能也是非常的強大,還可以用來參加各種比賽競賽,最最最讓人心動的事是百度還免費提供了每天12小時的免費V100顯示卡算力,這大大降低了學習的成本,如果你是一位想加入到深度學習領域來的學生,那将會感到多麼的開心啊!那麼本次創意作品的産生也是因為參加了百度提供的教育訓練課程,讓我收獲滿滿,在與講師、助教們的互動之中,提升了自己的能力,利用了飛槳的puddlehub進行實踐,是以才有了這樣一個小小的創意視訊。

創意的由來

這個視訊作品的創意來自于當下非常火的綜藝《乘風破浪的姐姐》和勁爆的電視劇《三十而已》,想到參加乘風破浪的姐姐們都是30+的年紀,30歲以上的解解們既成熟又有魅力,擁有自己的事業,這是一個光芒四射的年紀,與《三十而已》這部劇的思想不謀而合,表達了在三十的姐姐們雖然會面臨一些問題,但是卻擁有解決問題的能力,還有自己的事業和想要守護的東西,未來才剛剛開始而已,也就三十歲而已。于是,就想要制作出一個小視訊即展現了姐姐們30+的成熟幹練氣質又表達了這種乘風破浪無懼未來的精神,讓姐姐們在《三十而已》的劇照中跳舞,展現風采。

puddlehub初體驗

第一次參加百度教育訓練,第一次使用 puddlehub,根據教育訓練内容嘗試着使用paddleub來直接使用模型獲得想要的結果,感覺 puddlehub就是哆啦A夢的百寶箱,裡面裝滿了各種各樣的奇巧工具,想要什麼效果,那我就從百寶箱裡面取出一個工具,就像大雄想飛,哆啦A夢就拿出來一個竹蜻蜓一樣那麼神奇,這就是使用paddlehub最直接的感受了,後面将談談如何利用paddlehub實作的“無價之姐之三十而已”這個創意小項目。

PaddleHub創意作品 -無價之姐之三十而已序言

技術路線

第一步:擷取輸入資料

首先在網上收集并下載下傳了乘風破浪的姐姐—藍盈盈的個人視訊,然後将這個原始視訊利用opencv工具拆解成一幀幀的圖檔,那麼這樣就獲得了我們的原始第一部分素材。

import cv2
#拆分視訊為圖檔
cap = cv2.VideoCapture('/home/aistudio/video.m4s')
           

然後,還需要在網上去收集《三十而已》的劇組照,這個劇組照要做到盡量能夠和人物相比對,于是挑選了兩張備選,如下:

PaddleHub創意作品 -無價之姐之三十而已序言
PaddleHub創意作品 -無價之姐之三十而已序言

第二步:加載paddlehub

#加載paddlehub
!pip install paddlehub==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
           

第三步:安裝合适的人像摳圖模型

#安裝人像摳圖模型
!hub install deeplabv3p_xception65_humanseg==1.1.0
           

第四步:調用模型實作摳圖

import paddlehub as hub
import cv2
import os
# 加載deeplabv3p_xception65_humanseg模型
module = hub.Module(name="deeplabv3p_xception65_humanseg")
           

第五步:合成人像和背景圖檔

import numpy as np
import matplotlib.image as image 
# 定義合成函數blend_images将扣出的人物換背景,
#其中參數fore_image為摳圖的人像圖檔,base_image為找好的背景圖檔,
#output_path為合成之後的圖檔儲存路徑。
def blend_images(fore_image, base_image, output_path):
           
PaddleHub創意作品 -無價之姐之三十而已序言

第六步:合成每幀圖像并合并為gif

from PIL import Image
import numpy as np 

humanseg_jie = [filename for filename in os.listdir('humanseg_output')]
output_path='hecheng/'
for i, img in enumerate(humanseg_jie):
img = blend_images(img_path, 'work/bg2.png', output_path_img)
           
import imageio
for i in range(350,370):
    frames.append(imageio.imread('hecheng/video/%d.png' % i))
# Save them as frames into a gif 
imageio.mimsave(gif_name, frames, 'GIF',duration = 0.001)
           
PaddleHub創意作品 -無價之姐之三十而已序言

第六步:合成每幀圖像并合并為視訊

#合成每幀圖像為視訊
for i in range(len(files)):
    img = cv2.imread('hecheng/video/%d.png' % i)
    out.write(img)#儲存幀
out.release()
           

綜合所有的步驟之後,最終的《無價之姐三十而已》創意視訊效果請點選以下觀看:

paddlehub自制視訊:無價之姐三十而已

總結

非常開心同時也非常榮幸能夠參加這次的百度的教育訓練活動,受益匪淺,這是第一次參加百度的教育訓練,希望後面能夠有機會再次參加百度的教育訓練課程,感謝班班和各位講師助教的辛勤付出,耐心聆聽和解答疑問,謝謝百度能夠提供這麼好用又免費的平台AIstudio,最後附上本視訊作品的完整項目連結。

完整項目AIStudio連結位址

paddlehub創意賽:無價之姐之三十而已

繼續閱讀