樂譜識(shí)別

https://www.lunaverus.com/cnn

音樂中的音符檢測(cè)可被視為圖像識(shí)別問題。 在這里薄声,我將回顧一些像狗和汽車之類的圖像和音樂圖像之間的差異。 我還將描述用于從計(jì)算機(jī)視覺修改神經(jīng)網(wǎng)絡(luò)的技術(shù)题画,以生成實(shí)際上頗具可玩性的(和弦)音樂的樂譜轉(zhuǎn)錄默辨。

卷積神經(jīng)網(wǎng)絡(luò)(CNN)已經(jīng)在計(jì)算機(jī)視覺領(lǐng)域取得了最準(zhǔn)確的結(jié)果。 在一個(gè)典型的CNN中苍息,您首先將圖像作為三維數(shù)組(寬度缩幸,高度和3個(gè)顏色通道)壹置,然后將這些數(shù)據(jù)通過幾層卷積,最大池和某種非線性傳遞表谊,如ReLU钞护。 最后一層為每個(gè)圖像類(花,貓等)輸出一個(gè)分?jǐn)?shù)爆办,表示輸入屬于該分類的可能性难咕。 反向傳播用于從一組標(biāo)記的訓(xùn)練數(shù)據(jù)(輸入和期望輸出對(duì))迭代更新卷積參數(shù)。 這個(gè)過程建立了一個(gè)復(fù)雜的功能距辆,由許多簡(jiǎn)單的功能組成余佃,主要是卷積。

來自音樂的圖像

那么跨算,音樂中的音符檢測(cè)如何與圖像識(shí)別相似呢爆土? 我們可以創(chuàng)建稱為譜圖的音頻圖像。 它們顯示頻譜或頻率內(nèi)容隨時(shí)間如何變化诸蚕。 如果您將立體聲音頻中的左右聲道視為類似于照片中的顏色通道步势,則譜圖圖像與您要輸入圖像識(shí)別神經(jīng)網(wǎng)絡(luò)的三維圖像陣列相似。

頻譜圖背犯,垂直軸表示頻率立润,水平軸表示時(shí)間,顏色顯示幅度(藍(lán)色低媳板,紅色高)

但在概念上桑腮,在譜圖圖像中找到筆記以找到照片中的物體有多類似? 音樂比較簡(jiǎn)單蛉幸,因?yàn)闆]有真正需要學(xué)習(xí)的重要紋理破讨,頻譜圖通常僅由兩種基本形狀組成:諧波,窄頻帶奕纫,跨越短頻率范圍和長(zhǎng)時(shí)間范圍提陶,以及鼓或其他寬帶特征, 它跨越了很短的時(shí)間范圍和很長(zhǎng)的頻率范圍匹层。 也不需要擔(dān)心或縮放不同距離的旋轉(zhuǎn)隙笆。 而且,我們只關(guān)心一個(gè)對(duì)象類:注釋升筏。

B? 諧波(對(duì)數(shù)頻率標(biāo)度)

但是音符的幾個(gè)方面比物理對(duì)象的圖像更具挑戰(zhàn)性撑柔。 在某些基波頻率(如B?3(233 Hz))中的音符由該基頻的倍數(shù)處的諧波組成,隨著上升幅度逐漸減小您访。 因此铅忿,與大多數(shù)物體不同,音符不會(huì)局限于輸入的單個(gè)區(qū)域灵汪。

與物理圖像不同檀训,來自不同音符的諧波可能會(huì)相互干擾柑潦。 在照片中,一個(gè)物體可以被另一個(gè)物體部分隱藏峻凫,但前面的物體不會(huì)發(fā)生任何變形渗鬼。 不過,筆記確實(shí)會(huì)變形荧琼。 附近的諧波會(huì)導(dǎo)致振幅“跳動(dòng)”譬胎,您可以在上圖中的第4次和第5次諧波中看到這種振幅。 音符識(shí)別算法需要以某種方式考慮音樂的這些方面铭腕。

音符檢測(cè)有點(diǎn)像找到透明斑馬

使用CNN

由于我們希望能夠一次檢測(cè)多個(gè)音符银择,因此可以省略通常用于分類的softmax層。 每個(gè)鋼琴鍵只有88個(gè)輸出節(jié)點(diǎn),而不是圖像類届氢。 由于一次處理整個(gè)譜圖圖像是不可行的可岂,我們需要首先檢測(cè)可能的音符開始時(shí)間,然后以這些時(shí)間為中心的頻譜圖的矩形切片(全頻率范圍和前后的固定時(shí)間量 提供一些上下文)昙啄。

