基于ModelArts實現“螞蟻牙黑”特效

      網友投稿 789 2025-03-31

      前言


      最近幾天,某音和朋友圈都在秀“螞蟻牙黑”,加上特效和魔性的音樂紛紛被人模仿!這里,看了胡琦大大的教程之后,咱用 ModelArts 來制作實踐跑一遍,我將重新從頭到尾,簡單操作實現生成“螞蟻牙黑“魔性洗腦小視頻。

      整體流程

      步驟一

      創建桶,并將數據集導入到自己的OBS桶中

      步驟二

      進入ModelArts的控制臺,找到開發環境->NoteBook,然后新建一個NoteBook,名稱:任意;設置參數:python3;資源池:公共資源池;類型:GPU存儲;配置:云硬盤EVS;規格:[限時免費]體驗規格GPU版。

      步驟三

      新建Pytorch 1.0的.ipynb文件,利用 Moxing 拷貝文件到 JupyterLab,然后進行解壓

      步驟四

      準備工作完成之后,切換到first-order-model目錄,然后將?source_image_path中的路徑替換為”素材臉”所在的路徑,臉的照片可以直接通過 Notebook 的文件上傳功能上傳。當然您還可以將默認的“螞蟻牙黑”視頻替換為您自定義的視頻,格式為 mp4。

      步驟五

      保存結果視頻,然后下載安裝剪輯神器軟件moviepy,然后導入音頻,最后加以合成到出成result.mp4

      步驟六

      最后,可以上傳任意圖片做水印,生成加水印后的視頻,自此,單人版的”螞蟻牙黑“全部完成

      步驟一

      首先,創建一個新的桶并命名。

      然后創建一個文件夾data,用來存放AI Gallery胡琦大大提供的數據集,然后點擊確認下載。(數據集-:點擊?https://marketplace.huaweicloud.com/markets/aihub/datasets/detail/?content_id=00bc20c3-2a00-4231-bdfd-dfa3eb62a46d?)

      基于ModelArts實現“螞蟻牙黑”特效

      耐心等待2分鐘左右,就會顯示下載完成。

      步驟二

      登陸ModelArts控制臺?https://console.huaweicloud.com/modelarts/?region=cn-north-4&locale=zh-cn#/dashboard

      然后選擇開發環境->Notebook->創建Notebook

      名稱:任意

      設置參數:python3

      資源池:公共資源池

      類型:GPU

      存儲配置:云硬盤EVS

      規格:[限時免費]體驗規格GPU版

      最后再確認一下參數

      步驟三

      新建Pytorch 1.0的.ipynb文件,利用 Moxing 拷貝文件到 JupyterLab,然后進行解壓

      簡單測試一下是否可以運行代碼

      利用 Moxing 拷貝文件到 JupyterLab

      將之前下載到 OBS 中的模型和素材通過 Moxing 拷貝過來,此處注意替換為您的 OBS 路徑。02.mp4是“螞蟻呀嘿”的模版視頻,

      # 用 Moxing 下載文件 import moxing as mox # 此處需要替換您的 OBS 地址 mox.file.copy_parallel('obs://mayiyahei88/data/first-order-motion-model/first-order-motion-model-20210226T075740Z-001.zip' , 'first-order-motion-model.zip') mox.file.copy_parallel('obs://mayiyahei88/data/first-order-motion-model/02.mp4' , '02.mp4')

      # 解壓 !unzip first-order-motion-model.zip # 模版視頻 !mv 02.mp4 first-order-motion-model/

      步驟四

      準備工作完成之后,切換到first-order-model目錄,然后將?source_image_path中的路徑替換為”您的臉”所在的路徑,臉的照片可以直接通過 Notebook 的文件上傳功能上傳。

      當然您還可以將默認的“螞蟻牙黑”視頻替換為您自定義的視頻,格式為 mp4。一路執行可以查看到合成前的預覽。

      cd first-order-model

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      import?imageio

      import?numpy?as?np

      import?matplotlib.pyplot?as?plt

      import?matplotlib.Animation?as?Animation

      from?skimage.transform?import?resize

      from?IPython.display?import?HTML

      import?warnings

      warnings.filterwarnings("ignore")

      #?此處替換為您的圖片路徑,圖片最好為?256*256,這里默認為普京大帝

      source_image_path?=?'/home/ma-user/work/first-order-motion-model/02.png'

      source_image?=?imageio.imread(source_image_path)

      #?此處可替換為您的視頻路徑,這里默認為“螞蟻牙黑”

      reader_path?=?'/home/ma-user/work/first-order-motion-model/02.mp4'

      reader?=?imageio.get_reader(reader_path)

      #?調整圖片和視頻大小為?256x256

      source_image?=?resize(source_image,?(256,?256))[...,?:3]

      fps?=?reader.get_meta_data()['fps']

      driving_video?=?[]

      try:

      for?im?in?reader:

      driving_video.append(im)

      except?RuntimeError:

      pass

      reader.()

      driving_video?=?[resize(frame,?(256,?256))[...,?:3]?for?frame?in?driving_video]

      def?display(source,?driving,?generated=None):

      fig?=?plt.figure(figsize=(8?+?4?*?(generated?is?not?None),?6))

      ims?=?[]

      for?i?in?range(len(driving)):

      cols?=?[source]

      cols.append(driving)

      if?generated?is?not?None:

      cols.append(generated)

      im?=?plt.imshow(np.concatenate(cols,?axis=1),?animated=True)

      plt.axis('off')

      ims.append([im])

      ani?=?animation.ArtistAnimation(fig,?ims,?interval=50,?repeat_delay=1000)

      plt.()

      return?ani

      HTML(display(source_image,?driving_video).to_html5_video())

      步驟五

      保存結果視頻

      from demo import load_checkpoints generator, kp_detector = load_checkpoints(config_path='config/vox-256.yaml', checkpoint_path='/home/ma-user/work/first-order-motion-model/vox-cpk.pth.tar')

      from demo import make_animation from skimage import img_as_ubyte predictions = make_animation(source_image, driving_video, generator, kp_detector, relative=True) # 保存結果視頻 imageio.mimsave('../generated.mp4', [img_as_ubyte(frame) for frame in predictions], fps=fps) # 在 Notebook 根目錄能找,/home/ma-user/work/ HTML(display(source_image, driving_video, predictions).to_html5_video())

      給視頻配音,安裝剪輯合成軟件

      # 安裝視頻剪輯神器 moviepy !pip install moviepy

      小tips:當*號變成了步驟數字代碼才執行完畢了

      為視頻添加螞蟻牙黑背景音樂

      # 為生成的視頻加上源視頻聲音 from moviepy.editor import * videoclip_1 = VideoFileClip(reader_path) videoclip_2 = VideoFileClip("../generated.mp4") audio_1 = videoclip_1.audio videoclip_3 = videoclip_2.set_audio(audio_1) videoclip_3.write_videofile("../result.mp4", audio_codec="aac")

      步驟六

      給視頻添加水印

      # 還可以給視頻加水印 video = VideoFileClip("../result.mp4") # 水印圖片請自行上傳 logo = (ImageClip("/home/ma-user/work/first-order-motion-model/hw.png") .set_duration(video.duration) # 水印持續時間 .resize(height=50) # 水印的高度,會等比縮放 .margin(right=0, top=0, opacity=1) # 水印邊距和透明度 .set_pos(("left","top"))) # 水印的位置 final = CompositeVideoClip([video, logo]) final.write_videofile("../result_water.mp4", audio_codec="aac") final_reader = imageio.get_reader("../result_water.mp4") fps = final_reader.get_meta_data()['fps'] result_water_video = [] try: for im in final_reader: result_water_video.append(im) except RuntimeError: pass reader.() result_water_video = [resize(frame, (256, 256))[..., :3] for frame in result_water_video] HTML(display(source_image, driving_video, result_water_video).to_html5_video())

      自此,單人版的螞蟻牙黑全程已經跑完了。

      注意

      本實驗到此完成,需要請大家注意:

      示例中我們建議大家選擇的都是免費規格,如果大家開通了套餐或者有代金券的,可以嘗試使用付費規格獲得更好的體驗,但記得及時關閉相應服務哦!

      Tips:實驗結束后請及時停止在線服務,不然在線服務會持續收費有可能導致欠費,致使華為云賬號被凍結而影響使用。 我們在在線服務管理頁面單擊對應服務列表后的"停止"按鈕即可停止本在線服務。

      總結

      OBS的路徑很重要,填錯了會下載不了數據集

      臉部圖片和視頻存放的路徑要與代碼填寫的路徑一致,不然報錯not found

      找不到result.mp4的原因是當前的路徑是在根目錄,而../relust.mp4就會報錯找不到,你在/home/ma-user/work/first-order-motion-model路徑下,切換才會正常。

      展望

      這次的螞蟻牙黑只實現了單人版的動效,多人版同屏的還有待研究,大家一起研究看看吧!!!!

      AI開發平臺ModelArts 視頻

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:WPS表格常用公式功能使用教程(wps表格常用公式大全)
      下一篇:okr管理模式(okr管理模式是什么?)
      相關文章
      亚洲AV无码一区二区二三区软件 | 亚洲六月丁香六月婷婷蜜芽| 亚洲AV无码之国产精品| 亚洲youjizz| 亚洲国产精品yw在线观看| 亚洲毛片基地日韩毛片基地 | 亚洲精品在线播放| 亚洲视频2020| 久久久久亚洲精品天堂| 久久夜色精品国产噜噜亚洲AV| 午夜亚洲AV日韩AV无码大全| 久久精品国产精品亚洲色婷婷| 亚洲大尺度无码专区尤物| 亚洲成av人影院| 亚洲va久久久噜噜噜久久| 亚洲av无码一区二区三区乱子伦| 久久久无码精品亚洲日韩蜜桃 | 亚洲AV无码成人专区片在线观看 | 亚洲码欧美码一区二区三区| 亚洲第一街区偷拍街拍| 久久亚洲AV成人无码国产电影| 人人狠狠综合久久亚洲高清| 亚洲首页国产精品丝袜| 日本亚洲色大成网站www久久| 亚洲精品无码久久久久秋霞| 久久久久久亚洲av无码蜜芽| 亚洲国产香蕉人人爽成AV片久久| 国产亚洲av片在线观看18女人 | 亚洲精品自产拍在线观看| 国产亚洲漂亮白嫩美女在线 | 亚洲电影日韩精品| 久久久久一级精品亚洲国产成人综合AV区 | 一区二区三区亚洲| 亚洲国产成人精品电影| 亚洲一区二区三区高清不卡| 亚洲国产欧美日韩精品一区二区三区 | 亚洲国产成人手机在线电影bd| 亚洲AV无码一区二区三区人| 亚洲另类无码一区二区三区| mm1313亚洲精品无码又大又粗| 国产亚洲精品福利在线无卡一|