Американская компания Algoritmia, расположенная в Сиэтле, запустила любопытный проект с говорящим названием Is it Nude (ссылку можно открывать безопасно), который предназначен для определения факта обнажения человека по его загруженной фотографии. Интерфейс очень прост: можно указать или ссылку на картинку в интернете или загрузить её с компьютера. После непродолжительной паузы сервис выносит вердикт, который выглядит примерно таким образом:
Если алгоритм решает, что изображение на фото безопасно с точки зрения обнажённости, то результат выглядит так:
Можно отметить, что алгоритм проекта отличается некоторой строгостью в своих оценках (на фото британская модель Келли Брук):
В своём блоге авторы сервиса объясняют, что в качестве основы для него они взяли Python-библиотеку nude.py Хидео Хаттори и алгоритм для определения степени обнажённости, опубликованный здесь. Однако эти подходы основаны на поиске фрагментов изображений кожи человека, анализе их расположения друг относительно друга и размера таких участков. Это зачастую приводит к ложным результатам срабатывания алгоритма, когда безобидная картинка считается содержащей обнажённую натуру:
Авторы Algoritmia дополнили результаты своих предшественников при помощи специально разработанных алгоритмов по поиску шума на изображениях и алгоритмов поиска человеческих лиц. В итоге, как заявляют исследователи, им удалось уменьшить число неверных результатов настолько, что сервис смог стать публичным и даже предоставлять программистам специальное API для работы с ним.
Изображение картины французского художника Ипполита Фландрена «Сидящий обнажённый юноша» (1855 год) с результатами работы Algoritmia.
API сервиса доступно через HTTP посредством POST-запроса:
curl -X POST -d '"http://www.lenna.org/full/len_full.jpg"' -H 'Content-Type: application/json' -H 'Authorization: Simple sim11111111111111111123456789abcdef' https://api.algorithmia.com/v1/algo/sfw/NudityDetection/0.1.63
Через Javascript (требуется загрузить предварительно algorithmia.js)
Algorithmia.query("algo://sfw/NudityDetection/0.1.63", "sim11111111111111111123456789abcdef", "http://www.lenna.org/full/len_full.jpg", console.log);
И через Python:
import urllib2, json
input = "http://www.lenna.org/full/len_full.jpg"
request = urllib2.Request('https://api.algorithmia.com/v1/algo/sfw/NudityDetection/0.1.63')
request.add_header('Content-Type', 'application/json')
request.add_header('Authorization', 'Simple sim11111111111111111123456789abcdef')
response = urllib2.urlopen(request, json.dumps(input))
print response.read()
В мае этого года в интернете появился сервис с похожей идеей от Microsoft how-old.net — сайт определял возраст человека по загруженной фотографии. Несмотря на то, что алгоритм довольно часто выдавал неожиданные результаты, он быстро приобрёл популярность и стал вирусным: за первые часы его работы на него было загружено более 210 тысяч фотографий. О истории проекта и его популярности можно прочитать на Geektimes.
Автор: jeston