0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SepFormer の損失関数を SepReformer に似せて改修することにより、精度向上を試みた報告

Last updated at Posted at 2025-06-29

SepFormerの改修を試みた動機

音源分離の分野でも機械学習が成果を上げているという情報を入手し、勉強を始めました。Libri2Mix データを作成し、最初は、Conv-TasNet を動かしてみました。学習ができ結果を再生してみると2話者の入力について、1人ずつの wav file を作ろうとしていることが確認できました。そこで、Transformer を使った音源分離プログラムに進みました。SepFormer と SepReformer を動くようにしました。学習結果は、SepFormer の Si-SNR loss が -13.59 で、SepReformer の Si-SNRi が13.68 でした。音源分離したファイルを再生してみると、若干ですが、SepReformer の方が、SepFormer より音質が良いように感じられました。そこで、SepFormer を改修してみようと考えました。

改修点

改修点は、損失関数に絞りました。SepFormer では、Si-SNR の値に -1 を乗じたものが損失関数に使われていました。SepReformer では、PIT_SI_SNR_mag と 4 stage の PIT_SI_SNR_time の平均が使われていました。PIT_SI_SNR_mag クラスと PIT_SI_SNR_time クラスを使わせていただくことにしました。そこで、SepFormer の masknet の中にある、masknet_numlayers を変更して self.dual_mdl を2層から 4層にして、層ごとに後処理をして、masknet の出力を4層としました。これらの出力から4層の est_source_layers を計算します。4層の est_source_layers の PIT_SI_SNR_time を計算して平均しました。また、est_source_layers[-1] から PIT_SI_SNR_mag を計算しました。両者の和を損失としました。

結果

Si-SNR と SDR
model Si-SNRi SDR
元の SepFormer -13.59
SepReformer 13.68 14.16
改修した SepFormer 14.74 15.58

Libri2Mix 8k min sep-clean train-100のデータで batch_size = 1、epoch = 10 です。

改修の精度を測定したプログラムを github に置いておきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?