Ultralytics YOLO27: Встать в лист ожидания.
Get Started
Создание решений на Ultralytics Platform·Развёртывание и мониторинг·Урок 9/10
Уроксредний

Конфиденциальность, регионы и соответствие требованиям

Выбирай регионы хранения данных и деплоя с учетом договоров, сохраняй данные конфиденциальными, анонимизируй изображения до загрузки и заполни контрольный список соответствия требованиям перед запуском.

Данные компьютерного зрения часто относятся к персональным: лица, номерные знаки, бейдж сотрудника на заводском участке. Если при регистрации без должного внимания выбрать регион данных или оставить датасет публичным, это может нарушить договор с клиентом; исправить и то и другое будет сложно. В этом уроке разбираются решения по регионам, видимости и анонимизации, приводится готовый к запуску шаг размытия перед загрузкой, а в конце — контрольный список, который можно передать специалисту по соответствию требованиям.

Результат

Ты сможешь выбирать регионы хранения данных и деплоя с учетом требований к локализации данных, анонимизировать изображения до загрузки с помощью инструментов Platform и заполнять контрольный список из семи вопросов для своего проекта.

Ускоренное прохождение
Если ты уже освоился, вот краткая версия.
  1. Регион данных (US, EU или AP) фиксируется при первоначальной настройке; эндпоинты могут работать в любом из 42 регионов.

  2. Проверь, что все датасеты и проекты с персональными данными имеют статус Private.

  3. Размывай лица с помощью Platform; маскируй номерные знаки и посторонних людей самостоятельно до загрузки.

  4. Назначай роли команде по принципу минимальных привилегий; знай, у кого есть ключ каждого эндпоинта.

  5. Знай, как удалить данные: корзина хранит их 30 дней, деплои удаляются сразу, а примеры мониторинга исчезают после перезапуска.

Практические занятия

Регион данных и регион деплоя#

Шаг выбора региона данных при настройке Ultralytics Platform: карта мира и три варианта — Америка, Европа, Ближний Восток и Африка, Азиатско-Тихоокеанский регион; для каждого указана измеренная задержка, а Европа отмечена как рекомендуемый вариант

Во время первоначальной настройки Platform измеряет задержку до трех регионов данных и рекомендует ближайший. Твой выбор становится dataRegion аккаунта:

Регион данныхРасположениеОбычно выбирают для
US (us)Айова, США (us-central1)Америка
EU (eu)Сен-Гилен, Бельгия (europe-west1)Европа, Ближний Восток и Африка; требования к локализации данных по GDPR
AP (ap)Чжанхуа, Тайвань (asia-east1)Азиатско-Тихоокеанский регион

Регион данных определяет, где Platform хранит датасеты, модели и данные для управляемого обучения, а также где выполняется общий инференс. Три вещи находятся за его пределами:

  • Выделенные эндпоинты работают в любом из выбранных тобой 42 регионов деплоя, поэтому рабочее пространство в EU может обслуживать запросы из Токио, куда отправляется изображение из каждого запроса.
  • Данные на уровне аккаунта, например профиль, платежные данные и активность, обрабатываются глобально, как описано в политике конфиденциальности.
  • Расположение вычислений. Регион данных гарантирует место хранения. Если договор ограничивает место обработки, перед обучением уточни расположение GPU и эндпоинтов у Ultralytics или используй On Premise.

Вкладка Deployments в профиле Ultralytics Platform: карта мира со всеми доступными регионами, один регион с готовым деплоем выделен

Самостоятельно изменить регион данных нельзя — для этого нужно обратиться в поддержку. Рабочие пространства команды наследуют регион данных создавшего их пользователя. Принимай решение с учетом договора, а не задержки:

Если для пользователей из разных стран низкая задержка противоречит требованиям к локализации данных, выбирай осознанно: один эндпоинт в регионе данных (проще всего обеспечить соответствие требованиям, но для удаленных пользователей будет медленнее); эндпоинты в нескольких регионах (быстрее, но изображения из запросов поступают в каждый регион, поэтому сверь каждый с договором); или отдельные рабочие пространства для каждой юрисдикции (максимальное разделение, но больше усилий на обслуживание).

Видимость и доступ#

Для новых датасетов и проектов по умолчанию устанавливается Public на тарифах Free и Pro и Private на Enterprise. Публичные ресурсы может просматривать кто угодно, в том числе пользователи без входа в систему, и клонировать их из раздела Explore; если позже сделать ресурс приватным, уже созданные другими пользователями копии не исчезнут. В рабочих пространствах команды (Pro и Enterprise) используются четыре роли:

РольПрава
ВладелецВсе права, включая управление участниками и платежами, удаление команды и передачу владения
АдминистраторРедактирование всего; управление платежами, настройками и участниками с ролью ниже администратора
РедакторСоздание, редактирование и удаление ресурсов; загрузка; обучение, экспорт и деплой
НаблюдательПросмотр ресурсов и участников команды

Каждый выделенный эндпоинт привязан к одному API-ключу, а просматривать значения ключей может только владелец рабочего пространства. Удаление ключа не блокирует эндпоинт; для этого нужно остановить или удалить деплой.

Пример: анонимизация перед загрузкой#

