2025/9/14の研究ログ
CRNN.pyを上から見ていく
BEATsの処理について,生の音声は処理し,特徴量はそのまま使うよう分岐を書いた
細かいコードは飛ばしたが,特段問題はなさそう
BEATsのモデルを扱うようになったので,元のコード(sed*.py)と整合性が取れなくなっている
一通り直し,ひとまず昨日のエラーまで辿り着いた
一旦この通りにやってみる
filter_missingが除去できているか
printでdataframeの要素数をもらう
shapeも見る
数値に変動がないので,できてないようだ
一番目で止まってしまった
修正しよう
filter方式が面倒なため,最初から除外したtsvを与える
weakの話
これだとunlabelは対処できていない
unlabelはtsvがなかった
これは問題ではないかも
今のエラーはこれ: RuntimeError: Failed to open the input "../../data/dcase/dataset/audio/train/strong_label_real_16k/YmCn_YXdsVbk_0.000_10.000.wav" (No such file or directory).
missing_filesに登録されていないが,存在しないファイルがある
これどうするんだ?
datasetの部分を書き換える
動いたが新しいエラー
BEATsのモデルはそれなりに大きいので,全て展開して計算を行おうとすると足りなくなる?
embeddingの方の扱いを参考に,最低限のメモリで計算できないか
事前に求めた埋め込みを使うのは,メモリ使用量が大きいからっぽい
論文の手法を再現するには交互に交換する必要がある
メモリ使用量をいたずらに増やさず,CrossAttentionで特徴を交互に交換しながら埋め込みを作成するにはどうすればいい?
いっそ書いてあった数式の通り計算をしてみるか?
GPT5に聞いてみよう
質問文を考える
音響イベント検出, SEDを行うために,事前学習済みモデル(BEATs)とCNNの特徴量を結合し,RNNに入力するモデルアーキテクチャを使用する.
この時,ある報告書では,12層のBEATsと7層のCNNについて,前者は2層ずつ,後者は一層ずつ中間特徴量を抽出して結合し,次の層に入力することで,音声の埋め込みに含まれる,局所的,及び大局的な情報を織り交ぜ,より豊かな情報を持たせることによって,精度向上を図っている.
特徴量の結合にはCrossAttentionを使うと記述があり,次のような式に従う:
InputC = softmax ((W_Q F_B ) (W_K F_C )) W_V F_C (1)
InputB = softmax ((W_Q F_C ) (W_K F_B )) W_V F_B(2)
ここで
F_B:BEATs モデルの中間層特徴
F_C:CRNN モデルの中間層特徴
W_Q, W_K, W_V:学習可能な射影行列
Input_B:次の層へ入力される BEATs モデル用特徴
Input_C:次の層へ入力される CRNN モデル用特徴
今,train_pretrained.py,sed_trainer_pretiraned.py,CRNN.pyによってCrossAttentionを用いた結合の実装を進めている.
CRNN.pyのforward()などの実装だと,何らかの問題によって必要なメモリ量が上限を超える.
CrossAttentionを使った実装自体正しいのか確認したいが,メモリ量の問題によって叶わない.
そこでまずはメモリ量が多すぎる問題を解決したい.
問題を細かく分割し,分かりやすく整理して.
簡潔な補足もお願い.