Privacy screening¶
People appear in camera-trap images (visitors and staff), in visitor
photographs, and near drone launch and landing sites. scripts/privacy_screening/
finds them with MegaDetector v5a and triages them by identifiability before
release.
The rule
A person whose box is shorter than 80 px in the native image cannot be identified (the face is then under about 10 px), so the file is released as is. Any person box at or above 80 px, at confidence ≥ 0.2, sends the file to human review. Review decides: release (false positive or not identifiable) or remove. Media in which a person can be individually identified are removed from the release; drone videos are trimmed losslessly at launch and landing instead of being dropped whole.
Steps¶
make_lists.pylists every camera-trap and citizen-science still (in four shards) and every video under the campaign directories, skipping the withdrawn TW07-CT05 deployment.run_screening.shis the SLURM array job that was used: MegaDetector batch runs on the image shards andscreen_videos.pyon the video halves. It needs a GPU and a virtual environment withmegadetector,av, andimageio-ffmpeg.screen_videos.pysamples frames (every second for camera and visitor clips, every two seconds for drone videos) and writes one JSON line per frame with a person detection.triage.pyturns the detector output intoperson_screening_images.csvandperson_screening_videos.csvwith arelease/reviewdecision per file, and renders crop sheets for the review queue.trim_drones.py planproposes lossless start and end trims for drone videos whose people are within two minutes of launch or landing, and lists mid-flight people for review.trim_drones.py applytrims only the rows a reviewer has markedapproved=yes, verifying each output's first frame against the source.
export SMARTWILDS_ARCHIVE=/path/to/TheWilds2025
export MEGADETECTOR_WEIGHTS=/path/to/md_v5a.0.0.pt
python scripts/privacy_screening/make_lists.py
sbatch --account=<account> scripts/privacy_screening/run_screening.sh
python scripts/privacy_screening/triage.py
python scripts/privacy_screening/trim_drones.py plan # then review results/drone_trim_plan.csv
python scripts/privacy_screening/trim_drones.py apply
Screening evidence is carried into the release: the camera image inventory and
media manifests have privacyScreeningStatus, privacyScreeningMethod,
privacyHumanReviewStatus, and privacyEvidencePath columns.