個人用防護具(PPE)検出ガイド

コンソールの人物ぼかしモデルカード

個人用防護具(PPE)検出機能 モデルは、職場やコミュニティ環境での危険への曝露を制限する装備の有無を確認するのに役立ちます。

このモデルは、特定の人物と、その人物が身につけている PPE アイテム(手袋、マスク、ヘルメット)を検出します。このモデルは、PPE アイテムと、そのアイテムが対応する人体の部位を覆っているかどうかを検出します。このモデルは、このカバレッジ情報を [0, 1] の範囲のカバレッジ スコアとして報告します。このモデルは、動画ストリームを入力として受け取ります。このモデルは、 検出結果をプロトコル バッファとして出力します。このプロトコル バッファは BigQuery で確認できます。このモデルは 1 FPS で実行されます。

PPE 検出演算子には、設定できる 3 つの制御パラメータがあります。

  • 頭部保護具: 演算子は、頭部保護具に関連する PPE アイテム情報を出力します。この値は Google Cloud コンソールで設定するか、enableHeadCoverageDetectionを true に設定しますPersonalProtectiveEquipmentDetectionConfig
  • 顔面保護具: 演算子は、顔面保護具に関連する PPE アイテム情報を出力します。この値は Google Cloud コンソールで設定するか、enableFaceCoverageDetection を true PersonalProtectiveEquipmentDetectionConfigに設定します。
  • 手袋: 演算子は、手袋に関連する PPE アイテム情報を出力します。この値は Google Cloud コンソールで設定するか、enableHandsCoverageDetectionPersonalProtectiveEquipmentDetectionConfigで true に設定します。

PPE 検出モデル アプリの仕様

コンソールで PPE 検出モデルを作成する手順は次のとおりです。Google Cloud

コンソール

コンソールでアプリを作成する Google Cloud

  1. PPE 検出アプリを作成するには、 アプリケーションを構築するの手順を行います。

    [アプリケーション] タブに移動

PPE 検出モデルを追加する

  1. モデルノードを追加するときに、事前トレーニング済みモデルのリストから [PPE 検出機能] を選択します。

  2. オプション メニューで、検出する PPE の種類を設定します。

BigQuery コネクタを追加する

  1. 出力を使用するには、アプリを BigQuery コネクタに接続します。

    BigQuery コネクタの使用方法については、BigQuery にデータを接続して保存するをご覧ください。BigQuery の料金については、 BigQuery の料金ページをご覧ください。

BigQuery で出力結果を表示する

モデルが BigQuery にデータを出力したら、BigQuery ダッシュボードで出力アノテーションを表示します。

BigQuery パスを指定しなかった場合は、Agent Platform Vision スキーマの [Studio] ページで、システムによって作成されたパスを確認できます。

  1. コンソールで、[BigQuery] ページを開きます。 Google Cloud

    BigQuery に移動

  2. 対象のプロジェクト、データセット名、アプリケーション名の横にある [Expand] を選択します。

    BigQuery でアプリテーブルを選択する

  3. テーブルの詳細ビューで、[プレビュー] をクリックします。結果は [アノテーション] 列に表示されます。出力形式の説明については、 モデル出力をご覧ください。

アプリケーションは結果を時系列で保存します。最も古い結果はテーブルの先頭に表示され、最新の結果はテーブルの末尾に追加されます。最新の結果を確認するには、ページ番号をクリックしてテーブルの最後のページに移動します。

モデル出力

モデル出力には、タイムスタンプ、検出ボックス、ボックスに対応するオブジェクト ラベル、そのオブジェクトの信頼度スコアが含まれます。出力ストリームのレートは 1 フレーム / 秒です。

モデルの出力は、動画フレームと PPE 検出予測結果に関する情報を含むプロトコル バッファ形式です。このモデルの目的は、ユーザーが保護具を適切に着用しているかどうかを確認することです。そのため、このモデルは人物と、その人物が着用している PPE の検出に重点を置いています。モデル出力は、人物の検出に重点を置いています。検出された人物ごとに、モデルは人物の周囲にある PPE と、各装備のカバレッジ スコアを一覧表示します。

次のプロトコル バッファの例では、次の点に注意してください。

  • 現在の時刻 - タイムスタンプは、推論結果が作成された時刻を示します。
  • 検出された人物 - 1 つの人物識別ボックス、複数の PPE 識別ボックス、各身体部位のカバレッジ スコアを含む主な検出結果。
  • 人物識別ボックス - 境界ボックス、信頼度スコア、人物エンティティ。
  • PPE 識別ボックス - 境界ボックス、信頼度スコア、PPE エンティティ。

アノテーション出力 JSON オブジェクトのサンプル

{
  "currentTime": "2022-11-10T21:02:13.499255040Z",
  "detectedPersons": [
    {
      "personId": "0",
      "detectedPersonIdentifiedBox": {
        "boxId": "0",
        "normalizedBoundingBox": {
          "xmin": 0.486749,
          "ymin": 0.35927793,
          "width": 0.048630536,
          "height": 0.21746585
        },
        "confidenceScore": 0.31775203,
        "personEntity":{
          "personEntityId":"0"
        }
      },
      "detected_ppe_identified_boxes": {
        "normalized_bounding_box": {
          "xmin": 0.07268746,
          "ymin": 0.80575824,
          "width": 0.22973709,
          "height": 0.18754286
        },
        "confidence_score": 0.45171335,
        "ppe_entity": {
          "ppe_label_string": "Glove",
          "ppe_supercategory_label_string": "Hand Coverage"
        }
      },
      "detected_ppe_identified_boxes":{
        "normalized_bounding_box":{
          "xmin": 0.35457548,
          "ymin": 0.016402662,
          "width": 0.31828704,
          "height": 0.18849815
        },
        "confidence_score": 0.44129524,
        "ppe_entity":{
          "ppe_label_string": "Helmet",
          "ppe_supercategory_label_string": "Head Coverage"
          }
      }
    }
  ]
}

