Let's watch some watchers!
This guide covers two skills:
Our goal is to train a machine learning model to recognize surveillance cameras in photos and video.
Before you start, we recommend reading the following resources:
Be careful, and be aware of the law enforcement norms where you live.
In short, the main kinds of cameras are dome cameras, bullet cameras, traffic cameras, and pan-tilt-zoom cameras.
Cameras are often spotted on poles, ledges, overhangs, rooftops. They are often spotted watching parking lots, doors, banks, intersections, and government buildings. Indoors, they are typically spotted on roofs and near cash registers. They are typically positioned right above human height or very far above it. The box that is often seen near a camera is an infrared light for night vision.
Red = more likely to see cameras
Often several cameras clump together, so if you see one, look for more.
Be aware of local kinds of cameras, for example in New York, and of new kinds of cameras, such as the Amazon Ring and the LinkNYC booths.
Check if the city you live in has an existing map of surveillance cameras. Several cities (like New York) have maps of camera locations, but they may be outdated or partial.
When spotting cameras, privilege institutional surveillance (e.g. police, government, and commercial systems) over citizen surveillance (e.g. don't photograph people's houses or living rooms!)--although the line between the two is becoming increasingly blurred.
Be aware that sometimes a camera is positioned as a deterrent, and does not actually work! Also, even if a camera works, no one may be watching.
A camera's field of view depends on its angle and the focal length of the camera lens, unless it's a pan-tilt-zoom camera.
Check out these primers on the field of view of a CCTV camera:
Try it yourself: experiment with controlling these pan-tilt-zoom cameras in Pittsburgh from your browser.
Practice spotting the cameras in the below images:
NOTE: Do not employ any of these methods if they are illegal where you live. Also, needless to say, use these methods to protect yourself and to keep institutional systems accountable, not to surveil other individuals.
For indoor hidden cameras, try using a radio frequency signal detector.
Cameras are often publicly networked these days, so try Insecam (an online directory of cameras), iSpy, or Shodan. Note that many publicly cameras are also controllable; e.g. iSpy will let you change the angle and zoom of a camera.
You can also run a portscan yourself using IP Scanner or Net Analyzer (from your phone) or your command-line utility of choice. That can turn up any cameras that are connected to your local network.
There are three parts to be aware of: the dataset itself (i.e. the pile of images), the labeling of the dataset, and any metadata that might be useful.
First, we want the dataset to mirror how the model will be deployed in real life. So, we would recommend taking images that are as diverse as possible:
Second, please label your images consistently. For our model we only include the "head" of the camera, not the "body," and draw the box as tightly as possible. We also only have one class for all kinds of cameras, which is just called "surveillance-camera" (later we might make more classes). Also, be sure to label all cameras in an image if there are multiple!
You can use software like vott to label your cameras with bounding boxes, and export the annotations as JSON or Pascal VOC (either format is fine).
Lastly, if you can, try to record metadata like camera locations (street intersections or latitude-longitude coordinates) so they can be used for other analysis (such as mapping) later.
Please send us your images, along with any labels and metadata, at firstname.lastname@example.org. Any questions and feedback are welcome as well. Feel free to forward this guide to anyone you think will find it useful. Thanks!