lucky rubbit

東方アレンジャーが東方アレンジを語る(かもしれない)。

Music2Vector

深層学習で音楽ジャンルの推定

音楽ジャンルの推定と言う目的は二の次で、分類機の中間層の特徴ベクトルで類似した音楽を提示させるのが目的。

メル周波数スペクトログラム

分類するにあたり、音声を以下のようにメル周波数スペクトログラムとして画像の形で表現し、それを入力とした。 f:id:lucky_rubbit:20191215005807p:plain

メル周波数スペクトログラムは人間の知覚を考慮した周波数表現なので、音楽だし効果あるかも(適当)と思い採用。

モデル

f:id:lucky_rubbit:20191215004858p:plain
モデル
普通のCNN。

各Convレイヤーの出力をプーリングしてそれらを結合、音楽の特徴ベクトルとした。 また勾配消滅対策として、最終Convレイヤーの出力と結合させ学習。

入力にDropoutを挟むことで画像のピクセルが無作為に抜け落ちて、画像の水増しの効果を得られると考えた。

学習

音声データセットは以下を用いた。

signate.jp

音声の1秒をメル周波数スペクトログラム変換、224x224にリサイズした。

レーニングデータの0~450を訓練用、451~500をテスト用とした。

50エポック数回学習させ、テストデータのF1値は0.64となった。

手持ちの曲で試す

ジャンル推定

等間隔に1秒を60個サンプリングし、Label出力の平均を結果とした。

  • Jazz


佐井好子 / 胎児の夢

  • Pop


『ToHo Rock』minimum electric design - "Run Girl Run"


London Elektricity - Just One Second (feat. Elsa Esmeralda) [Apex Remix]


TOWN-0 PHASE-5

RockがPopになったり、データセットに無い速いテクノ系がPopになったりと若干怪しいけどそれっぽいからいいや。

思えばDrum & BassかJazzかRockしか持ってないな...。

曲の類似度

音楽の特徴ベクトルをコサイン類似度により比較した。1に近いほど似ているはず。

等間隔に1秒を60個サンプリングし、Feature出力の平均を結果とした(多分よろしくない)。

「胎児の夢」を基準に

  • Run Girl Run: 0.97
  • Just One Second: 0.94
  • TOWN-0 PHASE-5: 0.84

と、「Run Girl Run」が一番似ていることとなった。 両方とも電子音楽では無いので、それっぽいか...?

VAEGANを実装してみた

アバターが欲しい

アバターアイコンが欲しい。でも他所様からパクってくるのもどうかと思う。

そうだ、深層学習で機械に描かせよう。

 

VAE + GAN

生成モデルでパッと思いつくのは"VAE"と"GAN"の二つ。

GANのGeneratorをVAEに置き換えたものをVAEGANと呼ぶらしい。

VAEによるGeneratorで、特徴を連続的に変化するような画像を生成できる。

 

モデル

f:id:lucky_rubbit:20191204225108p:plain

VAEGAN model

EncoderとDiscriminatorにはそれぞれResNet50を転移学習させた。

DecoderではSRResNetを模したネットを組んでいる。

 

実装

colab.research.google.com

教師データはDanbooruからランダムに落とした、うどんげのイラスト200枚ほどの顔をクロップ、224x224へリサイズした。

学習の手順は

  1. VAEをEpoch数100で学習
  2. 潜在変数zをN(0, 1)のガウシアンノイズとし、生成された画像をFake(label: 0)としてDを学習
  3. 教師画像をReal(label: 1)としてDを学習

上記を100 Iteration繰り返す。

損失関数は以下の感じに。

 L_G(x, \hat{x}) = MSE(x, \hat{x}) + \alpha KL \\ L_D(x, \hat{x}) = binarycrossentropy(x, \hat{x})

ここでaは適当に0.000001とした。

最適化関数はAdamを使用。

 

結果

とりあえずアバター候補を

f:id:lucky_rubbit:20191204232258p:plain

アブストラクトな感じが良い。

他には

f:id:lucky_rubbit:20191204232529p:plain

f:id:lucky_rubbit:20191204232545p:plain

f:id:lucky_rubbit:20191204232600p:plain

f:id:lucky_rubbit:20191204232612p:plain

f:id:lucky_rubbit:20191204232625p:plain

考察

VAEのみで生成した画像と比較する。

f:id:lucky_rubbit:20191204232950p:plain

これと比べると、なんとなく線がはっきりしているように思える。

VAEGANは、顔のパーツを複数のイラストから寄せ集めてキメラのような生成をしているように思えた。わかりやすいのが以下の画像。

f:id:lucky_rubbit:20191204233406p:plain

それぞれの目と口の画風が異なるが、それっぽい位置に置かれている。

GANの特性で、目と口の適切な位置を学習したという事だろうか。

Xe - in the dark

 

Drill'n'Bass

高速で細かいブレイクビーツが特徴の"Drill'n'Bass"。

そのルーツは90年代のイギリス、コーンウォール地方を拠点に活動していた"Aphex Twin"、"Squarepusher"ら、所謂「コーンウォール一派」のスタイルとされている。

 本当は彼らのスタイルを"Drill'n'Bass"と呼ぶのであってジャンル名ではない、という話は置いておいて。

 

The Flashbulb 

 コメントで言及されているこのアーティストの曲を紹介しよう。

 


The Flashbulb - Passage D

 

 

ピアノの演奏に高速なブレイクビーツを載せ、狂気を垣間見せる曲となっている。

この頃の彼の作風は、ミュージカルなウワモノに飽きさせないブレイクビーツを載せた曲が多かった。

 

そして、ピアノのアルペジオは紹介するアレンジに似ている。

おそらく影響を受けているであろう。

そして何よりも、The Flashbulbを知っているニコ動民の知見の深さには驚かされる。

 

Drill'n'Bassの難しさ

アレンジの経験があるので言えるが、Drill'n'Bassは工数の割に合わないスタイルであり、とにかく飽きのこないパターンを作るのが難しい。

手作業でサンプルを刻んで、それらを再構築する。

1小節にかける時間は計り知れない。

そのため、慢心からコピペを多用する。

すると、たちまちつまらないパターンとなってしまう。

 

氏のアレンジは本当に飽きのこない仕上がりになっている。

知ってから既に六年経つが、それでもいまだに聴ける。

そんなアレンジ。

 

余談

このアレンジを聴くと思い出すのがこれ。


Nikakoi Climb

ハットの刻みがなんとなく似ている。

しかし恐らく、私が幼少期に初めて聴いたDrill'n'Bassで、思い出補正がかかっているからであろう。

変な英才教育を受けて育ってしまった...。