Recently, I've become interested in facial recognition algorithms while trying to write a little live image modification code.
While looking into the way that these algorithms work, I stumbled upon a project by Adam Harvey: CV Dazzle.
The website provides 6 essential tips for avoiding recognition by surveillance systems and computer vision:
- Avoid enhancing facial features
- Obscure the nose bridge
- Obscure the eyes
- Avoid masks, mainly due to legality
- Obscure the shape of the head
- Avoid symmetry
By obscuring key features on the face, CV Dazzle claims to use makeup to allow one to avoid detection by facial recognition algorithms.
Of course, I thought, what can be accomplished via makeup can be accomplished similarly, if not better, via the use of a computer.
I found an online facial recognition algorithm and began to experiment.
It is important in the scientific method to always have a control test, so I began by inputting a regular portrait photo I had lying around. The algorithm spit back out a detection score of 1.11, and a list of identifiers. The algorithm indeed seems to make use of the shape of the face, and key features like eyes, lips, and the nose bridge.
My first attempt was not aesthetically pleasing, but succeeded in avoiding detection by the online algorithm. While the online algorithm was unable to detect or classify the face, my phone's built-in camera software was able to detect it as a face, as was Snapchat's algorithm.
I then attempted a more thorough blurring of the face, so that even to the human eye, it would be difficult to identify a specific person. Again, the algorithm did not pick up a face, but other software did. At this point, I realized the pixels on the edge of the face, where the contrast was high, were giving away the shape and therefore presence of a face.
My next idea was to just duplicate facial features, hoping to confuse the algorithm. At first, this did not work, likely because of the distance between facial elements, which coincidentally formed new faces. This method did a fairly good job of obscuring the shape of the face, though, and avoided detection by my phone, which seems to rely mainly on that to identify faces.
My final solution was just to fully obscure the faces. The specific patterns of doing so were inspired largely by a kaleidoscope that was lying around in the studio and the way images were repeated in it.
This method is very effective in avoiding detection/identification by both the online algorithm and my phone.
The method also happens to be quite interesting to look at. No specific facial features are visible in the first image, and those that are identifiable in the second image are out of place. At the same time, the faces are recognizable both as faces and as specific people to those who are familiar with their owners.
In conclusion: it seems that it is much harder to deceive the human eye than computer vision.