W&T's diary

W&T Thermal Cam に関連する情報

Thermal Cam3Xバージョンアップ内容と使用方法

変更点

1.LEPTONがWi-Fi接続されていない場合は、iPhoneのフロント、リアカメラが使えます。また、操作ボタンを一部変更しました。

f:id:TAKEsan:20200618131825p:plain

LEPTONが接続されていない場合は、カメラ画像が表示されます。画面上をシングルタップすることでリアとフロントカメラが切り替わります。一般画像での画像認識が可能になります。

①:カメラ画像表示中、LEPTONが接続された場合は、青文字(Connect)が表示されます

②:ロゴはボタンになっていて、AIサンプルデータのダウンロードURLに切り替わります

③:新しく黒ボタンが追加されました。EPS8266を接続した場合はカラーレンジ切り替えボタンになります。PI3を接続した場合は後述メモリーポイント画面切り替えボタンになります

④:iPhoneカメラ画像、サーモグラフィー画像、3D画像に切り替わります

3.リアビューの精度が向上しました

設定画面で表示非表示を切り替えるリアビューの精度が向上しました。下図の場合27℃の温度帯が緑で表示されています。

f:id:TAKEsan:20200618132831p:plain

Raspberry PI 3を使用した場合の追加事項

開発者としては非常に不利な画像ですがあえて公開します。iPhoneとPIは最も妨害電波の影響を受けやすいテザリング接続です。横向きの顔で非常に厳しい条件でも確実に顔(マスク有無を含めて)を認識していることが分かると思います。また、この画像は軽い運動をした後で皆さん体温が高めのようです。カメラからの距離によってもかなり温度差があることが分かると思います。定距離・顔が正面を向くようにカメラを配置すれば完璧に機能します。

 

温度測定誤差を向上させるためにRaspberry PI3、及びLEPTON3.5、Bionic12以上のCPUを持つiPhone又はiPad限定の機能です。本来のLEPTON3.5は温度測定精度が±5度又は5%となっていて、実際、同一点を測定するとかなりの変化が見られます。つまり体温測定には不向きです。

f:id:TAKEsan:20200618152806p:plain
LEPTON3.5で、37.5℃の黒体炉を約40分にわたって測定しています。横軸が0.5℃ピッチなので、同一ポイントで3℃以上の開きがあることが分かります。

 そこで画面上で温度変化の少ないポイントを記憶させ、時間の経過とともに変動する数値を画像単位で補正するという発想が生まれました。結果的に±0.25℃程度の精度を保たせることができます。

f:id:TAKEsan:20200618153012p:plain

このグラフは今回のPI3を使ったLEPTON3.5の測定結果です。対象測定物が国産の電気釜の保温中の表面温度です。横軸が0.2℃ピッチです。LEPTON3.5でも素晴らしい精度になることがおわかりいただけると思います。電気釜なので大きな波で温度が上下していることも分かります。この電気釜も素晴らしい保温性能ですね!

 この温度測定機能に、マスク着用を含めた赤外線画像の顔認識機能を取り入れたものが、今回のシステムです。

 原理上基準点は温度変化のない場所が理想ですが、石膏ボードを使用した壁や天井、水槽、発泡スチロール版などを利用しても、かなりの精度が維持できることが分かっています。高度な顔認識AIを組み入れたシステムとしては非常に低価格に押さえられることになります。

1.Raspberry PI側アプリのインストール方法

次のリンクを確認して下さい。プログラムソースもダウンロード可能です。

2.使用方法

(1) ESP8266とRaspberry PIの切り替え

 ESP8366とRaspberry PIは自動判別します。

(2) マスクを含めた顔の学習済みデータのダウンロード

 ロゴボタンを押して、表示されたWEB画像下部(d)のデータ(マスクを考慮した顔認識)をダウンロードし、Thermal Cam3Xフォルダに移動し、解凍します。他のw_tフォルダが存在している場合は消去又は移動して下さい。

f:id:TAKEsan:20200618134526j:plain

(3) Raspberry PI側アプリの起動

 様々な起動方法が考えられますが、この場合は同一無線ルーターに、PI・MaciPhoneを接続して、Macのターミナル画面からSSHを使用してPIに接続、iPhoneiPアドレスを指定してPIアプリを起動してみました。もちろんPIにキーボードを接続すれば、PI本体からの起動もできます。

f:id:TAKEsan:20200618135658j:plain        ⇒f:id:TAKEsan:20200623171934p:plain

     iPhoneで顔認識されている場合、PI3にも同時に検出された顔の体温が表示されます。

(4) 基準となる人の体温測定(測定を実施する人)。

f:id:TAKEsan:20200618140531j:plain

平熱であればどなたでもかまいません。また、慣れてくると理解できると思いますが、必ずしも体温計が必要というわけではありません。想定温度でも十二分に機能を生かせます。

(5)基準ポイント(メモリーポイント)測定画面の表示

PIのアプリが起動して、PIとiPhoneが接続されていれば、画面右下の黒ボタンを押すことで、メモリーポイント設定画面に画面が切り替わります。

新たにモリーポイント指定カーソル(赤丸)が現れます。

メイン画面:画像内側にメモリーポイントカーソル(赤丸)の移動範囲を示すグレーの四角形が表示されます。

UI画面:新たに4つのボタンが追加されます

Color range:今までのカラーレンジ設定と同じ動作です

Cursor:モリーポイントの固定と解除を行います

Emissivty:放射率の変更を行います

M+:CursorのM+ボタンを押すことで、さらにスライダーが現れます

f:id:TAKEsan:20200618141229p:plain

