Ultralytics YOLO27: Join the waitlist.
Get Started
Build with Ultralytics Platform·Deploy and Monitor·Lesson 9/10
Lessonintermediate

Privacy, Regions, and Compliance

Choose data and deployment regions from your contracts, keep data private, anonymize images before upload, and answer a pre-launch compliance checklist.

Vision data is often personal: faces, license plates, a worker's badge on a factory floor. A data region picked casually at signup, or one dataset left Public, can break a customer contract, and both are hard to undo. This lesson works through the region, visibility, and anonymization decisions with a runnable pre-upload blur step, and ends with a checklist you can hand to a compliance reviewer.

Outcome

You can pick data and deployment regions that satisfy a residency requirement, anonymize images before upload where Platform's tools stop, and complete a seven-question compliance checklist for your project.

Fast Track
If you already know your way around, here's the short version.
  1. Data region (US, EU, or AP) is fixed at onboarding; endpoints can run in any of 42 regions.

  2. Check that every dataset and project holding personal data is Private.

  3. Blur faces with Platform; mask plates and bystanders yourself before upload.

  4. Grant team roles by least privilege; know who holds each endpoint's key.

  5. Know your deletion path: Trash for 30 days, deployments immediately, monitoring examples on restart.

Hands-on

Data Region vs Deployment Region#

Ultralytics Platform onboarding Data Region step with a world map and three choices, Americas, Europe Middle East and Africa, and Asia Pacific, each with measured latency and Europe marked Recommended

During onboarding Platform measures latency to its three data regions and recommends the closest. Your choice becomes the account's dataRegion:

Data regionLocationTypical choice for
US (us)Iowa, USA (us-central1)Americas
EU (eu)St. Ghislain, Belgium (europe-west1)Europe, Middle East, and Africa; GDPR-driven residency
AP (ap)Changhua, Taiwan (asia-east1)Asia-Pacific

The data region governs where Platform stores datasets, models, and managed training data, and where shared inference runs. Three things sit outside it:

  • Dedicated endpoints run in whichever of the 42 deployment regions you pick, so an EU workspace can serve from Tokyo, and each request's image goes there.
  • Account-level data such as profile, billing, and activity is processed globally, as the privacy policy describes.
  • Compute location. The data region is a storage guarantee. If a contract restricts where processing happens, confirm GPU and endpoint locations with Ultralytics before training, or use On Premise.

Ultralytics Platform profile Deployments tab with a world map showing every available region and the one region with a ready deployment highlighted

You can't change the data region yourself; it takes a support request. Team workspaces inherit the data region of the person who creates them. Work the decision from the contract, not from latency:

When latency and residency pull apart for multinational users, choose deliberately: one endpoint in the data region (simplest compliance, slower for distant users), endpoints in several regions (faster, but each region receives request images, so check each against the contract), or separate workspaces per jurisdiction (strongest separation, more to operate).

Visibility and Access#

New datasets and projects default to Public on Free and Pro and Private on Enterprise. Public resources can be viewed by anyone, including signed-out visitors, and cloned from Explore; making one private later doesn't remove copies others already cloned. Team workspaces (Pro and Enterprise) use four roles:

RoleCan
OwnerEverything, including members, billing, team deletion, and ownership transfer
AdminEdit everything; manage billing, settings, and members below admin
EditorCreate, edit, and delete resources; upload; train, export, and deploy
ViewerRead team resources and members

Each dedicated endpoint is bound to one API key, and only the workspace owner can view key values. Deleting that key doesn't lock the endpoint; stopping or deleting the deployment does.

Worked Example: Anonymize Before Upload#

Platform blurs faces: right-click an image and choose Blur faces (free), run it on a whole dataset from More actions ($1.00 per 1,000 images), or turn on blurring in the New Dataset dialog so uploads are blurred during processing at no charge. It doesn't blur license plates, screens, or whole bystanders, and it isn't available on connected datasets.

Ultralytics Platform Blur faces dialog with confidence and box scale settings, a Blur future uploads switch, preview images of people with blurred faces, and an estimated cost of $0.02

