(inspired, mentored and co-written by Piotr Migdał)
So, what do you see below?
Well, it is a hallway. Though, things may look different at first glance. If you had an impression that it was a slightly more racy picture, you are in a good company — the AI’s mind is as dirty as yours!
Is it really just a coincidence? Or do androids dream of electric porn? And maybe deep neural networks are as susceptible to this kind of optical illusions as people are?
All in all, convolutional neural networks learn to recognize patterns. There are able to create pareidolia… and in this case, it’s about seeing non-existing body parts.
To investigate the phenomenon, I hand-picked 50 seemingly NSFW optical illusions. As they make excellent clickbaits, finding them didn’t present a problem. After 2 or 3 hours, though, I did feel I had transformed into a creepy uncle cracking indecent jokes at a family dinner.
The next step was to use publicly available NSFW detection models and check how they would cope with my 50 tricky images. Seems a considerable number of these are a just a Google search away. I used the first eight I would grab:
- Nude Detect by Netspark,
- #isitnude by Algorithmia,
- Computer Vision by Microsoft,
- Google Cloud Vision,
- nsfw.js by Infinite Red.
The result: a Google Sheet with 400 data points. Why Google Sheets? The =IMAGE() function makes it easy to preview the images while playing around with data.
Side note: Most of these feature an API with an initial free tier. However, before feeding the whole image set to any of them, I clicked through a handful of pics to check the model. In some cases I had to pass the anti-bot protection by classifying images for a self-driving car. I appreciated the irony of using AI and being used by it at the same time.
I’ll pass some more technical details as we go along; for now, let’s dive into the results.
Shut up and show me the pictures!
We’ll start with some classics you’ve probably bumped into some time ago:
Like this surprisingly doted bathing woman. Some detectors fall for the trick, but not all of them.
Or the notorious birthday photo. Flagged by most, but not all detectors.
Our cover photo is another famous example. Online human opinions are mixed. Is it a lamp or is it the butt. What do the AIs think? Again, no consensus. Your guess? (hint: keep reading, and the solution will present itself)
The AI’s top threes
The minimal set of pics above shows high divergences between the models. To build a fairly consistent order, I ranked 1–50 the scores for each model and then calculated the median of the ranks. The winners:
The least racy ones (according to AI)
How does that compare to the lowest ranked images?
Simple conclusion? The smaller the suspicious element and/or the more abstract it is, the lesser the probability an AI will get fooled by it.
Other interpretable patterns
What else does make the AI blush?
There are two issues here, and only one is related to the machines. True, it has an issue with realizing that this (presumably male) nipple is a reflection which happened to be mixed with a woman figure.
But there is a deeper one: the Western culture has a double standard for nipples: Male or female? Genderless Nipples account challenges Instagram’s sexist standards. Even though the patterns are the same.
(hint: those pink things are eyes)
All these illusions have a common pattern: first, we immediately see that it is a racy picture… then after inspection, we see that it isn’t (e.g. deducing that instead of one’s genitals it is only a hand or an armpit, even though the PATTERN is similar). Similar things happen for Photoshop disasters, where at the first glance the photo looks legit… only for one to discover the deformities later.
Pretty much anything that a normal person can do in <1 sec, we can now automate with AI. — Andrew Ng’s tweet
Well, we do make mistakes. So, here is another take on that:
Pretty much anything that a normal person can mistake in <1 sec, we can now automate with AI. — Piotr Migdał’s tweet
NSFW picture detection is a big topic. For an overview, see What convolutional neural networks look at when they see nudity by Ryan from Clarifai. If you want to train (or test) a model, the Tree of Reddit Sex Life by Piotr is a D3.js dendrogram visualization summarizing an ImageNet-like NSFW dataset.
- Open the spreadsheet with data, poke around it and share the takeaways! Also, share NSFW illusions you happen to stumble upon.
- Actually, you can feed them to an @IsItNSFW tweetbot I made — more on that in a future blog post.
Most sincere thanks to a proofreader who didn’t want to be named, worried that every Google image search of his own name would inevitably result in a picture resembling an adult human butthole next to a baby.
BTW: Is it a lamp? (Solution!)