In Japan, uncensored pornographic images of penises and vulvas are illegal. The government has arrested hundreds of people for distributing obscenities online since the 80’s.

To get around censorship, artists who create hentai—a pornographic subgenre of anime and manga—usually place a small black bar or blur over the fun stuff. Illustrators often put a lot of care and effort into depicting genitals that will never see the light of day in Japan.

To fill in the blurred bits, a machine learning researcher and programmer who goes by the alias “deeppomf” built an algorithm that uses neural networks to uncensor hentai. He calls the program DeepCreamPy.

Anyone can download the code and run the program themselves—the tool went viral on Reddit and some people have posted before-and-after pics on the site. The program hit 500 downloads within a week. Here are some very NSFW examples of the algorithm in action.

So far, DeepCreamPy can uncensor penises and vulvas on still illustrations. It doesn’t work on video, or censored nipples or buttholes (yet). To uncensor an image, the user has to sketch green lines onto the area they want to see in Photoshop, and then run the program.

Deeppomf told me in an email that he was inspired to create DeepCreamPy as a response to decades of hentai censorship by the Japanese government. Article 175 of the Criminal Code of Japan forbids distributing "indecent" materials—and hentai definitely counts as indecent—and requires that pornography be at least partially censored with a black bar or a mosaic blur effect.

“DeepCreamPy was made to counteract the increase in censorship,” deeppomf said. “The Japanese government, especially the Japanese Supreme Court, have shown they aren't reducing regulations anytime soon. If there was to be change, it would have to come from the outside.”

He first started thinking about this project in the summer of 2016, but says he wasn’t the first to come up with the idea of uncensoring hentai using neural networks.

“But I was the first to be motivated enough to stick with the idea, skilled enough to gather data and train a neural network, and not career-oriented enough to work on something that would be appropriate on a resume,” he said.

To train the algorithm, deeppomf gathered more than 100,000 of uncensored hentai images in the span of a few months. That dataset includes yaoi (hentai depicting gay men), yuri (gay women), futa (women with penises), and “other more fringe fetishes,” he said. Scat porn and guro (torture porn) were left out, because he felt they might hurt the uncensoring results.

“I wasn't building a private porn collection so my personal preferences were irrelevant” he said. “I haven't even seen 95 percent of the images because looking at each one individually would be too time consuming.”

As the algorithm stands, the uncensoring process is a bit hit-or-miss, at least on the examples we’ve seen people posting so far: It uncensors small black bars fairly well, but the results from mosaic, pixelated genitals aren’t as good. Next, deeppomf plans to improve upon the capabilities of DeepCreamPy with a new user interface, and get it to work on black and white images.