この画面では標準体温の人の顔認識していて、バウンディングボックスの中央に、十字カーソル範囲内での最高温度が表示されています。

(6)体温を測定した人の顔認識と表面温度確認

実際に体温計で測った温度とどのくらい違うかを確認します

(7)誤差がある場合は体温となるべく近くなるよう放射率を調整

f:id:TAKEsan:20200618142848p:plain

Emissivtyボタンを押すと放射率選択用のピッカービューが表示されるので、測定した体温に一番近くなる様放射率に変更します。すぐに表示温度が反応するので一番近くなった所で黄色のボタン(Done)を押します。ここで1〜2℃違っていても微調整可能です。

(8)メモリーポイントの指定

測定の邪魔にならず、温度変化のない場所にメモリーポイントカーソルを移動して、M+ボタンを押します(この画像の場合は左上の壁)。一度LEPTONのキャリブレーション(シャッター開閉)を行うので2秒ほど待ちます(この間、温度調整用のスライダーが表示され、黄色に変わりアニメーションします)

赤丸カーソルは緑に変わり、以降ACボタンを押さない限り移動できなくなります

新たに中央に任意温度測定用のカーソルが現れます。そして、顔を認識している場合には十字カーソル範囲の最高温度も表示します。

f:id:TAKEsan:20200618143339p:plain

(9)メモリーポイント指定後基準測定者の体温をスライダーで微調整

体温計で測定した温度に近づく様にスライダーを調節します。M+の横に表示されるオレンジの数値はメモリーポイント温度の変化を表します。(メモリーポイントが黒体炉のように温度が一定のものであれば、このオレンジの数値を黒体炉の温度に合わせます。LEPTONから黒体炉までの距離と同位置に計測ポイント(顔)があればその計測ポイントは正確な温度と言うことになります。混乱するのでこの説明は別の機会にします)

f:id:TAKEsan:20200618144226p:plain

モリー機能は以上の(5)〜(9)までの手順が必要ですが、コツがつかめるとかなり簡単に設定できます。
(10)一般画面に戻り体温の測定開始

 メモリーポイントの設定が終わったら、右下の黒ボタンを押します。一般画面に戻り測定開始となります。以降ほぼ同じ位置に他の人が立った場合、正確な温度が表示されます。

f:id:TAKEsan:20200618144743p:plain

測定中、ダウンロードした学習済みデータはAI機能のThermalsが有効になっています。設定方法などについては「AI機能について」を参照して下さい。

ある温度以上の体温の人を検知した場合、英語や日本語、フラッシュやアラームでアラート発生が可能です。標準ではthermals=0.3(0.3℃以上の温度差がある場合はアラーム)となっていますが、36.5℃が標準の場合は1.0程度にしても良いと思います。

 thermalsが0の場合は顔認識しても独自の十字カーソルやカーソル範囲の最高温度に関する温度表示されません。また、クラス番号変更により顔以外でも同様のことができます。

 thermalsが0以上の場合

  • バウンディングボックスの中心に計測温度が表示されます。この場合の温度表示は、十字カーソルに含まれる範囲の最高温度です。
  • 一般画面に戻った時、画面上のタッチ方法で以下のように設定が変更されます。

シングルタッチ:認識した時点の対象物の温度を記憶し、画面下に記憶させた計測温度を緑で表示します。一般温度測定カーソルは中央固定となり、動かすことはできなくなります。また、対象画像を認識したバウンディングボックス中央部の温度表示は、記憶させた温度差表示となります。

ダブルタッチ:記憶された温度がクリヤーされ、バウンディングボックス内の中央部温度は計測したままの温度表示となります。一般温度測定カーソルは、任意点の温度計測が可能となります。   

f:id:TAKEsan:20200618145712p:plain

サンプル学習済みデータはグーチョキパーとマスクを含めた顔の認識。つまり4パターンの画像認識が可能です。このデータの意味は40%以上の認識率の場合、全てのクラスのバウンディングボックスを表示。特に顔が(class番号4)30%以上の認識率の場合かつ標準との温度差が0.3℃の場合は英語で"Caution"とsiriがアラートを出します。conf_allは0.3でも良いかもしれません。色々試してみて下さい。 PIを使用した場合はdisply は0 固定です(数値を変更してもタイムスタンプ等は表示できません。ESP8266では有効です。)

 

ESP8266を使用した場合

  • モリーポイント測定画面の切り替えはできなくなります。したがってこの画面を使用してのカスタマイズはできません。画面下の黒いボタンは、現在の温度範囲で画像の色が固定されるColor Renge切り替えボタンとして機能します。
  • 画像認識は可能ですが、特定のクラスに関する温度計測はできなくなります。
  • w_t.txtは有効に使え、特定のクラスに関する条件(class,conf)で、countryとvoiceが反応します。thermalsは0固定です(数値を変えても0のまま)。

 

------------------------------------------------------------------------------------ 

※ここで説明している方法の他に、黒体炉や蓄熱材を使った方法など、様々なメモリーポイントの指定方法ができます。

※自主試験では、LEPTON設置位置から1mを境にして0.1m当たり約0.1℃の温度差が発生します(50cm近づくと0.5℃測定温度が上昇する)。したがって、体温測定位置はある程度一定であることが必要です。

※メモリーポイントを壁などに設定した場合、時間とともに変化することにご注意下さい。空調の開始時など、室温と壁面の温度差がある場合は、時間の経過とともに誤差が大きくなります。

※LEPTON3.5の精度は±5℃です。メモリーポイントを設定しない場合はこの範囲で表示温度が上下します。また、放射温度計という特性上、対象物の持つ絶対温度を測定しているわけではないことにご注意下さい。

Goto Home