元理系院生の新入社員がPythonとJavaで色々頑張るブログ

プログラミングや機械学習について調べた事を書いていきます

信号処理

【Java】Javaで離散cos変換

音声信号処理や画像圧縮技術に使用されている離散cos変換(DCT)をJavaで実装します。 DCTについてはこちらのウェブページを参考にさせて頂きました。離散コサイン変換DCTはDFTと似ていますが、虚数計算が発生しないためコーディングは比較的容易でした。

【Java】隠れマルコフモデルによる手書き数字認識

はじめに 手書き数字認識をタスクとして隠れマルコフモデル(HMM)の動作確認を行います。手書き数字認識は文字認識の中では単純な識別問題なのですが、タスクの困難性が想像しやすくサンプルデータが用意しやすい利点があります。 隠れマルコフモデル 隠れマ…

【Java】手書き文字を収集するアプリケーションの作成

隠れマルコフモデルによる手書き数字認識を実装する前に、手書き数字データを収集するアプリケーションを作成します。 いきなり余談ですが、手書き文字は採取時のデータの性質によってオンライン手書き文字とオフライン手書き文字に分けることが出来ます。 …

【Java】複数の信号を学習する離散隠れマルコフモデル

前回実装したスケーリング処理を用いた離散隠れマルコフモデルは、EMアルゴリズムによって最適化パラメータを算出した際に、即時にHMMのパラメータを更新する為、複数の学習データを用いて学習することが出来ませんでした。emoson.hateblo.jpそこで今回は、…

【Java】スケーリング処理を用いた離散隠れマルコフモデルの実装

前回実装した離散隠れマルコフモデルは、フォワード、バックワードアルゴリズムの確率計算を行う際に、長い時系列を適用するとアンダーフローが発生する問題がありました。emoson.hateblo.jpスケーリング処理はトレリス計算中に逐次スケーリング処理を施し、…

JavaでErgodic離散隠れマルコフモデル

この記事に書かれている事 javaによるErgodicマルコフの実装

Pythonで離散フーリエ変換(DFT)

この記事に書かれている事 Pythonによる離散フーリエ変換(DFT)と逆変換の実装

PythonでLeft to Right型隠れマルコフモデルとBaumwelchアルゴリズム

この記事に書かれていること Pythonによる隠れマルコフモデル(Hidden Markov Model)とBaumwelchの実装

PythonでDynamic Time Warping

DynamicTimeWarpingって何? 動的時間伸縮法と呼ばれる、時間や速度の異なる信号同士の類似度を求めるアルゴリズムです。 信号同士の類似度を求める際に、単純にユークリッド距離を求めようとすると、信号の長さが 異なると非常に厄介な事になります。それに…

ウェーブレット変換(1)

ウェーブレット変換とは ウェーブレット変換は信号をウェーブレット(小さな波)の組み合わせに変換する信号解析の手法の1つです。信号解析手法には前回扱ったフーリエ変換がありますが、ウェーブレット変換はフーリエ変換ではサポート出来ない時間情報をう…

フーリエ変換(1)

フーリエ変換とは フーリエ変換とは「周期的ならどんなに複雑な波形でも三角波の足し合わせで表現できる」 という考えに基いて、信号をスペクトル成分に分解する変換方法です。周波数スペクトルで表現できるのでノイズ検出や圧縮、信号解析等に利用出来ます。