For anything else, anonymize before the pixels leave your machine. In a forklift project, for example, people are bystanders, not a class you detect, so blur each one completely:

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] limits detection to people; point predict at your frames folder to process a whole batch.
  • conf=0.25 is deliberately low: for privacy, an extra blurred patch is cheaper than a missed person. Spot-check the output anyway, because detectors miss small and occluded people.
  • Upload only the anonymized/ folder, and keep originals where your retention policy says.

Decision rules: blur faces only (Platform's tool) when people are a class you detect, because blurring whole bodies would destroy the signal the model learns from. Blur whole bystanders when people aren't a class. Mask plates when your rules treat them as personal data, as the EU and California often do. When only counts or alerts may leave the site, run inference at the edge and send metadata instead of frames.

Retention and Deletion#

ItemWhat deletion does
Datasets, projects, modelsMove to Trash for 30 days (still counting toward storage), then are deleted permanently
DeploymentsDeleted immediately and permanently, including metric and log history
Monitoring examples and statisticsLive in endpoint memory; gone on stop or restart unless saved to a dataset
Your accountSettings > Profile > Delete My Account; team owners delete or transfer teams first

For access requests, Export All Data in Settings > Profile produces a JSON file of your metadata (profile, datasets, projects, models, activity), not images or weights.

A Pre-Launch Compliance Checklist#

  1. What leaves the customer environment? Frames, predictions, or only aggregates?
  2. Which data region, and which deployment regions? Does each satisfy the contract?
  3. Is every sensitive dataset and project Private? Check for public clones made earlier.
  4. Are faces blurred and plates masked where required? Who spot-checks what blurring missed?
  5. May you train on this customer's data at all? If not, keep it in a separate workspace.
  6. How do you delete one customer's images on request? Name the datasets and the Trash step.
  7. Who has which role, and who holds the deployment API keys?

Ultralytics publishes its security posture, including ISO/IEC 27001:2022 and SOC 2 Type I compliance, on the security page. Have a compliance reviewer sign off on any regulated deployment.

Pitfalls#

An EU workspace serving from a US endpoint

Symptom: a residency audit finds request images processed in Iowa. Fix: the data region doesn't constrain endpoints. Deploy in a region that satisfies the contract, and list every endpoint region in the checklist.

Blurring the class you detect

Symptom: after anonymizing, the person detector's recall collapses. Fix: blurring whole people removes the features the model learns. Blur only faces when people are a target class, and whole bodies only when they're bystanders.

A private dataset that was public last month

Symptom: you made a dataset private, and copies still appear on Explore. Fix: clones made while it was public belong to their owners. Treat Public as irreversible for sensitive data, and set visibility at creation.

Try It

Answer the seven checklist questions in writing for your project, including every endpoint region. Then run anonymize.py on 20 of your own frames with the class your rules require masking, spot-check every output image, and upload only the anonymized folder to a Private dataset.

Done When
You've finished the lesson when all of these are true.
  • You have written answers to all seven checklist questions, with any answer needing a compliance reviewer marked.

  • Your data region and every endpoint region satisfy your residency requirement.

  • A Private dataset holds only anonymized images, and you've recorded how many detections you had to fix by hand.

Show solution

Worked answer for the German pill line: (1) Frames leave the plant only for labeling; predictions go to the MES. (2) Data region EU; endpoint europe-west1. (3) Both datasets and the project are Private; no clones exist. (4) Operators' hands and faces sometimes appear: Blur faces on upload is on, and the QA lead spot-checks 20 images a week. (5) The contract allows training on plant data. (6) Each customer's images live in their own dataset, so a deletion request means deleting that dataset and then using Empty Trash instead of waiting 30 days for automatic deletion. (7) Ravi is owner and holds the endpoint key; Ana is editor; QA is viewer. anonymize.py on 20 frames blurred 23 people; one partly occluded operator was missed and masked by hand, so the threshold dropped to 0.15.

What's next

Last lesson: turn one deployment into a calm, repeatable retraining loop with an automated gate and release.