音符開始檢測(cè)提供了CNN評(píng)估的位置。 這些位置周圍的區(qū)域(以紅色矩形為界)是CNN的輸入。

注意起始點(diǎn)的特征是許多頻率在某個(gè)小的時(shí)間間隔內(nèi)幅度增加的點(diǎn)只怎。 可以訓(xùn)練單獨(dú)的神經(jīng)網(wǎng)絡(luò)來識(shí)別這些位置,但我只是在平均幅度變化中尋找局部最大值怜俐。 如果這些點(diǎn)中的某些點(diǎn)沒有任何注釋身堡,這是可以的,因?yàn)镃NN將確定具體的注釋是什么拍鲤,但是錯(cuò)過有注釋的區(qū)域是不好的贴谎。 我訓(xùn)練CNN找到哪些音符在每個(gè)區(qū)域開始并忽略偏移量。 為了創(chuàng)建可播放的樂譜季稳,我假設(shè)每個(gè)音符在下一個(gè)音符開始時(shí)結(jié)束。

創(chuàng)建頻譜圖

短時(shí)傅里葉變換(STFT)是創(chuàng)建頻譜圖的常用方法景鼠,但它有一些缺點(diǎn)。 離散傅里葉變換的頻率是線性間隔的溯香,但音符頻率與每個(gè)八度(每12個(gè)音符)一起加倍。 我使用了一些更接近恒定Q變換的東西浓恶,這是一個(gè)恒定的頻率帶寬比逐哈,每個(gè)音符有4個(gè)頻率分檔问顷。 這對(duì)于卷積很好禀梳,因?yàn)榈谝缓偷诙C波或第二和第三諧波之間的距離現(xiàn)在對(duì)于所有音符是相同的,與基頻無關(guān)肠骆。 這意味著不需要完全連接的層算途,并且CNN可以完全由卷積層和最大池化層構(gòu)成。

常數(shù)Q轉(zhuǎn)換(ConstantQtransform)與短時(shí)距傅立葉轉(zhuǎn)換一樣為重要時(shí)頻分析工具蚀腿,其中特別適用于音樂信號(hào)的分析莉钙,這個(gè)轉(zhuǎn)換產(chǎn)生的頻譜最大的特色是在頻率軸為對(duì)數(shù)標(biāo)度(logscale)而不是線性標(biāo)度(linearscale),且窗口長(zhǎng)度(windowlength)會(huì)隨著頻率而改變磁玉。

STFT蚊伞,線性頻率尺度
相同的音頻,常數(shù)Q變換时迫,低Q因素干擾
動(dòng)態(tài)Q掠拳,這是我們想要的

為了減少來自附近諧波的干擾效應(yīng),我在生成頻譜圖時(shí)檢測(cè)到附近諧波區(qū)域的Q因子增加喊熟。 這與增加FFT中的窗口大小類似胧奔,只是它僅適用于較窄的頻率和時(shí)間范圍。 較高的Q可以減少來自附近諧波的幅度失真龙填,但是改進(jìn)的頻率分辨率是以較差的時(shí)間分辨率為代價(jià)的,所以我們希望默認(rèn)使用較低的Q因子來保存關(guān)于幅度如何隨時(shí)間變化的信息扇商。 我還進(jìn)行了一些非線性縮放以獲得更接近振幅對(duì)數(shù)的東西宿礁。

優(yōu)化CNN

由于音符沒有局限于單個(gè)區(qū)域,CNN需要查看整個(gè)頻譜以確定是否存在任何特定的音符控汉,因此我使得許多卷積過長(zhǎng)且很瘦。 通過最后一層乎婿,每個(gè)輸出神經(jīng)元都受到每個(gè)輸入箱的影響街佑。 大多數(shù)網(wǎng)絡(luò)由成對(duì)的層組成:一個(gè)Mx1,后面跟著一個(gè)1xN沐旨。 這些長(zhǎng)卷積有助于有效連接遙遠(yuǎn)的頻譜區(qū)域磁携。

跳過連接(橙色)將CNN分解為一系列添加項(xiàng)或殘差

我還使用了微軟ResNet中描述的向前跳轉(zhuǎn)連接,它在2015年贏得了ILSVRC挑戰(zhàn)璃搜。它們幫助網(wǎng)絡(luò)訓(xùn)練更快鳞上,并允許輸出由輸入上的一系列增加(殘差)組成吊档。 這在音樂中很有意義,在消除非基本諧波之后鬼贱,輸出基本上等同于輸入香璃。

