新聞中心
本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序設計、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了東西湖免費建站歡迎大家使用!
用GAN生成畫作已經(jīng)不是新鮮事了,不過你見過“懂音樂”的GAN嗎?
一位外國小哥開發(fā)的Python工具,能讓GAN生成的圖像隨音樂律動,幾個小時內(nèi)就在reddit上收獲了1.5k個贊。
最佳用法">
從它的名字清晰的聲波夢就能感受到一種夢幻色彩,正如網(wǎng)友所說:
這就像海市蜃樓,好像能看出描繪的物體或場景,但是下一分鐘,你又會意識到它們并不存在。
最佳用法">
而這樣的音樂視效,只需幾行代碼就可以實現(xiàn),還支持各種自定義,一起來了解一下吧~
在輸入向量中加入音樂特征
Lucid Sonic Dreams默認使用StyleGAN2-ADA架構(gòu),并且使用Justin Pinkney的存儲庫awesome-pretrained-stylegan2中的預訓練模型。
根據(jù)指定風格的圖像數(shù)據(jù)集進行訓練,得到與其風格相似的大量圖像。
最佳用法">
模型首先從向量生成圖像,圖像再通過動態(tài)效果來展現(xiàn)音樂。
在圖像生成過程中,向模型中輸入包含512個數(shù)值的向量來決定輸出圖像,而向量的細微變化,在輸出圖像中也會產(chǎn)生相應地細微的變化。
因此,Lucid Sonic Dreams將從音樂的聲波中提取的數(shù)值(例如:振幅),添加到輸入向量中。對視頻中的每一幀都執(zhí)行此操作,創(chuàng)造出隨音樂跳動和變化的藝術效果。
作者開發(fā)這一工具的靈感,來自Matt Siegelman的Deep Music Visualizer項目——BigGAN,它能夠使其生成的圖像與音樂同步變化。
最佳用法">
圖源:Matt Siegelman
雖然以前也有一些類似的項目,但Lucid Sonic Dreams與眾不同的地方在于,它是能夠實現(xiàn)自定義的Python軟件包。
可簡可繁,滿足不同需求
Lucid Sonic Dreams的安裝十分簡單,只需要運行pip install lucidsonicdreams進行安裝就可以了。
首先要實現(xiàn)基本可視化,代碼是這樣的:
- from lucidsonicdreams import LucidSonicDream
- L = LucidSonicDream(song = 'song.mp3',
- style = 'abstract photos')
- L.hallucinate(file_name = 'song.mp4')
由此就可以生成抽象風格的視頻:
最佳用法">
如果想要改變風格、查看可用風格的列表,可以運行命令:
- from lucidsonicdreams import show_styles
- show_styles()
此外,也可以使用其他風格,只需要將參數(shù)值style設為相應的pkl文件路徑,就像這樣:
- 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)
例如,使用Jeremy Torman訓練的模型生成的效果:
最佳用法">
Lucid Sonic Dreams的默認設置使它用起來十分容易,但除此在外,它也有很多可調(diào)的參數(shù),作者在Colab上詳細地羅列了這些參數(shù)。
例如,參數(shù)pulse_react、motion_react和class_react,分別控制著3個主要視覺組件:Pulse(脈沖)、Motion(運動)和Class(種類)。
Pulse組件,是指視音樂中打擊樂元素的視覺效果。從數(shù)學上講,脈沖是聲波振幅臨時添加到輸入向量的結(jié)果,而在下一幀視頻中,向量則恢復正常。
最佳用法">
Motion,指的是視覺效果變形的速度,是將振幅累加到輸入向量中的結(jié)果。
最佳用法">
Class,則是指生成的圖像中對象的標簽。例如,利用WikiArt圖像訓練的樣式,共有167個種類,包括:梵高、達芬奇、抽象繪畫等。
最佳用法">
這些類別由音調(diào)控制,具體來說,就是將12個音高映射到12個類別。而這些音高的不同振幅,會影響第二輸入向量(類向量)的數(shù)值,該向量則決定了模型生成的對象。
此外,參數(shù)speed_fpm控制該運動的速度,該參數(shù)為0時,則使圖像在歌曲的無聲的部分靜止。FPM代表每分鐘幀數(shù),也就是每分鐘初始化的向量數(shù)。
在默認情況下,程序還帶有與音頻中打擊樂元素同步的“對比”和“閃光”效果,分別通過contrast_strength和flash_strength參數(shù)進行設置。
調(diào)整參數(shù)的代碼就像這樣:
- 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)
除了這些內(nèi)置的效果外,Lucid Sonic Dreams還支持創(chuàng)建自定義效果。只需創(chuàng)建一個函數(shù),其中至少包含3個參數(shù):
array用來指示應用效果的圖像;strength決定對音樂的反應程度;amplitude則是指音樂在任何給定時間點的音量。
然后,將此自定義函數(shù)傳遞給EffectsGenerator對象。比如,利用scikit-image生成旋流效果的代碼:
- import numpy as np
- from skimage.transform import swirl
- from lucidsonicdreams import EffectsGenerator
- def 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)
生成的旋流效果示例:
最佳用法">
如果想要使用其他的GAN架構(gòu),只需定義一個函數(shù),將噪聲向量和類向量(NumPy數(shù)組)作為輸入,從而輸出圖像。
實際上,這個函數(shù)可以是將輸入向量轉(zhuǎn)換為圖像的任何函數(shù),甚至不需要使用GAN。
除此之外,Lucid Sonic Dreams支持上傳分離后的音軌來控制參數(shù),音樂制作者可以用它作為音樂可視化程序。
例如,使用分離后的打擊樂音軌來控制Pulse,同時用一個分離后的“合成和弦”音軌來控制Class:
- L = LucidSonicDream(song = 'lucidsonicdreams_main.mp3',
- pulse_audio = 'lucidsonicdreams_pulse.mp3',
- class_audio = 'lucidsonicdreams_class.mp3',
- style = 'wikiart')
既有簡便易用的默認模式,又支持各種自定義素材,難怪網(wǎng)友們對它大加贊賞。
OMG,我認為這是我見過的GAN的最佳用法。
最佳用法">
還有網(wǎng)友想體驗一下VR版本:
最佳用法">
也有部分“密恐”患者表示:對它又愛又恨!
最佳用法">
Lucid Sonic Dreams在GitHub上開源,感興趣的小伙伴,快去聽個音樂感受一下吧~
分享題目:讓GAN隨音樂律動的Python工具,網(wǎng)友:GAN的建議用法
文章路徑:http://www.dlmjj.cn/article/dpiedio.html


咨詢
建站咨詢