Platform размывает лица: щелкни изображение правой кнопкой мыши и выбери Размыть лица (бесплатно), запусти обработку всего датасета через Другие действия (1,00 $ за 1 000 изображений) или включи размытие в диалоге «Новый датасет», чтобы изображения размывались при обработке без дополнительной платы. Эта функция не размывает номерные знаки, экраны и посторонних людей целиком и недоступна для подключенных датасетов.

Диалог Ultralytics Platform «Размыть лица» с настройками уверенности и масштаба рамки, переключателем размытия будущих загрузок, изображениями людей с размытыми лицами в предварительном просмотре и расчетной стоимостью $0.02

Для всего остального анонимизируй изображения до того, как пиксели покинут твой компьютер. Например, в проекте с вилочными погрузчиками люди — посторонние, а не класс, который ты определяешь, поэтому размывай каждого целиком:

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Хранятся в памяти эндпоинта; исчезают при остановке или перезапуске, если не сохранены в датасет
Твой аккаунтНастройки > Профиль > Удалить аккаунт; владельцам команд сначала нужно удалить команды или передать права владения

Для запросов на доступ пункт Экспортировать все данные в Настройки > Профиль создает JSON-файл с твоими метаданными (профилем, датасетами, проектами, моделями, активностью), но не с изображениями или весами.

Контрольный список соответствия требованиям перед запуском#

  1. Что покидает среду клиента? Кадры, предсказания или только агрегированные данные?
  2. Каковы регион данных и регионы деплоя? Каждый ли из них соответствует договору?
  3. У всех ли конфиденциальных датасетов и проектов установлен статус Private? Проверь, не создавались ли ранее публичные копии.
  4. Размыты ли лица и замаскированы ли номерные знаки там, где это необходимо? Кто проверяет, что размытие ничего не пропустило?
  5. Разрешено ли тебе вообще обучать модель на данных этого клиента? Если нет, храни данные в отдельном рабочем пространстве.
  6. Как по запросу удалить изображения одного клиента? Укажи датасеты и действие с корзиной.
  7. У кого какая роль и кто хранит API-ключи деплоя?

Ultralytics публикует сведения о мерах безопасности, включая соответствие ISO/IEC 27001:2022 и SOC 2 Type I, на странице безопасности. Передай любой деплой, подпадающий под требования регулирующих норм, на утверждение специалисту по соответствию требованиям.

Подводные камни#

Рабочая область в ЕС обслуживается эндпоинтом в США

Симптом: при аудите локализации данных выясняется, что изображения запросов обрабатывались в Айове. Решение: регион данных не ограничивает регионы эндпоинтов. Разверни сервис в регионе, соответствующем условиям договора, и укажи регионы всех эндпоинтов в контрольном списке.

Размытие обнаруживаемого класса

Симптом: после анонимизации полнота обнаружения людей резко падает. Решение: размытие людей целиком удаляет признаки, которым обучается модель. Размывай только лица, если люди — целевой класс, и размывай людей целиком, только если они являются посторонними.

Датасет, который в прошлом месяце был общедоступным, теперь закрыт

Симптом: ты сделал датасет приватным, но его копии всё ещё появляются в разделе Explore. Решение: копии, созданные, пока датасет был общедоступным, принадлежат их владельцам. Считай, что для конфиденциальных данных публичный доступ необратим, и задавай видимость при создании.

Попробовать

Дай письменные ответы на все семь вопросов контрольного списка для своего проекта, указав регион каждого эндпоинта. Затем запусти anonymize.py на 20 собственных кадрах, содержащих класс, который по твоим правилам нужно маскировать, проверь каждое выходное изображение и загрузи только анонимизированную папку в датасет со статусом Private.

Критерии готовности
Урок считается завершённым, если выполнены все условия ниже.
  • У тебя есть письменные ответы на все семь вопросов контрольного списка; ответы, требующие проверки специалистом по соответствию требованиям, отмечены.

  • Регион данных и регион каждого эндпоинта соответствуют требованиям к локализации данных.

  • В датасете со статусом Private хранятся только анонимизированные изображения, а ты записал, сколько обнаружений пришлось исправить вручную.

Показать решение

Рабочий пример для немецкой линии по производству таблеток: (1) Кадры покидают завод только для разметки; предсказания передаются в MES. (2) Регион данных — EU; эндпоинт — europe-west1. (3) У обоих датасетов и проекта статус Private; копий нет. (4) Иногда в кадре видны руки и лица операторов: размытие лиц при загрузке включено, а руководитель QA каждую неделю выборочно проверяет 20 изображений. (5) Договор разрешает обучение на данных завода. (6) Изображения каждого клиента хранятся в отдельном датасете, поэтому для удаления по запросу нужно удалить этот датасет, а затем воспользоваться пунктом Очистить корзину, не дожидаясь автоматического удаления через 30 дней. (7) Ravi — владелец и хранит ключ эндпоинта; Ana — редактор; QA — наблюдатель. anonymize.py размыл 23 человека на 20 кадрах; один частично закрытый оператор был пропущен и замаскирован вручную, поэтому порог снизили до 0.15.

Что дальше

Заключительный урок: преврати один деплой в простой и воспроизводимый цикл переобучения с автоматической проверкой и выпуском.

Войди, чтобы сохранять прогресс