プロトコル バッファの定義

// Output format for Personal Protective Equipment Detection Operator
message PersonalProtectiveEquipmentDetectionOutput {
 // Current timestamp
 protobuf.Timestamp current_time = 1;

 // The entity info for annotations from person detection prediction result
 message PersonEntity {

   // Entity id
   int64 person_entity_id = 1;
 }

 // The entity info for annotations from PPE detection prediction result
 message PPEEntity {
   // Label id
   int64 ppe_label_id = 1;
   // Human readable string of the label (Examples: helmet, glove, mask)
   string ppe_label_string = 2;
   // Human readable string of the super category label (Examples: head_cover,
   // hands_cover, face_cover)
   string ppe_supercategory_label_string = 3;
   // Entity id
   int64 ppe_entity_id = 4;
 }

 // Bounding Box in the normalized coordinates
 message NormalizedBoundingBox {
   // Min in x coordinate
   float xmin = 1;
   // Min in y coordinate
   float ymin = 2;
   // Width of the bounding box
   float width = 3;
   // Height of the bounding box
   float height = 4;
 }

 // PersonIdentified box contains the location and the entity info of the
 // person
 message PersonIdentifiedBox {
   // An unique id for this box
   int64 box_id = 1;
   // Bounding Box in the normalized coordinates
   NormalizedBoundingBox normalized_bounding_box = 2;
   // Confidence score associated with this box
   float confidence_score = 3;
   // Person entity info
   PersonEntity person_entity = 4;
 }

 // PPEIdentified box contains the location and the entity info of the PPE
 message PPEIdentifiedBox {
   // An unique id for this box
   int64 box_id = 1;
   // Bounding Box in the normalized coordinates
   NormalizedBoundingBox normalized_bounding_box = 2;
   // Confidence score associated with this box
   float confidence_score = 3;
   // PPE entity info
   PPEEntity ppe_entity = 4;
 }

 // Detected Person contains the detected person and their associated
 // PPE and their protecting information
 message DetectedPerson {
   // The id of detected person
   int64 person_id = 1;
   // The info of detected person identified box
   PersonIdentifiedBox detected_person_identified_box = 2;
   // The info of detected person associated ppe identified boxes
   repeated PPEIdentifiedBox detected_ppe_identified_boxes = 3;

   // Coverage score for each body part


   // Coverage score for face
   optional float face_coverage_score = 4;
   // Coverage score for eyes
   optional float eyes_coverage_score = 5;
   // Coverage score for head
   optional float head_coverage_score = 6;
   // Coverage score for hands
   optional float hands_coverage_score = 7;
   // Coverage score for body
   optional float body_coverage_score = 8;
   // Coverage score for feet
   optional float feet_coverage_score = 9;
 }

 // A list of DetectedPersons
 repeated DetectedPerson detected_persons = 2;
}

ベスト プラクティスと制限事項

PPE 検出機能を使用する際に最適な結果を得るには、データの取得とモデルの使用時に次の点を考慮してください。

ソースデータに関する推奨事項

推奨: 可能であれば、検出 対象を静止させてカメラに向かわせます。

PPE 検出機能が正しく処理できる画像データの例:

カメラに向かって顔を覆っている人物のサンプル画像
画像の出典: Ani KolleshiUnsplashより。
カメラに向かって顔を覆っている人物のサンプル画像
画像の出典: AhsanizationUnsplash より。
カメラに向かって顔を覆っている人物のサンプル画像
画像の出典: Anastasiia ChepinskaUnsplashより。

非推奨: フレーム内の 主要な PPE アイテムが小さすぎる画像データは避けてください。

PPE 検出器が正しく処理できない画像データの例:

検出するには小さすぎる PPE アイテムのサンプル画像
画像の出典: Josue Isai Ramos FigueroaUnsplash より。

非推奨: 一般的でない視点や不規則な角度から主要な PPE アイテムを 撮影した画像データは避けてください。

PPE 検出器が正しく処理できない画像データの例:

検出するには角度が珍しすぎる PPE アイテムのサンプル画像
画像の出典: Niclas MoserUnsplashより。

制限事項

  • 解像度: 推奨される最大入力動画解像度は 1920 x 1080、 推奨される最小解像度は 160 x 120 です。
  • 検出可能な最小オブジェクト サイズ: モデルは、フレームサイズの 5% 未満を占めるシーン内のオブジェクトを無視します。
  • 照明: 動画の照明は通常どおりにする必要があります。動画データが極端に明るい場合や暗い場合は、検出器のパフォーマンスが低下する可能性があります。
  • PPE アイテムの配置: PPE モデルは、ユーザーが PPE アイテムを適切に使用しているかどうかを分析することに重点を置いています。そのため、PPE アイテムを着用していない場合、そのアイテムは無視されます。
  • PPE 商品アイテム タイプ: このモデルは、医療用 PPE アイテムではなく、建設用 保護具に重点を置いています。そのため、医療センターや病院では検出器が適切に機能しない可能性があります。
  • カスタム PPE タイプ: PPE モデルは、ユーザー定義の PPE アイテムをサポートしていません。このモデルは、ヘルメット、マスク、手袋の検出をサポートしています。

このリストはすべてを網羅しているわけではなく、これらの制限事項と機能は今後のプロダクトの変更に伴って変更される可能性があります。