非線形適応信号処理への凸解析的アプローチに関する連載記事のリンクまとめ

日本音響学会誌にて,慶應義塾大学の湯川 正裕先生による「非線形適応信号処理への凸解析的アプローチ 」という連載記事がある.

本記事ではそれら記事へのリンクをまとめておく. 2023年5月時点で最終回の記事は「フリー」ではないのですぐには読めないが,6月には「フリー」になるもよう.

関数解析の応用として興味深い.

第一回:凸解析的アプローチへのプロムナード

第二回:凸解析に基づく信号処理への招待

第三回:不動点近似型適応アルゴリズムと応用

第四回:再生核に基づく非線形数理モデル

第五回(最終):非線形適応フィルタと応用:再生核と不動点近似型アルゴリズムの出会い

Kernel k-meansのコードを整理した

Mathieu Blondel氏によるKernel k-meansのPythonコードがあった。

上記のコードはPython 2系で書かれていたので、Python 3系で動くように整理した。

簡単なデモンストレーションを行うnotebookは以下の通り。 当該のコードをkernel_kmeans.pyとして保存して動かしたときのもの。

gist.github.com

拡散モデルの勉強に役立つかもしれないリンク集

拡散モデルに関する備忘録として。

大量に関連リンクを集めてもそれだけで満足してしまいがちなので、この記事では少なめで。

書籍

解説論文

解説記事

解説動画

その他

実装

PyODにコミットしたKernel PCAのコードのバグを修正した

PyODにおけるKernel PCAのコードは最近私がコミットしたものである。

ところで最近、PyODに以下のIssueが上がっていた。

github.com

SUODでインスタンスを複製して使うときに、すべての引数がNoneとして与えられる現象が起きているようだ。 引数がNoneになる状況は想定していなかったが、クラスのattributeを増やしてうまく対応できた。

github.com

PyOD本家にプルリクを送った。

github.com

うまくマージされることを祈る。

AIミュージックバトル!『弁財天』スターターキットのPyTorch版Google Colabノートブックを作った話

はじめに

AIミュージックバトル!『弁財天』が配布しているスターターキットについて、PyTorch版を作成した記事を以前書いたことがあった。

tam5917.hatenablog.com

その記事の段階では、Google Colabのノートブックを用意していなかったので、今回作ってみたということである。

ノートブックの場所

以下のURLに置いてある。

各自のGoogle Driveにコピーして使うのがよいだろう。

colab.research.google.com

動かし方

  1. Google Driveのマイドライブ直下にbenzaitenフォルダを作成
  2. 以下のURLからyamlファイルをダウンロードして、上記benzaitenフォルダに置く https://gist.github.com/tam17aki/3ea977954d9ab7e152bf907c140a22b3
  3. 「ランタイム」→「ランタイムのタイプを変更」から、ハードウェアアクセラレータとして「GPU」を選択(最初はNoneが選択されている)
  4. 「ランタイム」→「すべてのセルを実行」

おわりに

AIミュージックバトル!『弁財天』 の成功を祈る。Let's ad-lib!

Pythonによる並列処理の書き方(joblib および concurrent.futures)

joblibとconcurrent.futuresを使った並列処理の実現方法についてそれぞれメモを残しておく。Pythonによる並列処理の関連記事はいくらでも見つかるのだが、個人的な備忘録ということで。

想定している状況:処理対象となるファイル数が多いので、直列で処理を動かすと時間がかかる。それを並列処理させることで、トータルでの実行時間の削減を目指す。例えば音声データ群(よくあるのは数百から数千ファイル)からの特徴量抽出を考えると、通常は音声ファイルごとに独立して抽出を行うので、並列処理に向いているというわけである。

サンプルコードの仕様:

  • 並列させたい処理: 関数 your_function にて定義
  • 処理対象となるファイル群: リスト変数 file_list で保持しておく

joblibを使う方法

joblibをpipでインストールしたのち、Parallelクラスおよびdelayedモジュールをインポートして使う。

from joblib import Parallel, delayed

def your_function(file_name):
    """並列処理実行
        
    Args:
         file_name (str): 並列処理の対象となるファイル
    """
    # 何らかの処理

Parallel(n_jobs=4)( # job数はお好みで
    delayed(your_function)(_file) for _file in file_list
)

delayedに関数を与えて、続いてその関数の引数を与える形である。

concurrent.futuresを使う方法

concurrent.futuresからProcessPoolExecutorクラスをインポートして使う。

from concurrent.futures import ProcessPoolExecutor

def your_function(file_name):
    """並列処理実行
        
    Args:
         file_name (str): 並列処理の対象となるファイル
    """
    # 何らかの処理

with ProcessPoolExecutor(max_workers=4) as executor: # max_workersがjob数に対応
    futures = [executor.submit(your_function, _file) for _file in file_list]
    for future in futures:
        future.result()

executor.submitの第1引数が並列処理対象の関数で、以降は関数の引数を与える形である。当然、関数の引数は複数個与えてもOK。

マルチスレッド用のThreadPoolExecutorもあるが、本記事では省略。

参考

github.com

tech.morikatron.ai

異常音検知関連の情報まとめ

異常音検知に関して、まとめてリストしておく。備忘録。

解説論文・スライド

スライド

論文

  • 深層学習を用いた異常検知技術(解説論文) Link
  • 環境音分析の研究動向(解説論文) Link
  • 環境音分析・異常音検知の研究動向(解説論文)Link
  • DCASE 2021のまとめ論文 Link
  • DCASE 2022のまとめ論文 Link

ソフトウェア

  • 異常検知/外れ値検知ライブラリ PyOD https://github.com/yzhao062/pyod
  • DCASE2020 Challenge Task 2 baseline system Link
  • DCASE2021 Challenge Task 2 baseline system (AutoEncoder) Link
  • DCASE2021 Challenge Task 2 baseline system (MobileNetV2) Link
  • DCASE2022 Challenge Task 2 baseline system (AutoEncoder) Link
  • DCASE2022 Challenge Task 2 baseline system (MobileNetV2) Link

データセット

書籍

コンペティション

  • DCASE2020 Challenge Task2 Link

  • DCASE2021 Challenge Task2 Link

  • DCASE2022 Challenge Task2 Link