Недавно мы наткнулись на любопытный документ, описывающий алгоритм, при помощи которого определяются в социальных сетях и остальном интернете картинки «взрослого содержания». Изучая бумагу, мы даже не успели разозлиться — настолько абсурдно звучит описание этого алгоритма. Недолго думая, мы его перевели и решили поделиться с вами. 

Данный документ представляет собой новый метод распознавания сосков. Потребность в таком методе возникла из-за необходимости блокировать в интернете материалы для взрослых (а там, где есть сосок, недалеко и до порнографии).

Принцип действия вкратце следующий: алгоритм под названием Adaboost распознает участок изображения, где теоретически может находиться сосок, а файл, содержащий его, блокируется. Для того чтобы «засечь» сосок, алгоритм использует информацию о форме соска (она, к счастью, предсказуемо стабильна) и информацию о соотношении цвета кожи соска и его ореола. Прочие методы способны определить только некий процент голой кожи, и поэтому они выдают много ошибок. Этот метод, как понятно из описания выше, руководствуется индивидуальными особенностями соска и поэтому почти безошибочно его находит — а значит, может заблокировать материалы оскорбительного содержания.

Ключевые слова: 

порнографический образ, картинки для взрослых, оскорбительные картинки, определение соска, обнаженка

 

1Введение

Существует огромное число изображений для взрослых, к которым запросто можно получить доступ через мультимедийные файлы и архивы в интернете. Определение и блокирование таких оскорбительных изображений и видео становится все более и более востребованной функцией, ведь нужно оградить от них детей. Автоматическое распознавание порнографических образов изучалось некоторыми исследованиями. Методы, принятые в настоящий момент, можно разделить на два вида: основывающиеся на распознавании кожи и основывающиеся на информации об особенностях тела.

Первые направлены, собственно, на поиск кожи. Многие модели были разработаны, исходя из цветовой гистограммы, хроматического разброса, цветовой и текстурной информации. После того, как определен участок кожи, используется одна из нижеследующих инструкций: распознавание геометрической модели, описывающее структуру или форму человеческого тела; распознавание участков кожи. Такой вид поиска нацелен на распознавание особенностей формы, серии особенностей каждого связанного с этим региона кожи: его цвета, текстуры и формы, и так далее.

Возникла необходимость блокировать материалы для взрослых, ведь там, где есть сосок, недалеко и до порнографии.

Методы, основанные на особенностях тела, направлены на поиск и определение этих особенностей на картинках: информация о цвете и особенности формы соска (так называемый «идентификатор компактности») и так далее. Эти методы стремятся к использованию средних значений и общих совпадений.

Все существующие методы, упомянутые выше, страдают от фундаментальной проблемы: они не способны отличить один орган от другого, даже имея в качестве базовых данных информацию о цвете и форме. То есть, грубо говоря, не могут отличить ногу от подмышки. А ведь наличие некоего процента голой кожи на картинке с человеческим телом совершенно не значит, что эта картинка порнографического содержания. Чтобы верно оценить картинку, наш алгоритм проверяет ее на наличие женских сосков.

Единственный литературный пример алгоритма, способного распознать половой орган, мы нашли в книге Фунгкхона и Танпрасерта под названием «Определение сосков в картинках оскорбительного содержания». Этот метод прежде всего распознает кожу, а потом находит на ней соски, используя самоорганизующуюся карту нейронной сети. Они заявляют, что в 65,4 % случаев безошибочно находят соски. Можно сказать, что это фундаментальный шаг в истории нахождения порнографического изображения.

Наш же метод руководствуется так называемым органическим принципом, что означает, что мы придаем особое значение информации об особенностях человеческих органов. В деле нахождения сосков решающими являются их форма и кожа. А значит, оба метода нужно объединить и с помощью этого найти сосок на картинке.

Наш метод состоит из двух этапов:

№ 1

 

Быстрое нахождение участка кожи, где потенциально может располагаться сосок.

№ 2

 

Распознавание соска, основывающееся на статистической информации о форме соска и коже соска. Используется для того, чтобы решить, действительно ли найденные на первом этапе соски являются сосками (а не просто кожей, например).

 

2Нахождение участка кожи, где может быть сосок

Алгоритм Adaboost был впервые предложен в книге П. Виолы и М. Джонса «Быстрое объектное определение с использованием расширенного спектра простых функций». В тот момент его использовали для распознавания лица через определение волосяных участков, и он основан на просчете уровней серого через прямоугольники.

В нашей тренировочной версии Adaboost мы используем 638 изображений сосков в качестве позитивных примеров, 19 370 изображений — как негативных примеров. Некоторые примеры сосков из позитивного тренировочного сета представлены на иллюстрации (a). Опытный определитель Adaboost состоит из 16 стадий с 257 физическими классификаторами.

В активном поиске: Как сайты определяют соски на фотографиях. Изображение № 1.

Алгоритм Adaboost не всегда находит сосок. Мы обнаружили, что временами некоторые сигналы о соске в Adaboost ложные. Иллюстрация (b) приводит два примера. Красные квадраты — это результат алгоритма Adaboost. Всего найдено четыре участка, предварительно определенные как соски. Тем не менее, два из них дали неправильный результат, так, например, глаз и пупок ошибочно определены как соски. Это происходит потому, что алгоритм высчитывает общий серый градиент при помощи квадратов, а детали, заключающиеся в этих квадратах, теряются. В следующих стадиях как раз и удаляются участки, ложно определенные как соски. 

 