后期處理

為了提高準(zhǔn)確度,對(duì)CNN的輸出進(jìn)行了附加處理葡秒,濾除了一些較低置信度的音符(音符大于0.5的概率但小于某個(gè)閾值)眯牧。 這涉及單獨(dú)的音符檢測(cè)算法,該算法使用更傳統(tǒng)的方法來搜索譜圖中的峰值学少,形成連續(xù)峰值的軌道,并從最可能到最不可能的順序排列候選筆記版确。 這個(gè)輔助算法背后的主要思想是乎折,任何時(shí)刻最強(qiáng)的音軌很可能是一個(gè)低諧波:第一侵歇,第二或第三。
更新:我刪除了版本3.0.0中的后期處理酗洒,因此只使用了CNN枷遂。

訓(xùn)練與結(jié)果

為了訓(xùn)練這個(gè)網(wǎng)絡(luò),我創(chuàng)建了一個(gè)包含3000個(gè)MIDI文件的250萬(wàn)個(gè)訓(xùn)練樣例的數(shù)據(jù)集矩桂,這些樣本涵蓋了幾種不同類型的音樂痪伦。 MIDI文件包含歌曲中有關(guān)音符和樂器的信息,這使得創(chuàng)建帶標(biāo)簽的真實(shí)數(shù)據(jù)變得很容易癞蚕。 MIDI-to-WAV實(shí)用程序創(chuàng)建用于聲譜圖生成的實(shí)際音頻數(shù)據(jù)辉哥。 每個(gè)訓(xùn)練示例的數(shù)據(jù)集平均有3個(gè)音符。

損失率恒水,音符準(zhǔn)確率和幀級(jí)精度

在TensorFlow的980 Ti GPU上訓(xùn)練了幾天之后饲齐,CNN在評(píng)估級(jí)別(未用于訓(xùn)練的數(shù)據(jù))上的準(zhǔn)確率為99.200%捂人。 該數(shù)值來自將88個(gè)輸出中的每一個(gè)舍入為0或1,并測(cè)量與真值相匹配的所有輸出的分?jǐn)?shù)先慷。 但是,由于每個(gè)訓(xùn)練示例的數(shù)據(jù)集平均有3個(gè)音符和85個(gè)非音符福青,如果CNN從未檢測(cè)到任何音符,則使用此測(cè)量的準(zhǔn)確率為96.6%媒役。 我還測(cè)量了評(píng)估分組中樣本的百分比宪迟,其中88個(gè)舍入輸出中的每一個(gè)都是正確的。 這個(gè)數(shù)字達(dá)到了60.326%穿仪。 整個(gè)端到端算法的準(zhǔn)確性還取決于CNN輸出開始時(shí)間檢測(cè)和過濾的精確度意荤。 對(duì)于鋼琴,只有評(píng)估音符開始和音高紫谷,它達(dá)到0.8左右的F分?jǐn)?shù)捐寥。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瞒窒,隨后出現(xiàn)的幾起案子睡互,更是在濱河造成了極大的恐慌陵像,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妻怎,死亡現(xiàn)場(chǎng)離奇詭異泞歉,居然都是意外死亡腰耙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門晰赞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掖鱼,你說我怎么就攤上這事戏挡。” “怎么了褐墅?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵妥凳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我澄耍,道長(zhǎng)晌缘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任选酗,我火速辦了婚禮岳枷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘殿衰。我一直安慰自己盛泡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布凯砍。 她就那樣靜靜地躺著拴竹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪座泳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天舰罚,我揣著相機(jī)與錄音薛耻,去河邊找鬼。 笑死饲漾,一個(gè)胖子當(dāng)著我的面吹牛缕溉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播僚楞,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼枉层,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了膜赃?” 一聲冷哼從身側(cè)響起揉忘,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤泣矛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后咪橙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虚倒,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡魂奥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年耻煤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哈蝇。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炮赦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出性芬,到底是詐尸還是另有隱情剧防,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布俊庇,位于F島的核電站鸡挠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宵凌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓜喇。 院中可真熱鬧,春花似錦望众、人聲如沸伞辛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)竿滨。三九已至捏境,卻和暖如春毁葱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背筷频。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工柱告, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人葵袭。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓乖菱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鹉勒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吵取,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容