周波数解析回路(短時間フーリエ変換)を搭載した匂い認識チップ

当研究室で研究を進めている匂い認識チップのさらなる性能の向上のため、パターン認識に用いる測定データを センサの周波数変化値ではなくセンサのスペクトラム情報を用いることにした。
大気中の匂い濃度は不規則に激しく変化するので、一定濃度の場合と比べて識別率が低下する。
スペクトラム情報はこのような場合に有用である。
これによって、センサによる測定から得られる情報量が増え、識別能力の向上が期待できる。

Fig.1 周波数解析を用いた匂い認識回路のブロック図

Fig.1に匂い認識回路のブロック図を示す。センサ信号の周波数をフーリエ変換してCPUに入力し、必要なデータを抽出した後にニューラルネットワークに入力して学習・識別を行う。
なお、これらの回路はFPGA(Field Programmable Gate Array)上で実現した。
使用FPGA:Altera社 CycloneIII EP3C120F780C8N

短時間フーリエ変換を用いた周波数解析

フーリエ変換は通常測定した全ての時間に対し行う。
それに対し、短時間フーリエ変換(STFT)は測定データをある時間の幅で区切り、その時間の間でフーリエ変換を行う。
これを「窓」と呼び、この窓を1つずつ右にシフトすることによりその時間におけるスペクトルを求めることができる。
これにより実時間での匂いの判別が可能となる。

Fig.2 短時間フーリエ変換の概念図

時刻mにおけるスペクトルを求める短時間フーリエ変換の式は次のように与えられる。 \[ S(m, \omega) = \sum_{n = - \infty}^{\infty} s[n] w[n-m] e^{- j \omega n} \] \[ w(n) = 0.5\left(1 - cos\left(\frac{2 \pi n}{N - 1}\right)\right), 0 \leq n \leq N - 1 \] \(w(n)\)は窓関数と呼ばれるものであり、\(N\)の値によって窓の幅が決定される。ここでは\(N=32\)として行うものとする。
  この計算をハードウエアで行わせる際には実部と虚部に分けて計算する。すなわち、 \[ Re[S(m, \omega)] = \sum_{n = - \infty}^{\infty} s[n] w[n-m]cos(\omega n) \] \[ Im[S(m, \omega)] = \sum_{n = - \infty}^{\infty} s[n] w[n-m]sin(\omega n) \] 短時間フーリエ変換によって得られるスペクトラムから、より判別に重要となる特徴的な成分を抽出する。
この特徴抽出の際に選択する成分は判別したい匂いごとに異なる。
アップルとマスカットの判別を行う場合は0.5Hz成分を用いるのが適している。

開発した回路のブロック図をFig.3に示す。

Fig.3 短時間フーリエ変換を用いた周波数解析回路のブロック図

リアルタイムにセンサ応答を短時間フーリエ変換した結果

QCMセンサの周波数変化を周波数計測回路で計測し、その結果をリアルタイムに短時間フーリエ変換した結果をFig.4に示す。

Fig.4 QCMセンサの周波数変化とその短時間フーリエ変換スペクトル

Fig.4はAppleとMuscatのデータであるが、センサ応答だけでは、応答パターンも似ているので、識別が困難であることがわかる。

しかし、短時間フーリエ変換後のスペクトルを見ると、スペクトル自体は多少乱れているものの、各センサ周波数成分の違いがパターンの違いとして表れている。
Appleの0.5Hz成分のスペクトルパターンはOV-17>TCP>PEG1k>Ap-Lであり、MuscatはPEG1k>TCP>OV17>Ap-Lとなっているからである。

センサ応答で主成分分析した結果と、短時間フーリエ変換のスペクトルで主成分分析した結果をFig.5に示す。

Fig.5 センサ応答と短時間フーリエ変換のスペクトルで主成分分析を行った結果

これを見ると、二種のフレーバーの区別が改善されていることがわかる。

匂い有無判別アルゴリズム

QCMセンサは匂いの提示を止めても応答はすぐに0とはならず、緩やかに応答が減少する。
しかし、そのような応答の立下り時の応答は定常時と異なることが多く、識別率の低下を招いてしまう。

そこで、センサ応答の立ち上がりと立下りを検知し、匂いの有無を自動判別するアルゴリズムを実装した。
そのアルゴリズムを用いてApple、Muscat、Banana、Pineappleを計測した時の判別結果をFig.6に示す。

Fig.6 匂い有無の判別結果

結果を見ると、匂い提示中でもセンサ応答が大きく落ち込んでいるところでは、匂い無しとなってしまっている部分もあるが概ね匂い提示期間では「匂い有り」、匂い提示終了後は「匂い無し」状態となっている。

このアルゴリズムは、「匂い無し」→「匂い有り」の場合は一定の閾値超えたら状態変化が起こるようになっており、 「匂い有り」になった後は、過去4秒分の4chセンサ応答の中央値を用いてリアルタイムに閾値を更新してゆき、自動的に相対的な閾値を設定できるので、 センサ応答が大きいフレーバーでも小さいフレーバーでも対応できる。

上述の短時間フーリエ変換のスペクトルのうちで匂い有無アルゴリズムによって「匂い有り」と判別されたデータのみを用いて主成分分析を行った 結果をFig.7に示す。

Fig.7 匂い無し時のデータを切り捨てた短時間フーリエ変換のスペクトルの主成分分析結果

「匂い無し」時のデータを切り捨てたことで、黒丸を付けた部分のようなオーバーラップしているデータが消えたので、分離の精度がより向上したことがわかる。