亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

音畫代碼 這個Python包只需幾行代碼


音畫代碼 這個Python包只需幾行代碼

文章插圖
音畫代碼(這個Python包只需幾行代碼)
Lucid Sonic Dreams 包可以實現(xiàn) GAN 生成圖像的「音畫同步」效果,且支持自定義 。
GAN 生成圖像奇幻詭譎,對此我們早已不陌生 。如果它們還可以卡音效呢?最近,有人就創(chuàng)建了一個實現(xiàn)類似效果的 Python 包——Lucid Sonic Dreams,只用幾行代碼就可以實現(xiàn) AI 生成畫作與音樂的同步 。
  • GitHub 地址:https://github.com/mikaelalafriz/lucid-sonic-dreams
  • Colab 教程地址:https://colab.research.google.com/drive/1Y5i50xSFIuN3V4Md8TB30_GOAtts7RQD?usp=sharing
在該項目提供的 demo 視頻中,伴隨著 Saje 的歌「Raspberry」,GAN 生成的圖像不斷變換且呈現(xiàn)出了對應的節(jié)奏 。
工作原理
生成藝術品通常是由 GAN 網(wǎng)絡來完成的 。Lucid Sonic Dreams 包默認使用 StyleGAN2-ADA 架構,不過 GAN 架構也可以自定義 。將這些模型在特定「風格」的圖像數(shù)據(jù)集上進行訓練,使之能夠輸出與訓練圖像風格一致的無窮多張圖像 。此外,Lucid Sonic Dreams 使用 Justin Pinkney 創(chuàng)建庫中的 StyleGAN2 預訓練模型(地址:
https://github.com/justinpinkney/awesome-pretrained-stylegan2)。
那么這些圖像到底是如何生成的呢?
將輸入饋送至 StyleGAN2 模型(輸入為有 512 個數(shù)字的向量),輸入決定了模型的輸出圖像,因此對輸入向量進行微小更改也將帶來輸出圖像的微小變化 。
現(xiàn)在,有趣的部分到了:如果我們從音樂中獲取聲波,從聲波中提取數(shù)值(如振幅)并添加至輸入向量,會發(fā)生什么?
Lucid Sonic Dreams 對視頻每一幀執(zhí)行這些操作,生成脈沖與變換與音樂一致的圖像 。
具體而言,利用 Lucid Sonic Dreams 包,音樂控制了 3 個主要視覺組件:脈沖(Pulse)、運動(Motion)和類別(Class):
  • 脈沖指視覺畫面隨著音樂的敲擊性節(jié)奏而「跳動」 。從數(shù)學角度來看,「脈沖」是向輸入向量暫時添加聲波振幅的結果(即在下一幀中該向量仍是初始向量);
  • 運動指視覺畫面變換的速度 。從數(shù)學上看,它是向輸入向量累積添加振幅(即添加的振幅后續(xù)不會被清零);
  • 類別指生成圖像中物體的標簽,例如基于 WikiArt 圖像訓練的風格中就有 167 個類別(包括梵高、達芬奇、抽象派等) 。而這些由音調進行控制,具體而言,12 個音高分別對應 12 個不同類別 。這些音高的振幅對傳輸至第二個輸入向量(類別向量)的數(shù)字造成影響,而這由模型生成的對象來決定 。
項目作者表示,這個想法受到 Matt Siegelman 的 Deep Music Visualizer 項目的啟發(fā) 。目前網(wǎng)上也有一些類似的項目,但 Lucid Sonic Dreams 的獨特之處在于以 Python 包形式實現(xiàn),且允許自定義 。
使用 Lucid Sonic Dreams 包,你可以做到這些
Lucid Sonic Dreams 具備極強的易用性和靈活性 。用戶可以使用 pip 進行安裝:
然后只需輸入幾行 Python 代碼即可:
from lucidsonicdreams import LucidSonicDreamL = LucidSonicDream(song = 'chemical_love.mp3', style = 'abstract photos')L.hallucinate(file_name = 'chemical_love.mp4') 改變風格
運行以下代碼,我們可以查看默認可用的風格:
from lucidsonicdreams import show_stylesshow_styles() 這樣就可以得到一組風格名稱,這些風格來自 Justin Pinkney 創(chuàng)建的庫 。你還可以輸入自己的 StyleGAN 權重,或者使用其他 GAN 架構 。
調整參數(shù)
Lucid Sonic Dreams 包的默認設置很好用,但它實際上有很多參數(shù)——30 多個,不過這些參數(shù)是可以調整的(參數(shù)詳細信息參見 Colab 教程) 。
哪些參數(shù)最重要呢?我們來看整個視頻生成 pipeline:
首先,對輸入向量進行初始化和插值,作為視頻的「基礎運動」(base motion) 。參數(shù) speed_fpm 控制運動的速度,fpm 表示「每分鐘幀數(shù)」,即每分鐘初始化的向量數(shù) 。對于每個后續(xù)幀而言,參數(shù) pulse_react, motion_react, and class_react 控制音頻操縱每個對應組件的程度 。
模型基于這些向量生成圖像后,圖像被傳輸經(jīng)過一系列特效(也對音樂產生反應) 。默認情況下,Lucid Sonic Dreams 包具備「contrast」和「flash」特效,可以與音頻的敲擊性節(jié)奏同步 。通過設置 contrast_strength 和 flash_strength 參數(shù),即可進行調整 。使用者還可以創(chuàng)建自定義特效 。
以下代碼展示了調參過程:
L = LucidSonicDream('pancake_feet.mp3', style = 'modern art')L.hallucinate(file_name = 'pancake_feet.mp4',               speed_fpm = 0,               motion_react = 0.8,               contrast_strength = 0.5,               flash_strength = 0.7) 使用自己的 StyleGAN 權重
如果你自己訓練過 StyleGAN,或者在網(wǎng)上獲得了一些模型權重,你可以選擇將文件路徑傳輸至這些權重,作為風格參數(shù)的值 。
例如,文章開頭的視頻使用的是 Jeremy Torman 訓練的模型 。生成視頻所用代碼如下所示:
L = LucidSonicDream(song = 'raspberry.mp3', style = 'VisionaryArt.pkl')L.hallucinate(file_name = 'raspberry.mp4',               pulse_react = 1.2,               motion_react = 0.7,               contrast_strength = 0.5,               flash_strength = 0.5) 使用單獨的音軌
這個包還可以用作音樂可視化工具,使用者可以上傳單獨的音軌,進而控制 Pulse、Motion、Class、Contrast 和 Flash 。如果你想使這些視覺組件與特定的樂器同步,使用這個包是不錯的選擇 。你還可以利用這些單獨的音軌自定義特效 。
以下是示例代碼:
L = LucidSonicDream(song = 'lucidsonicdreams_main.mp3',                    pulse_audio = 'lucidsonicdreams_pulse.mp3',                    class_audio = 'lucidsonicdreams_class.mp3',                    style = 'wikiart')L.hallucinate('lucidsonicdreams.mp4',               pulse_react = 0.25,              motion_react = 0,              classes = [1,5,9,16,23,27,28,30,50,68,71,89],              dominant_classes_first = True,              class_shuffle_seconds = 8,              class_smooth_seconds = 4,              class_pitch_react = 0.2,              contrast_strength = 0.3) 自定義特效
除了內置的「Contrast」和「Flash」特效外,Lucid Sonic Dreams 包還允許用戶自定義創(chuàng)建特效 。用戶只需創(chuàng)建一個包含至少以下 3 個參數(shù)的函數(shù)即可:array,表示應用特效的圖像;strength,決定對音樂的反應強度;amplitude 表示在任意給定時間點的音量 。之后,將該自定義函數(shù)傳輸至 EffectsGenerator 對象 。
作者用以下代碼進行了試驗,其使用的是 scikit-image 的 swirl 特效:
import numpy as np from skimage.transform import swirlfrom lucidsonicdreams import EffectsGeneratordef swirl_func(array, strength, amplitude):  swirled_image = swirl(array,                         rotation = 0,                         strength = 100 * strength * amplitude,                        radius=650)  return (swirled_image*255).astype(np.uint8)swirl_effect = EffectsGenerator(swirl_func,                                audio = 'unfaith.mp3',                                 strength = 0.2,                                 percussive = False)L = LucidSonicDream('unfaith.mp3',                    style = 'textures')L.hallucinate('unfaith.mp4',              motion_react = 0.15,              speed_fpm = 2,              pulse_react = 1.5,              contrast_strength = 1,              flash_strength = 1,               custom_effects = [swirl_effect])files.download("unfaith.mp4") 使用其他 GAN 架構
你還可以使用其他 GAN 架構 。只需定義一個函數(shù),該函數(shù)以一組噪聲向量和類別向量(NumPy 數(shù)組)作為輸入,輸出一組 Pillow 圖像 。事實上,該函數(shù)甚至不需要使用 GAN,它可以是能夠將輸入向量轉換成圖像的任意函數(shù) 。
下列代碼使用 BigGAN 的 PyTorch 實現(xiàn)復現(xiàn)了 Deep Music Visualizer:
from pytorch_pretrained_biggan import BigGAN, convert_to_imagesimport torchbiggan = BigGAN.from_pretrained('biggan-deep-512')biggan.to('cuda:0')def biggan_func(noise_batch, class_batch):  noise_tensor = torch.from_numpy(noise_batch).cuda()  class_tensor = torch.from_numpy(class_batch).cuda()  with torch.no_grad():    output_tensor = biggan(noise_tensor.float(), class_tensor.float(), truncation = 1)  return convert_to_images(output_tensor.cpu())L = LucidSonicDream('sea_of_voices_inst.mp3',                    style = biggan_func,                     input_shape = 128,                     num_possible_classes = 1000)L.hallucinate('sea_of_voices.mp4',              output_audio = 'sea_of_voices.mp3',              speed_fpm = 3,              classes = [13, 14, 22, 24, 301, 84, 99, 100, 134, 143, 393, 394],              class_shuffle_seconds = 10,               class_shuffle_strength = 0.1,              class_complexity = 0.5,              class_smooth_seconds = 4,              motion_react = 0.35,              flash_strength = 1,              contrast_strength = 1)【音畫代碼 這個Python包只需幾行代碼】


    以上關于本文的內容,僅作參考!溫馨提示:如遇健康、疾病相關的問題,請您及時就醫(yī)或請專業(yè)人士給予相關指導!

    「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內容,希望對您有所幫助: