Ultralytics YOLO27: ウェイトリストに登録する。
Get Started
Ultralytics Platformで構築する·デプロイとモニタリング·レッスン 9/10
レッスン中級

プライバシー、リージョン、コンプライアンス

契約に基づいてデータとデプロイのリージョンを選び、データを非公開に保ち、アップロード前に画像を匿名化し、ローンチ前のコンプライアンスチェックリストに回答します。

ビジョンデータには、顔、ナンバープレート、工場内の作業員のバッジなど、個人情報が含まれることがよくあります。サインアップ時に何気なく選んだデータリージョンや、Publicのままのデータセットが1つあるだけで、顧客との契約に違反する可能性があり、どちらも後から元に戻すのは困難です。このレッスンでは、リージョン、公開範囲、匿名化に関する判断を、実行可能なアップロード前のぼかし処理とともに説明し、コンプライアンス担当者に渡せるチェックリストで締めくくります。

成果

データの保管場所に関する要件を満たすデータリージョンとデプロイリージョンを選択し、Platformのツールで対応できない部分はアップロード前に画像を匿名化し、プロジェクト用の7項目のコンプライアンスチェックリストに回答できます。

短期集中コース
すでに使い方をご存じの方は、こちらをご覧ください。
  1. データリージョン(US、EU、AP)はオンボーディング時に固定されます。エンドポイントは42のいずれのリージョンでも実行できます。

  2. 個人データを含むすべてのデータセットとプロジェクトがPrivateになっていることを確認します。

  3. Platformで顔をぼかし、ナンバープレートや通行人はアップロード前にご自身でマスキングします。

  4. 最小権限の原則に従ってチームのロールを付与し、各エンドポイントのキーを誰が保持しているか把握します。

  5. 削除方法を把握します。ゴミ箱で30日間保管されるデータ、即時削除されるデプロイ、再起動時に消えるMonitoringサンプルがあります。

実践的

データリージョンとデプロイリージョン#

Ultralytics Platformのオンボーディングにおける「Data Region」ステップ。世界地図と3つの選択肢(南北アメリカ、ヨーロッパ・中東・アフリカ、アジア太平洋)が表示され、それぞれに測定済みのレイテンシが示されています。ヨーロッパには「Recommended」と表示されています

オンボーディング中にPlatformは3つのデータリージョンへのレイテンシを測定し、最も近いリージョンを推奨します。選択したリージョンはアカウントのdataRegionになります。

データリージョン場所一般的な選択理由
US(us)米国アイオワ州(us-central1)南北アメリカ
EU(eu)ベルギー、サン=ギスラン(europe-west1)ヨーロッパ、中東、アフリカ。GDPRに基づくデータ保管要件
AP(ap)台湾、彰化(asia-east1)アジア太平洋

データリージョンによって、Platformがデータセット、モデル、管理対象のトレーニングデータを保存する場所と、共有推論を実行する場所が決まります。次の3つは対象外です。

  • 専用エンドポイントは、選択した42のデプロイリージョンのいずれかで実行されるため、EUのワークスペースから東京でサービスを提供することもでき、その場合、各リクエストの画像は東京に送られます。
  • プロフィール、請求、アクティビティなどのアカウントレベルのデータは、プライバシーポリシーに記載のとおり、グローバルに処理されます。
  • コンピューティングの場所。データリージョンはストレージの保証範囲です。契約で処理場所が制限されている場合は、トレーニング前にGPUとエンドポイントの場所をUltralyticsに確認するか、On Premiseを使用してください。

Ultralytics Platformのプロフィールにある「Deployments」タブ。利用可能なすべてのリージョンが世界地図に表示され、準備完了のデプロイがある1つのリージョンが強調表示されています

データリージョンはご自身では変更できず、サポートへのリクエストが必要です。チームワークスペースには、作成者のデータリージョンが引き継がれます。レイテンシではなく、契約に基づいて判断してください。

多国籍のユーザーにとって、レイテンシとデータ保管要件が相反する場合は、意図的に選択してください。データリージョン内に1つのエンドポイントを置く(コンプライアンスが最も簡単ですが、遠方のユーザーには遅くなります)、複数のリージョンにエンドポイントを置く(高速ですが、各リージョンにリクエスト画像が送信されるため、契約との適合性をそれぞれ確認する必要があります)、または管轄区域ごとにワークスペースを分ける(分離が最も強固ですが、運用負荷が増えます)方法があります。

公開範囲とアクセス#

新しいデータセットとプロジェクトは、FreeとProではデフォルトでPublic、EnterpriseではPrivateになります。Publicリソースは、サインアウト中の訪問者を含む誰でも閲覧でき、Exploreからクローンできます。後から非公開にしても、他のユーザーがすでに作成したコピーは削除されません。チームワークスペース(ProとEnterprise)には、4つのロールがあります。

ロール可能な操作
オーナーメンバー、請求、チームの削除、所有権の移管など、すべての操作
管理者すべての項目を編集できます。請求、設定、管理者より下位のメンバーを管理できます。
エディターリソースの作成、編集、削除、アップロード、トレーニング、エクスポート、デプロイ
閲覧者チームのリソースとメンバーの閲覧

各専用エンドポイントは1つのAPIキーに紐付けられており、キーの値を確認できるのはワークスペースのオーナーだけです。そのキーを削除してもエンドポイントはロックされません。ロックするには、デプロイを停止または削除する必要があります。

実践例:アップロード前の匿名化#

Platformでは顔をぼかせます。画像を右クリックして「Blur faces」を選択する(無料)、「More actions」からデータセット全体に適用する(画像1,000枚あたり$1.00)、または「New Dataset」ダイアログでぼかしを有効にすると、アップロード時の処理で無料でぼかされます。ナンバープレート、画面、通行人全体はぼかされず、接続済みデータセットでは利用できません。

Ultralytics Platformの「Blur faces」ダイアログ。信頼度とボックススケールの設定、「Blur future uploads」スイッチ、顔がぼかされた人物のプレビュー画像、推定費用$0.02が表示されています

それ以外の場合は、画像データがデバイスから外に出る前に匿名化してください。たとえばフォークリフトのプロジェクトでは、人は検出対象のクラスではなく通行人にあたるため、1人ずつ全身をぼかします。

from pathlib import Path

import cv2

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # swap in a plate or face detector for those objects
out = Path("anonymized")
out.mkdir(exist_ok=True)

for result in model.predict("https://ultralytics.com/images/bus.jpg", classes=[0], conf=0.25, verbose=False):
    img = result.orig_img
    for x1, y1, x2, y2 in result.boxes.xyxy.int().tolist():
        img[y1:y2, x1:x2] = cv2.GaussianBlur(img[y1:y2, x1:x2], (51, 51), 0)  # irreversible once saved
    cv2.imwrite(str(out / Path(result.path).name), img)
    print(f"{Path(result.path).name}: blurred {len(result.boxes)} people")
bus.jpg: blurred 4 people
  • classes=[0]は人物に対象を絞って検出します。フレームのフォルダーを処理するには、predictを指定します。
  • conf=0.25はプライバシー保護のため意図的に低く設定します。人物を見逃すより、余分な領域をぼかすほうが安全です。それでも出力を抜き取り確認してください。検出器は小さい人物や遮蔽された人物を見逃すことがあります。
  • anonymized/フォルダーのみをアップロードし、元の画像は保持ポリシーに従って保管してください。

判断の基準:人物が検出対象のクラスである場合は、顔だけをぼかします(Platformのツールを使用)。全身をぼかすと、モデルが学習するシグナルが失われるためです。人物が検出対象のクラスでない場合は、通行人全体をぼかします。ナンバープレートを個人データとして扱う規則がある場合は、マスキングします。EUやカリフォルニア州では、そのように扱われることがよくあります。カウントやアラートだけを外部に送信できる場合は、エッジで推論を実行し、フレームではなくメタデータを送信します。

保持と削除#

項目削除時の動作
データセット、プロジェクト、モデル30日間ゴミ箱に移動され(その間もストレージ使用量に含まれます)、その後完全に削除されます
デプロイメトリクスとログの履歴を含め、即時かつ完全に削除されます
Monitoringのサンプルと統計エンドポイントのメモリ上に保存されます。データセットに保存しない限り、停止または再起動時に消去されます
アカウントSettings > Profile > Delete My Account。チームオーナーは、先にチームを削除するか、所有権を移管する必要があります