3Распознавание сосков

Фильтр, который использует статистическую информацию о коже соска, разработан, чтобы отсеивать «ложные» соски. Это прежде всего статистическая информация о взаимосвязи цвета кожи соска и ореола.

Статистическая информация о цвете кожи

Здесь мы фокусируемся на красных и зеленых компонентах сосковых участков, поскольку по статистике, содержание красного и зеленого цвета в коже соска и не соска, отличаются. Мы используем те же самые картинки сосков, что и ранее, в качестве позитивных примеров. Прежде всего, мы выявляем стандартные изменения показателей серого в пикселях кожи соска и не соска и потом вычленяем значения и результаты (Rsur - Rnip) и (Gsur - Gnip) / (Rsur - Rnip), где nip и sur обозначают, соответственно сосковый и не сосковый участок, а R и G — красный и зеленый регионы. Можно наблюдать, что кожа соска в сравнении с кожей не соска содержит больше красного компонента (с зеленым цветом, соответственно, наоборот). Эта информация используется для того, чтобы определить границы соска.

Алгоритм нахождения соска

Результаты алгоритма Adaboost включены в этот метод. Цвет и информация о сером используются на этой стадии. Вот каковы этапы этого процесса:

В активном поиске: Как сайты определяют соски на фотографиях. Изображение № 2.

 

1

 

Аккуратно ограничиваем участок соска с целью нащупать его границы (a), (b).

2

 

Очищаем объекты малого размера и заполняем пустые пространства упомянутых объектов (c).

3

 

Получаем самый большой объект из этой области и проверяем его ширину и высоту. Если он не имеет определенного размера, значит, сосок ложный и следует остановить поиск. Если имеют, значит, перед нами сосок.

4

 

Формируем лекала для создания семпла на сосковый участок и ореол (d), (e).

5

 

Лекало для ореола создано на основе лекал соска через расширение зоны поиска и выделение основы. Вычисляем стандартные отклонения (stdnip, stdsur, где nip — сосок, а sur — его ореол) этих пикселей в сосковом участке и на участке ореола в их серых изображениях. Если один из stdnip и stdsur выйдет за границы, описанные в секции 1, принимаем сосок за ложный и останавливаемся.

6

 

Вычисляем среднее значение Mnip, Msur для компонентов RGB в тех пикселях в соске и ореоле (на цветных изображениях). Здесь обозначьте Mnip=( Rnip, Gnip, Bnip) и Msur=( Rsur, Gsur, Bsur). Чтобы понять, что сосок настоящий, должны быть соблюдены следующие условия:

(i) (Rsur - Rnip)/ Rsur < Граница 0
(ii) Граница 1 > (Gsur - Gnip)/( Rsur - Rnip) > Граница 2

Основанные на вычлененной статистической информации в секции 3.1 Граница 0, Граница 1 и Граница 2 установлены в ранге 0, 0,57 и –1,34.

Красные квадраты с символом креста на рисунке (b) показывают соски, отсеянные как лишние, на основании вышестоящего алгоритма. Отсюда следует, что, хотя некоторые ложные участки и проходят фильтр на стадии 1 нашего метода, их можно отсеять уже на стадии 2.

 

4Экспериментальные результаты и дискуссии

Вышеупомянутый алгоритм был создан при помощи математических кодов и протестирован на порнографических картинках, скачанных из интернета. Архив из 980 изображений, из которых 265 содержит 348 типов сосков и 715 сосков не содержит, используется для тестирования. Рисунок 3 показывает некоторые результаты нахождения сосков. Таблица 1 представляет экспериментальные результаты для тестируемого архива. Было обнаружено 75,6 % сосков, но 24,4 % сосков пропущено. Результаты, представленные в книге Фуангкхона и Танпрасерта, — 65,4 % и 34,6 % соответственно. Тем не менее, непросто сравнивать такие вещи, поскольку в обоих случаях используются разные данные. 

Экспериментальные результаты тестирования

КОЛИЧЕСТВО 

Всего изображений — 980

Изображения сосков — 265

Изображения не сосков — 715

Всего сосков — 348

 

КОЛИЧЕСТВО

Обнаруженные соски — 263 

Пропущенные соски — 85 

Ложное определение — 170

 

ПРОЦЕНТ

263/348 = 75, 6%

85/348 = 24,4 %

170/980 = 0,174 за раз

В активном поиске: Как сайты определяют соски на фотографиях. Изображение № 3.

В нашем методе, конечно, ложные соски — все еще большая проблема, от которой нужно избавляться, поскольку мы определили аж 170 лишних сосков, и среднее число огрехов — 0,174 за один проверочный рейд. Два примера лишних сосков продемонстрированы на картинке (f). Например, наш алгоритм часто путает с соском пупок (e), поскольку у пупка форма, похожая на сосок, и внешне он, в целом, может напоминать сосок. Тень, как на рисунке (f), тоже может стать причиной путаницы на стадии нашего метода в том случае, если половина соска находится в тени (тогда сосок может быть принят за несосок).