Пользователь
0,0
рейтинг
25 марта 2011 в 11:18

Разработка → Licenzero: порно детектед

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

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


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

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

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

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

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

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


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

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

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

Цвет


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

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


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

Звук


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

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

Заключение


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

Так что, продолжение следует:
Licenzero: простые движения
Licenzero: ищем порно по цвету кожи
borges @borges
карма
53,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (136)

  • +134
    Тяжелая у вас работа.
    • +84
      На самом деле, пять часов к ряду смотреть порнуху и отмечать ритмичные сцены действительно было нелегко.
      • +115
        «Патологоанатом: — Выходишь на улицу, а там люди. Живые люди!
        Гинеколог: — И лица, лица!»
        © бородатый анекдот
      • +6
        Где ж вы столько порнухи то взяли? Надеюсь не скачали с порнолаба? Там все нелегальное! :)
        • +39
          Я буду отвечать на этот вопрос только в присутствии своего адвоката. Но нет, не с порнолаба.
          • +3
            Не, не так.
            Ответ на этот вопрос может повредить мне или моим родственникам.
            :)
          • +2
            рыбные места не выдаете :D
        • –3
          Зачем порнолабы и иже с ними, пока живет и здравствует всеми любимый vk.com.
    • 0
      Изнуряющая.
  • +144
    Картинок мало.
    • +12
      Да и тема сисек слабо раскрыта…
    • +10
      Возьмите картинку, не расстраивайтесь.
      Cyanide and Happiness #2365
  • 0
    А нельзя ли было просто фильтровать по размеру гм… «фрагмента»
    И какие модели согласились участвовать в ваших тренировках?
    • 0
      «Фрагменты» не всегда видны видны в кадре, к тому же просто распознать «фрагмент», то есть скажем, не спутать его с рукой тоже непростая задача. Частично она решается благодаря Bag of Visual Words.
  • +11
    А как отличить порнуху от полуголых девиц играющих в волейбол на пляже с мужиками? Тут и стоны и кожа и характерные части тела и ритмичность.
    • +3
      Вот с ритмичностью думаю там как раз таки все по другому обстоит.
    • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      А какая ритмичность в волейболе?
    • +6
      Или от мясника, рубящего свинную тушу?
      • +2
        Туша не стонет)
        • +35
          А мясник? :)
      • +12
        А у Вас хорошая фантазия, батенька=)
        • +3
          Я бы еще добавил большой теннис =)
          фух, вроде правильно написал
          • 0
            По-любому Курникову или Шарапову не вычислить)
  • +10
    В нашем Саратовском Гос Университете тоже активно занимаются данной проблемой
    www.sgu.ru/node/51877
    • 0
      Жутко…
    • +5
      Эта табличка по Вашей ссылке — жесть!
      • +7
        Бюрократическое порно :D
      • 0
        Обратите внимание на
        публикуется частично, с сокращениями
        .
    • +3
      Прочитали, весь офис под столом, добавил в избранное :) щас пойдет вирусом
      • 0
        Да первая волна была примерно год назад после опубликования этой жести.
        Теперь «Прочитано 19252 раз».
        Drupal там вроде бы пока выдерживает.
        • 0
          Тогда правда помоему табличка была опубликована полностью а не «частично, с сокращениями».
          Насколько я помню тогда там расшифровывались всякие «НЗВ» и т.д.
        • 0
          Заодно проверите устойчивость Drupal к нагрузке :)
    • +3
      1.2 Состояние половых органов видеообъектов
      1.2.5. Одна НЗВ; 2)( – две… и т.д.

      и всё заверте…
      • 0
        читааем, читааем Аверченко ))
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Сервис-Гид
        • +4
          грёбанный же буфер у этого обмена…
    • 0
      ДПО
      2.1.2. Демонстрация ПО (объект занимает позу оптимальную для обзора ПО)


      O_o
    • 0
      404 :(

      сервер может и выдержал нагрузку, а вот админы похоже встревожились :)

      а что там было?
      • 0
        да похоже снесли…
        там было то про что был этот видеосюжет вести24
        www.sgu.ru/node/52498
  • +72
    А видео с ленивыми молчаливыми негритянками обрабатываются корректно?
    • +14
      Угрюмые негритянки — это то, что остается теперь смотреть некоторым офисным работникам.
    • –1
      Месье знает толк в извращениях. )
    • 0
      Хорошие у вас познания в этой теме.
  • +1
    Где статистика?
    • 0
      Со статистикой не так все однозначно. Напишем в других статьях. В двух словах, мы классифицируем отдельные фрагменты, но для заказчиков интересна классификация целых роликов (что правильно). Например, один видеохостинг тестировал нашу систему. Они прислали 30 тыс. роликов. На целых роликах balanced accuracy получилась 0.87
  • +26
    Интересно смотрятся в статье эти параметры: (Y) и (U)
  • +56
    Я вот читал где-то, что количество и доступность порнухи, обратно пропорциональны количеству случаев сексуального насилия в оффлайне. Представляете, из-за вашего фильтра могут пострадать люди!
    • –17
      Я вот где-то читал совершенно противоположные данные…
      Если человек себя последовательно развращает, когда-то ему захочется большего.
      • +1
        Отличная характеристика для резюме: «последователен в разврате» :)
      • –2
        Хм… впечатление такое, что целомудрие и Хабр — вещи не совсем совместимые… Жаль.
  • +3
    А сколько в среднем времени занимает анализ одной минуты ролика?
    • +5
      Сейчас 30 сек. Но еще есть куда оптимизировать. Например, Bag of Visual Words считаем на GPU (CUDA), остальные пока нет.
  • +1
    а почему не HSV?
    • +2
      Пробовали разные, по по нашим тестам получилось, что лучше YUV.
      • 0
        спасибо :)
  • +5
    >> тренируем нашу модель на тренировочном множестве объектов;
    точно, это про порно ;)
  • +7
    А вот теннис с Шараповой пропустит ваш фильтр?
    • +43
      Вообще, негритянки, Шарапова — это все не то. Классификатор чаще ошибается на роликах, где гитаристы крупным планом играют руками на своих желтых гитарах, или бабушка (опять же крупным планом) руками вяжет свитер, или трудолюбивый слесарь обрабатывает деталь драчёвым напильником.
      • +67
        трудолюбивый слесарь обрабатывает деталь драчёвым напильником [x]
        • +1
          ох, ну нельзя же так :)
          • +3
            Скажите спасибо, что не:

            или бабушка (опять же крупным планом) руками [x]

            Мне прям самому стыдно стало :)
            • 0
              Вспоминается фильм Всегда говори «Да» с Джимом Керри.
      • +14
        А где политик крупным планом говорит ртом на своём лице?
        • +4
          Ага, точно. Бывают и такие. когда говорит и ритмично головой кивает.
          • +1
            и стонет :)
        • +4
          Знаете, я не буду против если ваши фильтры такое будут блокировать =)
        • 0
          > Говорит ртом на своём лице
          Ну и словосочетание… А может он говорит ртом на своей заднице?
          • 0
            Некоторый так и делают.
  • +8
    Так и вижу на крутопе новую нишу «недетектящееся порно» )
  • +3
    Слайды будут ;)
    • +3
      Ой, это вопрос.
      • +2
        Да давайте уже :)
  • +25
    Куда отправлять резюме? :)
  • 0
    > Перед нами была поставлена задача
    Рутубом?
    • +5
      Руководством нашей компании.
  • +1
    После запуска вашего алгоритма, вы вручную проверяете решение или решение принимает автоматика?
    • 0
      Чтобы оценить точность работы, мы тестируем на выборке, в которой мы уже руками отделили порно от непорно. А когда система работает, все зависит от пожеланий заказчика. В общем случае, мы говорим (автоматически), где порно, а где нет, при этом ролики сортируются по «порнографичности» (для удобства модерации, если она есть). Можем так же вырезать самый «порнушный» фрагмент ролика.
  • +2
    Весьма сложная задача у вас, даже не представляю, как можно написать алгоритм, который с большой вероятностью отличает подобный контент. Исключений для не срабатывания алгоритма можно придумать огромное множество. А точки опоры (детекторы) для определения признака контента весьма шаткие, и принимать решение по суммарному показателю, весьма не надежно (это моё субъективное мнение).

    Мне будет интересно почитать ваши следующие статьи, возможно я ошибаюсь.
  • 0
    А можно пример ролика и как-то выделить сцены определенные вашим анализатором?
  • +2
    Ваша работа станет легче, если пить чай с бромом.
    • +3
      это Вас в армии научили??
      • +2
        давным давно уже никакого брома там нет
    • +2
      Просто придется меньше отвлекаться и прерывать просмотр… ;)
  • 0
    Вы не написали об эффективности вашего метода.

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

    Как вы будете детектировать например нарисованного кролика, который вульгарно и пошло занимается секасом с крольчихой? :-)
    • +5
      А разве это порнография, а не «в мире животных»? :)
      • +1
        я имел ввиду xeнтaй
    • +1
      Чем занимается?
  • +1
    Наличие звука человеческого (преимущественно женского) голоса.

    Т.е. нетрадиционное порно этот фильтр пропустит? :)
  • –4
    Ваши слова, да Паше в уши…
    habrahabr.ru/blogs/social_networks/116077/
    • 0
      Опять я опоздал…
  • +2
  • 0
    На личной жизни работа не сказывается? :)))
  • +2
    скриншотов добавьте ))
  • +2
    Эй, Inventos, а каким боком у вас ссылка «О компании» с иконкой Konqueror? Набор иконок KDE 3.5 на сайте это сильно =)
    • 0
      Тут, кстати, рядом в соседнем топике как раз лого Debian обсуждали…
      borges, тащи все же адвоката =)
  • +1
    Хм, еще немного и можно сделать Inventos PornoReader, выдающий сценарии и книги на основе фильмов :)
  • 0
    На днях поднимали этот вопрос в топике о запрете порно в контакте. Думал, что только ручная модерация справится, а тут кто-то над автоматической работает и вроде бы успешно. Но всё-таки интересно, насколько успешно система отделяет жесткую эротику от легкого порно. То есть не те случаи, когда и человек без ошибки скажет, а когда и разные эксперты разное говорят, а суды разных инстанций, руководствуясь своей совестью, выносят разные приговоры. Или задача всё же стоит не фильтрация порнографии от эротики с последствиями вплоть до вынесения приговора о лишении свободы, а просто «взрослого» видео от «семейного»?

    С авторскими правами ещё интереснее — имеется (будет иметься) база защищенных фильмов и система будет выносить вердикт на совпадение с одним из них или на основании каких-то детекторов сможет сказать, что публикация вероятно нарушает авторские права, но вот чьи и на что неизвестно?

    И что допустимо больше в обоих случаях (порно и копирайт) — ложноположительные ошибки (попадание «важного письма» в «спам») или ложноотрицательные (попадание «спама» во «входящие»)?
  • +21
    А как быть с этим? :]
    image
    • +5
      Посмеяться, разослать друзьям и забыть.
      Или вы про лошадь? :)
  • 0
    Думаю, будет много проблем:

    Всевозможные спортивные соревнования (в особенности различные варианты аэробики)
    Уже упоминавшиеся здесь мясники-женщины, рубящие свинину и прочее мясо
    Крупные планы лысых людей (особенно барабанщиков, играющих ритмичную музыку)

    И это только начало!
    • +2
      Один я не видел неодного видео с мясником женщиной рубящей свинину и прочее мясо?
      Это я к тому, что контр-примеры должны быть реальны.
      • +1
        Лысую женщину барабанщика рубящую «мясо» в компании гитариста.
        • +1
          Стресс!
  • +2
    По-моему, здесь проводятся самые масштабные разработки в этом направлении — www.yangsky.com/products/porndetect/index.htm
    • 0
      Да, это конечно видели. Не знаю, как сейчас у них обстоят дела, но когда только это нашли, не смогли нормально протестировать точность классификации. К тому же, работала эта штука очень долго.
  • 0
    «Приходит клизма с работы домой, включает телевизор — а там порно. Эх, и тут работа!» :-)
  • 0
    Почитал. Первое что приходит в голову — пропускает ли фильтр клип Rammstein — Sonne и как тут верно подмечено вестерны с индейцами и скачками на лошади.

    Есть где-то в интернете frontend к фильтру чтобы ему можно было ролик скормить и посмотреть что он скажет?
  • +24
    Ну, вы в курсе:
    image
    • 0
      кто не в курсе — бендер рассматривает схему роботихи
    • 0
      А куда базу транзистора потеряли? Или это зацензурено? %)
  • +33
    т.е. с помощью вашего фильтра, можно будет находить в длинном фильме порно-сцены и смотреть только их!?

    «Вашему изобретению цены нет, гражданин! … Скажите, и в магазине можно так же стенку приподнять?» © Иван Васильевич меняет профессию
    • 0
      Вы золотой человек!
  • 0
    Слайды, слайды!!!
  • 0
    На Курниковой ваш фильтр слажает.
  • 0
    А Вы в конце концов какие ролики выбрасываете — прошедшие фильтр или не прошедшие? И куда выбрасываете? :)
  • +13
    Порно детектед?

  • 0
    Пятничный пост.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +2
      Зенитчики же!
      • 0
        Зенитчики ни сами, ни другим :)
        А эти смотрят :)
  • 0
    «И это все? Конечно же нет. Это только ВВЕДЕНИЕ.» — это меня окончательно добило :)
    • 0
      Слово «Введение» в данном контексте звучит весьма двусмысленно :)
      • +1
        Работа накладывает отпечаток…
  • +2
    Серьёзная работа. Конечно, всю фантазию не охватишь, но процентов 75 точно ваши.

    А главное:
    Известная задача про «Фидель Кастро ест банан» стала разрешимой?
  • 0
    А хентай ваши фильтры детектят?
  • +2
    Внезапно вспомнилось видео «Как озвучивают порно». Забанят ведь бедную бабушку ваши алгоритмы!
    • +5
      Ах этот парсер! Бабушка: www.youtube.com/watch?v=UGQdO5vguTE
      • 0
        Бедная бабушка. У неё ведь тоже есть, наверное, внуки.
  • 0
    Порно в одежде будет пользоваться повышенным спросом :)
    • 0
      Дада, в одежде, молча, дергаными неритмичными движениями…
  • 0
    Раскажите подробнее про Bag of Visual Words, не совсем понятно как эта технология работает
  • 0
    Эндрю Блейк обойдет ваши фильтры
  • 0
    Фу, силиконовые!..
  • 0
    К вам вопрос.
    Почему вы решили выкидывать Y из цветовых координат?
    Ведь и большинства таких роликов яркость отличается, например от роликов с волейболом, бабушками, гитаристами.

    Использовали или собираетесь ли вы использовать технологию айтрекинга?

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

    Как отследить есть много различных способов. Самые простые из них реалистично соорудить в домашних условиях (с погрешностью 3%). Знаю по своему опыту. Правда мы это использовали для поиска артефактов в результате сжатия видео.

    Для чего в итоге это полезно:
    • выявить наиболее заметные для человека элементы кадра (или набора кадров) в порно;
    • выявить второстепенные области ритмичного движения в кадре, чтобы потом отсечь;
    • выявить как человеческий глаз себя ведет при просмотре порно и с какими изменениями параметров YUV (но не с абсолютными значениями) это еще связано. И потом искать по вот таким изменениям;


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

    — 1) Ритмичное движение в порно будет или в центре кадра или на линиях кадрирования. Это будет зависеть от профессионализма оператора. Последнее можно будет оценить априори по качеству самого видео на первых кадрах (первые 50, например).
    2) Ритмичное движение не в порно будет в иных местах кадра.

    Для 1 и 2 совсем не нужен никакой айтрекинг, но с помощью него можно будет проверить, куда смотрит зритель. И как-то скорректировать точки наибольшего внимания для данного класса (порно \ не порно) видео.

    Или я опережаю события?

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

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.