Kaggle最近、Kaggle始めました。Challengeという効果音に対して3つのタグをつけるコンペです。2秒ほどの音に対してギター、犬の鳴き声、チャイム、シンバルなどの41個のタグから3つを付与します。1つの音声に対する正解のタグは1つなのですが、3つのうち正解のタグが上位にあるほどスコアが高くなります。Learningで音を分類したり、生成したりする技術に興味があったので取り組んでみました。Dataというとてもよいチュートリアルをまとめています。さんが翻訳されてました。(64次元)またはMFCC(64次元)です。手前味噌ですが、MFCCは以前、自分で実装したことあります。最近は、librosaという音を扱うのにとても便利なPythonパッケージができたため、自分で実装しなくても簡単に計算できます。以下の記事はlibrosaでメルスペクトログラムやMFCCを抽出する方法をlibrosaの実装にまで踏み込んで開設されていて参考になります。アーキテクチャ音の分類で使われるモデルアーキテクチャは、画像分類で使われるのと同じ畳み込みニューラルネットワーク(CNN)が一般的です。画像と違ってあまり深いネットワークは使われません。音は時系列データでもあるためLSTMなどのRNN系のモデルもよく使われています。画像は2次元の広がりを持つデータなのでの2次元のカーネルを使いますが、音声は2次元と1次元の両方のカーネルが使えます。どちらがよいかは対象タスクによるのでとりあえず全部試した方がよいと思います。Network)ResNet(1次元カーネル)の4種類を検討しました。CRNNは畳み込みの結果のあとにLSTMを使うモデルです。上記の特徴量とアーキテクチャの組み合わせで複数のモデルをたくさん作り、最後にそれらの分類結果をアンサンブルします。その他の細かい工夫データ標準化メルスペクトログラムやMFCCの値を音声ファイルごとに平均0、標準偏差1になるように標準化しました。本来は、訓練データ全体で平均0、標準偏差1になるようにするのが好ましいかもしれませんが、音声ファイル単位で処理しています。メルスペクトログラムやMFCCの各次元ごとに標準化せずに全体で標準化しています。Rateを導入fast.aiでも推奨されてましたが、局所最適解に陥りにくくなるそうです。学習曲線がギザギザしているのはそのためです。音声波形のランダムクロップのみです。雑音付与、音の高さ変更、音の長さ変更などいろいろ考えられますが試しませんでした。(TTA)テスト時にデータ拡張してそれらの結果を平均化する手法です。今回はランダムクロップのみですが、導入することでLBスコアで2〜3ポイントほど改善しました。Rateを導入したせいです。spectrogram)となりました。ResNetはvalid/accが高いのですが、train/accが100%に達しており、過学習してる感じです。全体的にメルスペクトログラムよりMFCCの方が精度が高いという結果になっています。38位/558チームでした。Setに過学習してたのかなと思います。一応、ブロンズメダルの範囲には入ってるみたいですが、このコンペはメダル出ないタイプでした。何か面白そうなのは挑戦してみたいと思います!その他のアイデア他にも下のようなこと考えてましたが未達でした。RNNのようなより高度なアーキテクチャを使用するさまざまなデータ拡張を導入するあまり整理できてませんが、コードはこのリポジトリにあります。(horse2zebra)今回はCycleGANの実験をした。»プロフィールid:aidiary人工知能とその関連分野に興味があります。)はてなブログをはじめよう!aidiaryさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。