Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[RU] “I, Not Robot". A design of the contemporary CAPTCHA challenges and the future of the Turing test

[RU] “I, Not Robot". A design of the contemporary CAPTCHA challenges and the future of the Turing test

Over the years, the problem of telling humans from robots seemed to be being resolved well by the famous CAPTCHA challenges: Users are expected to recognize a specially distorted text or audio stream which an image — or voice — recognition tool could not handle.

The idea of the talk is to discuss what this area looks like as of 2018, and how it's going to evolve.

More Decks by Artyom "Töma" Gavrichenkov

Other Decks in Programming

Transcript

  1. Постановка задачи • Мы хотим предоставлять сервис только для человеков

    • Но ходят туда не только человеки! • Мы пробовали запрещать всем остальным – они не слушаются!
  2. Простое решение • К счастью, роботы не могут так же

    хорошо распознавать содержимое изображений, как люди
  3. Простое решение • К счастью, роботы не могут так же

    хорошо распознавать содержимое изображений, как люди • Неудачники!
  4. Простое решение • К счастью, роботы не могут так же

    хорошо распознавать содержимое изображений, как люди • Неудачники! • Давайте издеваться над роботами: показывать им картинки, которые они не понимают!
  5. Проблема #0 • К счастью, роботы не могут так же

    хорошо распознавать содержимое изображений, как люди • Прямо-таки любые люди?
  6. Решение, v1 • К счастью, роботы не могут так же

    хорошо распознавать содержимое изображений, как люди • Локализация текста, несколько попыток, подсказки
  7. Проблема #1 • К счастью, роботы не могут так же

    хорошо распознавать содержимое изображений, как люди
  8. Проблема #1 • К счастью, роботы не могут так же

    хорошо распознавать содержимое изображений, как люди • Человеческое зрение – хрупкая и сложная штука
  9. Пример: дальтонизм • Расстройство цветового восприятия • Типы: монохромное, дихромное,

    аномальное трихромное • Небинарное состояние! • Нормальное зрение -> аномалия -> анопия
  10. Дихромное зрение • Недостаток пигментов в цветочувствительных рецепторах (трихроматах) •

    Пигменты: красный, зелёный, голубой (RGB) • Протанопия: отсутствие красного рецептора • Дейтеранопия: отсутствие зелёного рецептора • Тританопия: отсутствие голубого рецептора
  11. Дихромное зрение • Недостаток пигментов в цветочувствительных рецепторах (трихроматах) •

    Пигменты: красный, зелёный, голубой (RGB) • Протанопия: отсутствие красного рецептора • Дейтеранопия: отсутствие зелёного рецептора • Тританопия: отсутствие голубого рецептора • Протаномалия, дейтераномалия, тританомалия
  12. Пример: дальтонизм • Редкость? Нет! • Дейтераномалия: 6% мужчин •

    Те или иные расстройства цветового восприятия: до 10% мужчин • Ухудшается с возрастом
  13. Пример: дальтонизм • Редкость? Нет! • Дейтераномалия: 6% мужчин •

    Те или иные расстройства цветового восприятия: до 10% мужчин • Ухудшается с возрастом • Только один тип расстройства – уже до 5% аудитории
  14. Accessibility focused design • Цветовое кодирование информации – плохая практика!

    • Крупный, разборчивый текст • Важная текстовая информация дублируется аудио
  15. Решение, v2 • К счастью, роботы не могут так же

    хорошо распознавать содержимое изображений и аудиофайлов, как идеальные люди • Проверка: искажённый текст • Accessibility: дублирование аудио
  16. Проблема #2 • К счастью, роботы не могут так же

    хорошо распознавать содержимое изображений и аудиофайлов, как идеальные люди
  17. Проблема #2 • К счастью, роботы не могут так же

    хорошо распознавать содержимое изображений и аудиофайлов, как идеальные люди • Прямо-таки никакие роботы?
  18. image = cv2.imread(captcha_image_file) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) thresh = cv2.threshold(

    gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1] contours = cv2.findContours( thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[1]
  19. model = Sequential() model.add(Conv2D( 20, (5, 5), padding="same", activation="relu", input_shape=(20,

    20, 1))) model.add(MaxPooling2D( pool_size=(2, 2), strides=(2, 2))) model.add(Conv2D( 50, (5, 5), padding="same", activation="relu")) model.add(MaxPooling2D( pool_size=(2, 2), strides=(2, 2)))
  20. for letter_image in letter_image_regions: prediction = model.predict(letter_image) letter = lb.inverse_transform(prediction)[0]

    predictions.append(letter) captcha_text = "".join(predictions) print("CAPTCHA text is: ”, captcha_text)
  21. False P/N • Всё, что основано на обучении, не даёт

    100% гарантии • False positive (ошибка I рода): ложное срабатывание • False negative (ошибка II рода): пропуск события • Любой алгоритм можно настроить на 0% FP или 0% FN • Истина – посредине • Баланс определяется задачами
  22. Распознавание CAPTCHA • Генерируем/размечаем большое число изображений • OpenCV ->

    TensorFlow • Тренировать до победного • 30%-50% успеха вполне достаточно для большинства применений (люди порой не настолько успешны)
  23. Распознавание CAPTCHA • 30%-50% успеха вполне достаточно для большинства применений

    (люди порой не настолько успешны) • Голос распознаётся намного лучше изображений
  24. Распознавание CAPTCHA • CAPTCHA сегодня – это security by obscurity

    • База изображений должна быть большой и храниться в тайне • Алгоритмы генерации не должны быть опубликованы
  25. Решение, v3 • К счастью, простые роботы не могут так

    же хорошо распознавать содержимое изображений и аудиофайлов, как идеальные люди • Закрытый исходный код • Закрытая база данных
  26. Проблема #3 • К счастью, простые роботы не могут так

    же хорошо распознавать содержимое изображений и аудиофайлов, как идеальные люди
  27. Проблема #3 • К счастью, простые роботы не могут так

    же хорошо распознавать содержимое изображений и аудиофайлов, как идеальные люди • Насколько простые?
  28. ReCaptcha v2: поиск предметов • «Отметьте все изображения, на которых»:

    • Дорожные знаки • Автомобили • Мосты • Частные дома (houses) • Здания • Витрины • Рекламные щиты • Люди • Табличка
  29. ReCaptcha v2: поиск предметов • Что общего у этих предметов?

    • Дорожные знаки • Автомобили • Мосты • Частные дома (houses) • Здания • Витрины • Рекламные щиты • Люди • Табличка
  30. Реверс-инжиниринг человеков “aaS” https://www.vicarious.com/ “Vicarious is developing artificial general intelligence

    for robots. By combining insights from generative probabilistic models and systems neuroscience, our architecture trains faster, adapts more readily, and generalizes more broadly than AI approaches commonly used today.”
  31. Решение, v3 • К счастью, простые роботы не могут так

    же хорошо распознавать содержимое изображений и аудиофайлов, как идеальные люди • …
  32. Постановка задачи • Есть хорошие люди и плохие роботы •

    Есть плохие люди и хорошие роботы! • Анализ не свойств, а намерений, действий и последствий • API для удобства автоматической работы