建設業は、事故が最も頻繁に発生する業界の1つです。作業員が常に個人用保護具を着用することにより、自身の安全を守り、事故を減らし、規制基準を遵守できるようにすることが不可欠です。
これに対し、以下のソリューションが考えられます。
そこで、組み込み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)を使用して、モデルの学習パラメータを設定しました。このファイルでは、以下を実行できます。
次に、コマンド「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%
400MHzでのSTM32H747l-DISCO(高性能)のパフォーマンス
推論時間:74.98ms
STM32CubeAI 8.1.0