This video visualizes the detection process of OpenCV’s face detector. The algorithm utilizes the Viola Jones method of calculating the integral image and then performing some calculations on all the areas defined by the black and white rectangles. The sub-window (in red) is scanned across the image at various scales to detect if there is a potential face. In the post-processing stage all the potential faces are checked for overlaps. Typically, 2 or 3 overlapping rectangles are required to confirm a face. Loner rectangles are rejected as false-positives. This visualization was done as part of the documentation for CV Dazzle, camouflage from face detection. For more information, visit http://cvdazzle.com
In this image the dotted lines represent all possible face detections, including false positives, before post-processing. Solid lines indicate a positive face detection. Each of the different colors represent the different Haar Cascade face profiles that were used. Images without any solid lines are classified as false-positives and have beaten the face detector.
Post-processing in OpenCV helps remove false positives. Though false positives are still possible, they are reduced by searching for overlapping detections. Only detections that overlap at least 3 (default) other rectangles are considered to be a face. The default setting can be changed to 2 for a higher detection rate, but with more false positives. Setting the overlap minimum to 0 returns all possible detections, as shown here by the dotted lines.
The solid lines represent the faces. They are confirmed by multiple overlapping rectangles. And the colors correspond to the difference detection profiles. OpenCV includes four robust profiles for detecting faces in a frontal view. These profiles include the “frontalface_default.xml”, “frontalface_alt.xml”, “frontalface_alt2.xml”, and “frontalface_alt_tree.xml” files. Each detector returns different noticeably different results.
OpenCV is a computer vision framework available in many different programming languages. For this test, I used the Java port created for Processing from http://ubaa.net/shared/processing/opencv/opencv_image.html and then confirmed the results using the standard framework in C.
The images on the bottom row without any solid lines indicate that no faces were found. Although some potential faces were found. They were ignored, because there was not enough confidence.
These images show a proof of concept hair + makeup pattern capable of deceiving the OpenCV face detector. It was developed as my master’s thesis project at the Interactive Telecommunication Program at NYU. A more detailed report will be posted on CVDazzle.com when it’s ready.
Model: Jen Jaffe, Hair: Pia Vivas, Makeup: Leigh Brown
Hacking the Splash screen in Photoshop CS3 – Speed Hack: Time 90min
I thought it would be a good idea to change the names to the opening credits to include my own. Using Rezilla to edit the resource file it was an easy fix. But then I found something better.
Inside the resource file, there was a little-known easter egg called the Transient Witticisms. They have been included since Photoshop 3.0 and are now a tradition at Adobe and offer valuable insight to Adobe’s design process, such as “I hates cruft.”, “Whip me, beat me, make me know love.”, “Alex, get back in the box!”, and the classic “Son, it’s always a choice between a douche and a turd.”. So instead of seeing the credits with you name on the top, you can hack the splash screen information to randomly grab a few of the witticisms and display them on startup. Here’s how to hack it to your liking.
How to add your name to the Photoshop Splash Screen
The Haar cascade visualizer takes input from the OpenCV (type_id=”opencv-haar-classifier”) formatted XML files used for object detection and outputs each stage of the cascade as a separate TIF file. A set of cascade files ships with OpenCV, which can be download from WillowGarage
Features
Outputs all stages as .tif files
Option for creating preview of 1st feature for each stage (much faster)
Runs on Mac, should run on Windows (not tested yet)
Edit Source Code To:
Change margins, max width, and images per row
Change output type from TIF to JPG
Change background image
Notes
Feel free to use for any project
Email if you like it or have a great cascade to share
NB: Some cascades have stages with a lot of features. If you’re using a large cascade be prepared for high CPU usage.
CV Dazzle is camouflage from face detection. It’s based on the original Dazzle camo from WWI and targets automated face detection and recognition systems by altering the contrast and spatial relationship of key facial features. For more info, http://cvdazzle.com
Recent press for the anti-paparazzi clutch from Belgian magazine Goedele. Thanks Ann-Marie. Within the next month I’ll be posting more information about the development of the clutch, expected productions dates and some exciting news about where it’s headed. Until then, it’s all about hiding from surveillance.
Walking around collecting umbrella handles is a few degrees north of what I usually do. Sometimes stepping outside of my comfort zone can be fun. Last night I collected a bag full of these while walking from Penn Station down to Greenwhich Village. Fun exercise for a rainy, rainy day.
Test patterns based on reversing Haar cascade files.
In the test images above, the original face was overlaid with hand-made variations of the true Haar cascade points of interest (POI) and the reversed POI. Variations of original POI yielded nearly 100% positive results except for the all white overlay (top middle). It was surprising the rest of the all-black/white pixels still tested positive, so one missed face was not too disappointing. All of the expected negatives tested negative. (Images in red are positive faces. Unaltered images were negative)
The images with a light overlay have white pixels where dark pixels should be if there, statistically, was face. Images with a dark overlay have black pixels where the light pixels should be. Because they are all custom variations of the original patterns (top 2 rows), they don’t all hide the face. But the patterns that do hide the images are surprisingly small. Note the small white accents that yielded a negative result and the large black pixel-beard that tested positive.