におい検知センサー(BME688)を評価できる環境をようやく立ち上げることができたので、におい検知でを試してみた。以前試したセンサーだと種類の識別はむずかしかったため、実際にいくつかのシナリオでにおい識別可否を検証してみる。
測定環境
使用した環境は以下のとおり。センサーボードは、2022年初めに発注したものの半導体部品の供給難の影響から手元に届くまで4ヶ月。その後ファームウェアの書き込みができずに5ヶ月(公開されているzipファイルが壊れており、コミュニティで多数の人が問い合わせしている状況だったが、数ヶ月改善されず。。)、そして、microSDカードのデータが読めずに正常動作ができずに1ヶ月、その間に熱意が冷めてしまい、最終的に解析できるまで大幅に遅れてしまった。解析環境の構成は以下のとおり。
- センサーボード:Bosch社製BME688 Evaulation Board
- CPUボード:Adafruit HUZZAH32-ESP32 Feather Board
- ホストPC:Mouseコンピューターの Windows10のNote PC
- AIソフト:Bosch社製AI-Studio Desktop
このセンサーはガスセンサー(抵抗値で検出)、温度、湿度、気圧を同時に測定でき、またセンサーボードには8つの同じセンサー(以下の写真の銀色の四角いもの)が搭載されている。この8つのセンサーは、温度を調整するプロファイルが16パターン用意されており、センサーの特性を変えることができる。実際には2個ずつなので、4種類のセンサーを使うことができる。(ただし、Bosch sensortec communityの投稿を調べてみると、現在のAI-Studioの分類アルゴリズムはプロファイルごとに個別に分類モデルを作成し、4つのプロファイル全てを入力しての分類モデルはできないらしく、自分でAIモデルを構築するしかなさそう)

データ収集
今回、ワインと日本酒、1カップの日本酒と純米酒、好みの日本酒とそうでない日本酒の3種類の識別ができるかをテストしてみた。採取したデータは以下のとおり。
- 赤ワイン(低価格)
- 1カップ大関
- 田酒(特別純米酒):好みの酒
- 福寿(純米吟醸):好みの酒
- 京都匠(大吟醸):好みでなかった酒
- 鳥海山(純米吟醸一穂積):好みでなかった酒
それぞれ約30分間データを採取する。以下は田酒の4つのセンサーのデータだが、それぞれプロファイルが異なるので、違った波形を示している。

テスト結果
まず最初にワインと日本酒の違い。日本酒は田酒と福寿の2種類をデータに使用している。AI-Studio Desktopではデータを指定して、ラベルをつけると識別モデルを作成してくれる。簡単なNNベースのもので学習させているようである。結果は以下のとおり。4つのプロファイルごとに結果が表示されている。いずれのプロファイルでも95%を超えており、高い精度が出ている。

次に純米酒(田酒と福寿)と1カップの識別をしている。1カップ独特の匂いか純米酒の香ばしい匂いかの違いであるが、こちらは以下のようにどのプロファイルでも100%という精度が得られた。

最後に自分の好み(田酒と福寿)か、それ以外(鳥海山一穂積と京都匠)を匂いで識別できないかを試してみた。鳥海山は冷おろしなどは大好きなのだが、この一穂積は自分には少し合わなかった。テストしてみた結果、識別精度はかなり低かった。そもそも好みか好みでないかは味で決めているので、味と匂いの関連性が不明なこと、このセンサーでそこまで細かい違いが識別できるか不明なことなど、今の実験では難しい課題だったかもしれない。

まとめ
環境が立ち上がってしまえば、簡単にデータを取れるし、簡単に識別モデルを試すこともできるし、ツールもシンプルで使いやすい。ただ、やりたいことに対してどういったプロファイル設定を使えばいいのかのヒントが全く、そのあたりはCommunityを見てもユーザー任せな感じなので、これを使いこなそうと思うと色々と試行錯誤を繰り返しながら行う必要があると感じた。日本酒などは一回栓を開けると日を追うごとに匂いが変わってくるだろうし、意外と実験コストもかかってしまう。あとはやはり4つのプロファイルの測定結果をまとめて入力しての総合的な識別モデルを用意してもらえるともっと使い勝手が上がるのだが。。。