個人用保護具の検出

建設業は、事故が最も頻繁に発生する業界の1つです。作業員が常に個人用保護具を着用することにより、自身の安全を守り、事故を減らし、規制基準を遵守できるようにすることが不可欠です。

これに対し、以下のソリューションが考えられます。

手動点検：直接検証が可能ですが、その効果は実施者の能力と時間次第で制限されます。また、ミスが発生しやすく、拡張性もありません。

CCTV防犯システム：より広いエリアを網羅し、全体像を幅広く把握できます。ただし、映像を手動で確認する必要があるため、時間がかかるだけでなく、個人が常に監視されていると感じる可能性があることから、プライバシーの問題が生じます。

ウェアラブル･センサ：リアルタイムのデータを提供し、インシデントへの対応能力を高めます。ただし、高コストになる場合も多く、センサの常時着用を望まない作業員から抵抗にあう可能性もあります。

そこで、組み込みAIの出番です。組み込みAIは、他のソリューションと比べて優れたリアルタイム検出、コスト効率、プライバシー保護、および拡張性を実現しています。また、事故発生率の低下やコスト削減などの定量的効果があっただけでなく、作業員からの定性的フィードバックにおいては、安全認識が向上したとの評価を得ています。

アプローチ

このユースケースは、作業員が着用している個人用保護具（ヘルメット、安全ベスト、安全靴、手袋）の画像を含む公開データセットをベースとしています。個人が着用している個人用保護具を検出し、各保護具を囲むバウンディング･ボックスを描画することを目的としています。

このプロジェクトでは、STM32 Model zooを使用しました。これには、STM32に合わせて最適化された学習済みモデルに加え、モデルの再学習およびカスタマイズ用のスクリプトも用意されています。

最初に、GitHubリポジトリのクローンを作成し、プロジェクト環境をセットアップしました。このプロジェクトでは個人用保護具の検出を行うため、主に［Object detection］フォルダのリソースを使用しました。ユース･ケースに応じて、別のフォルダのリソースを使用することもできます。STM32 Model zooは、複数のアプリケーションに対応しています。

データセットのダウンロード後、STM32 Model zooの指定のフォルダ（stm32ai-modelzoo/object detection/datasets）にファイルをインポートしました。データセット内の各サンプルは、画像とテキスト･ファイルで構成されます。また、画像には、各保護具の位置も示されています。

次に、構成ファイル（stm32ai-modelzoo/object detection/src/user_config.yaml）を使用して、モデルの学習パラメータを設定しました。このファイルでは、以下を実行できます。

STM32 Model zooで利用可能な学習済みモデルの選択：この場合はSSD MovileNet v1。

動作モードの定義：この場合は、学習、量子化、評価、ベンチマークを連続して実行する« chain_tqeb »。*

検出するクラスの定義：Person、Helmet、Protection Jacket、Protection Shoes、Gloves。

学習、検証、テスト、および量子化フォルダ･パスの入力（学習セットの一部を使用する場合に推奨）

モデル入力サイズ（224 x 224 x 3）への画像の再スケール。

その他のパラメータは、デフォルトのままでも構いません。ただし、モデルの学習の改善のために変更することもできます。

次に、コマンド「python stm32ai_main.py」を使用して、Pythonスクリプトを実行し、学習を開始する必要がありました（stm32ai-modelzoo/object_detection/srcフォルダに存在することを確認します）。

学習の完了後に、［experiment_outputs］フォルダ（stm32ai-modelzoo/object_detection/src/ experiment_outputs）で結果を取得できました。このフォルダには、.h5学習モデルとその.tflite量子化バージョン、各モデルの実行時間とメモリ･フットプリント、および検出する各オブジェクトの混同行列が含まれています。

以下のビデオでは、これらすべてのステップを説明しています。

*量子化とベンチマークは、ST Edge AI Developer Cloudを通じて実行されます。これを使用するには、STアカウントが必要です。

データ

データセット：個人用保護具の検出
データ･フォーマット：
5つのクラス：Person、Helmet、Protection Jacket、Protection Shoes、Gloves
RGB画像：学習4200、検証584、テスト

結果

モデル：SSD MobileNet v1量子化ニューラル･ネットワーク

入力サイズ：224 x 224 x 3に画像を再スケール

メモリ･フットプリント：
188.6KB 使用Flashメモリ（重みデータ）
131.42KB 使用RAM（アクティベーション･バッファ）

精度：量子化後mAP（mean average precision）78.96%

HelmetクラスAP = 79.85%

GlovesクラスAP = 50.61%

PersonクラスAP = 91.32%

ShoesクラスAP = 82.73%

JacketクラスAP = 90.29%

400MHzでのSTM32H747l-DISCO（高性能）のパフォーマンス
推論時間：74.98ms
STM32CubeAI 8.1.0