アクセスリクエストに対して、Settings > Profileの「Export All Data」を実行すると、メタデータ(プロフィール、データセット、プロジェクト、モデル、アクティビティ)のJSONファイルが作成されます。画像や重みは含まれません。

ローンチ前のコンプライアンスチェックリスト#

  1. 顧客環境の外に送信されるデータは何ですか?フレーム、予測、それとも集計データのみですか?
  2. データリージョンとデプロイリージョンはどこですか?それぞれが契約の要件を満たしていますか?
  3. 機密データを含むすべてのデータセットとプロジェクトがPrivateになっていますか?以前に作成されたPublicのクローンも確認してください。
  4. 必要に応じて顔をぼかし、ナンバープレートをマスキングしていますか?ぼかし漏れを誰が抜き取り確認しますか?
  5. この顧客のデータをトレーニングに使用できますか?使用できない場合は、別のワークスペースに保管してください。
  6. 依頼があったとき、顧客の画像をどのように削除しますか?対象のデータセットとゴミ箱での手順を明記してください。
  7. 各ロールを誰が持ち、デプロイのAPIキーを誰が保持していますか?

Ultralyticsは、ISO/IEC 27001:2022およびSOC 2 Type Iへの準拠を含むセキュリティ体制を、セキュリティページで公開しています。規制対象のデプロイでは、コンプライアンス担当者の承認を得てください。

よくある落とし穴#

EU のワークスペースが米国のエンドポイントから配信している

症状: データレジデンシー監査で、リクエスト画像がアイオワ州で処理されていることが判明しました。対処法: データリージョンによってエンドポイントの配置先が制限されるわけではありません。契約要件を満たすリージョンにデプロイし、チェックリストにすべてのエンドポイントのリージョンを記載してください。

検出対象のクラスをぼかす

症状: 匿名化後、人検出器の再現率が大幅に低下します。対処法: 人物全体をぼかすと、モデルが学習する特徴が失われます。人物が対象クラスの場合は顔だけをぼかし、通行人の場合に限り全身をぼかしてください。

先月まで公開されていた非公開データセット

症状: データセットを非公開にしたのに、Explore にコピーが引き続き表示されます。対処法: 公開中に作成されたクローンは、その所有者のものです。機密データを扱う場合、公開設定は取り消せないものとして扱い、作成時に公開範囲を設定してください。

試してみる

プロジェクトに関するチェックリストの7つの質問に、各エンドポイントのリージョンを含めて書面で回答します。次に、マスキングが必要なクラスを含む自前のフレーム20枚でanonymize.pyを実行し、すべての出力画像を抜き取り確認してから、匿名化済みフォルダーのみをPrivateデータセットにアップロードします。

完了条件
以下のすべてを満たすと、レッスンは完了です。
  • チェックリストの7つの質問すべてに書面で回答し、コンプライアンス担当者の確認が必要な回答に印を付けています。

  • データリージョンとすべてのエンドポイントリージョンが、データ保管要件を満たしています。

  • Privateデータセットには匿名化済みの画像のみが保存されており、手作業で修正した検出数も記録されています。

解答を表示

ドイツのpillラインの実施例:(1) フレームが工場外に出るのはラベリング時のみで、予測結果はMESに送信されます。(2) データリージョンはEU、エンドポイントはeurope-west1です。(3) 2つのデータセットとプロジェクトはどちらもPrivateで、クローンはありません。(4) 作業者の手や顔が映り込むことがあります。「Blur faces on upload」が有効で、QAリードが毎週20枚を抜き取り確認します。(5) 契約では工場データを使ったトレーニングが許可されています。(6) 顧客ごとに専用のデータセットを使用しているため、削除リクエストを受けたら、そのデータセットを削除してから「Empty Trash」を実行します。自動削除まで30日間待つ必要はありません。(7) Raviがオーナーでエンドポイントキーを保持し、Anaはエディター、QAは閲覧者です。20フレームに対してanonymize.pyを実行すると23人の人物にぼかしが適用されました。部分的に遮蔽された作業者1人を見逃して手動でマスキングしたため、しきい値を0.15に下げました。

次のステップ

最後のレッスンでは、1つのデプロイを、自動ゲートとリリースを備えた、安定して繰り返し実行できる再トレーニングループに変えます。