Pull to refresh

Licenzero: порно детектед

Reading time3 min
Views18K
Licenzero У нас великолепная работа — нам платят за просмотр порнографических роликов. Ну а серьезнее, мы работаем в R&D отделе компании Inventos, которая занимается автоматической фильтрацией веб-контента: модерация, защита авторских прав и т. д. Перед нами была поставлена задача — построить систему для автоматического выявления роликов порнографического содержания. Здесь мы расскажем, как мы решали поставленную задачу.

Общий подход к классификации


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

Мы решили оценивать не ролик целиком, а искать небольшие фрагменты. Размер фрагмента определяли исходя из точности итоговой классификации.

Такой подход с несколькими детекторами позволяет комбинировать их, добавлять новые и работать над каждым из них отдельно. На сегодняшний момент система состоит из четырех детекторов:

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

Теперь немного поподробней про каждый детектор в отдельности.

Характер движения


Поиск ритмичного движения в кадре — это то, с чего мы начали свою работу. Но сначала еще пару слов о самой классификации. Сущность классификации заключается в том, чтобы разделить некоторое множество объектов на два (в нашем случае) класса. Для этого мы:
  • берем тренировочное множество объектов, которые классифицируем вручную;
  • создаем процедуру подбора параметров статистической модели;
  • тренируем нашу модель на тренировочном множестве объектов;
  • для оценки точности модели тестируем на тестовом множестве.

Вот так, все просто. То есть, сначала была задача получения фрагментов с ритмичным порнодвижением (набрать фрагментов без порно труда не составило). Было просмотрено некоторое количество видео, вырезаны и сохранены сцены с характерным ритмичным движением. То это ушло 60 человеко-часов (для классификации, чем больше объектов — тем лучше).

Технические детали поиска ритмичного движения мы опишем в следующих статьях. Здесь отметим, что в основе нашего метода лежит использование пространственно-временных фильтров.

Цвет


С цветом дела обстоят проще, чем с движением. Каждая точка на картинке имеет координаты в некотором цветовом пространстве. Мы просто определяем, где точка с такими координатами чаще встречается: в изображении голого человеческого тела или в других областях картинки. На основании этих данных мы получаем характеристику заполненности видеофрагмента голыми телами людей. Тоже не будем сейчас касаться конкретной реализации, только скажем пару слов об используемом цветовом пространстве. Мы остановились на цветовой модели YUV, потому что:
  • координаты цвета всего две (U и V);
  • отбросив координату яркости (Y), мы можем не учитывать разную яркость объектов;
  • не нужно производить дополнительную конвертацию, при работе с видео.

Содержание кадра


При поиске порнографии нельзя оставить без внимания и отдельные кадры. Нужно поискать что-нибудь и там. Для извлечения полезной для нас информации непосредственно из кадров, мы решили использовать Bag of Visual Words. То есть сначала определяются «визуальные слова» — фрагменты или сэмплы, которые лучше всего характеризуют кадры с порно и без. Получается такой набор визуальных слов. А затем, при классификации наш детектор по наличию тех или иных слов в картинке дает оценку порнографичности данного кадра.

Звук


Детектор звука основывается на двух основных параметрах, которые помогают нам распознавать порнографию:

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

Заключение


И это все? Конечно же нет. Это только введение. Просто мы решили не сваливать в кучу все технические детали по разным детекторам, а описать их в отдельных статьях. Потому что детекторы принципиально разные, работа над ними велась по отдельности, да и объем работы (а значит, и объем описания) был различный.

Так что, продолжение следует:
Licenzero: простые движения
Licenzero: ищем порно по цвету кожи
Tags:
Hubs:
Total votes 222: ↑208 and ↓14+194
Comments136

Articles