の自由帳

実験記録 e19098ab

StarGAN (Conditional GAN) の実装にあたって、Discriminator にクラス分類できるだけの表現力があることを予め示したい。

以前の実験での話者分類精度の低さはある程度改善されたが、もう少し精度を上げたい。

今回は、StarGAN 論文での Discriminator 実装に準拠した classifier を実験する。

モデル

graph TD

input("&laquo;Input&raquo;<br/>Spectrogram<br/>1 x 256 x 256<br/>[0, 1]")
conv1[Convolution<br/>n: 64, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
conv2[Convolution<br/>n: 128, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
conv3[Convolution<br/>n: 256, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
conv4[Convolution<br/>n: 512, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
conv5[Convolution<br/>n: 1024, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]
conv6[Convolution<br/>n: 2048, ksize: 4, stride: 2, padding: 1<br/>BatchNormalization<br/>ReakyReLU]

subgraph Output
    h("2048 x 4 x 4")
    clz_speaker[Convolution<br/>n: 1421, ksize: 4, stride: 1, padding: 0<br/>softmax]
    clz_birth[Convolution<br/>n: 53, ksize: 4, stride: 1, padding: 0<br/>softmax]
    clz_sex[Convolution<br/>n: 2, ksize: 4, stride: 1, padding: 0<br/>softmax]

    y_speaker("&laquo;Output&raquo;<br/>Speaker<br/>1421")
    y_birth("&laquo;Output&raquo;<br/>BirthPlace<br/>53")
    y_sex("&laquo;Output&raquo;<br/>Sex<br/>2")
end

input --> conv1
conv1 --> |64 x 128 x 128| conv2
conv2 --> |128 x 64 x 64| conv3
conv3 --> |256 x 32 x 32| conv4
conv4 --> |512 x 16 x 16| conv5
conv5 --> |1024 x 8 x 8| conv6
conv6 --> h

h --> clz_speaker
clz_speaker --> y_speaker
h --> clz_birth
clz_birth --> y_birth
h --> clz_sex
clz_sex --> y_sex

学習パラメータ

optimizer: RMSprop

learning rate: 1e-5

minibatch size: 10

epoch: 1000

結果

学習時間: 16.10 時間

感想

話者を十分識別できるだけの表現空間があるといいっていいと考える。

出身地の識別が(話者と関連性があるにも関わらず)あまりうまくいっていない点が不可解。