Как обойти фотоконтроль в Яндекс?

Заказ такси в наше время стал самой востребованной услугой. Большое количество сервисов в городах России конкурируют между собой, предлагая выгодные условия для клиентов. Яндекс Такси – один из самых узнаваемых брендов.
Организация работы службы заказа такси онлайн максимально удобна, поэтому сервис имеет постоянный поток заказов и привлекателен для работы водителей. Сервис выдвигает к соискателям строгий ряд требований и внимательно относится к выполнению водителями Яндекс Такси корпоративных стандартов обслуживания. Регулярно контролируется техническое состояние транспортных средств, а проходят дистанционные проверки автомобилей и документов водителей.
Несмотря на гибкий график, прозрачные условия работы и возможность контролировать собственный заработок, некоторые водители, хотят обмануть систему, чтобы получить дополнительный доход или обойти проверки сервиса.

Как обмануть GPS систему

Самый «популярный» вид мошенничества у водителей – это обман спутниковой системы GPS.
Это делается для того, чтобы повысить стоимость заказа путем:
• изменения реального местонахождения;
• смены маршрута, чтобы он стал более длительным.
Для этого в интернете распространены нелегальные приложения, с помощью которых можно передавать неверный сигнал о геопозиции на сервер. Таким образом водитель получает оплату за заказ больше, чем должно быть по факту.

Служба безопасности Яндекс Такси отслеживает возможные случаи мошенничества. Для предотвращения обмана спутниковых систем запустило собственное приложение Анти Fake GPS. С его помощью попытки обмана системы блокируются и водителю грозят серьезные неприятности.

Как обмануть фотоконтроль

Яндекс Такси уделяет достаточно внимания качеству обслуживания клиентов и комфорту поездки. К автомобилям предъявлены высокие требования по внешнему виду кузова, он не должен иметь заметных повреждения, всегда быть чистым. Машины поддерживаются в исправном техническом состоянии и регулярно проходят проверки.

Для этого сервис вводит проверки:
1. Стационарные — на базе сервисного центра проводится диагностика автомобиля и проверка всех документов водителя;
2. Дистанционные – это фотоконтроль. Водители должны регулярно отправлять фото автомобиля, салона и документов через приложение «Таксометр». Запрос на прохождение фотоконтроля автоматически присылает сервис. Если фотоконтроль не пройден, водитель блокируется и не имеет доступа к заказам.
Так как прохождения фотоконтроля обязательно, и без него нет возможности работать, у некоторых водителей возникает идеи обмануть Яндекс Такси, проходя эту процедуру:
• если на кузове имеются недопустимые дефекты, водители пытаются делать снимки автомобиля под определенным ракурсом или при плохом освещении, чтобы их скрыть. Такой вариант обмана невозможен, потому что сервисом предъявлены строгие требования по качеству фотографий. На официальном сайте доступна подробная инструкция по прохождению фотоконтроля и описания всех обязательных снимков автомобиля. Менеджеры сервиса внимательно проверяю фотографии, и водителю приходит отчет с рекомендациями в случае, если фото проверку не прошли;

• отправлять на фотоконтроль снимки, сделанные ранее. Сервисом проверяется дата и время, в которое сделаны фотографии, поэтому такой вариант обмана тоже легко разоблачается;
• сделать фото чужого транспортного средства.
Также сервис легко распознает и не принимает скриншоты и фотографии монитора других устройств. Все стандарты проверок Яндекс Такси настолько четкие, что обойти систему контроля становится невозможно.

Как обойти блокировки и черный список

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

В связи с этим водители ищут другие способы выйти из черного списка:
1. Регистрация аккаунта на чужое имя.
2. Смена водительских прав.
Первый способ незаконный и может повлечь за собой административные штрафы. Кроме того дальнейшая работа в такси станет невозможной.
Второй способ может сработать, ведь Яндекс Такси формирует базу данных водителей именно по водительским удостоверениям. Поэтому при смене прав вся информация будет внесена заново.
Яндекс Такси отслеживает и пресекает случаи мошенничества недобросовестных водителей. Если убытки компании в результате обмана таксиста значительны, то это может привести к судебным разбирательствам.

Мошенники в интернете

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

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

Сегодня я расскажу читателям Хабра о том, как с помощью машинного обучения снизить затраты на контроль качества в быстро растущем сервисе с сотнями тысяч машин и не выпустить на линию машину, которая не соответствует правилам сервиса.

Как был устроен ДКК до прихода машинного обучения


Схема процесса ДКК

В процессе ДКК мы проверяем фотографии автомобиля и принимаем решение о том, можно ли выполнять заказы на таком автомобиле или, например, перед этим его стоит помыть. Всё начинается с того, что через водительское приложение Таксометр мы вызываем водителя на ДКК. Обычно это происходит раз в 10 дней, но иногда реже или чаще – в зависимости от того, насколько успешно водитель проходил предыдущие проверки. Сразу после вызова на ДКК, водителю приходит сообщение с приглашением пройти фотоконтроль. Как только водитель принял приглашение, в том же приложении он фотографирует экстерьер и интерьер машины с разных ракурсов и отправляет фотографии Яндекс.Такси. Водитель может принимать заказы пока идёт ДКК.


Стартовый экран ДКК в приложении Таксометр


Экран фотографирования автомобиля в приложении Таксометр

Полученные фотографии попадают в Яндекс.Толоку — сервис, в котором с помощью краудсорсинга можно быстро выполнять простые, но большие по объёму задания. О том как устроена и зачем нужна Яндекс.Толока мы писали в нашем блоге.

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

  • Если визуально с автомобилем всё в порядке, водитель продолжает принимать заказы.
  • Если автомобиль грязный, повреждён, либо его марка, цвет или номер не соответствуют указанным в карточке водителя, Яндекс.Такси временно ограничивает возможность водителя принимать заказы.

Если исполнители не пришли к единому мнению, фотографии отправляют к сотрудникам Яндекс.Такси — асессорам, которые более тщательно проверяют автомобиль, а затем принимают финальное решение. Асессоры проходят специальную программу обучения и у них больше опыта.


Так видит ДКК исполнитель Яндекс.Толоки

Задача

C ростом Яндекс.Такси растёт и количество проверок ДКК, а это значит, что растут затраты на толокеров и асессоров. Кроме того, падает скорость проверки автомобиля. Пока идёт ДКК, можно как разрешать водителям принимать заказы, так и не разрешать. У обоих вариантов есть свои минусы: в первом случае недобросовестный водитель успеет принять несколько заказов на автомобиле, который не соответствует стандартам, во втором — все вызванные на фотоконтроль водители не смогут работать пока проверка не завершится. Поэтому важно проверять автомобили быстро, чтобы и пользователи, и водители не сталкивались с неудобствами.

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

Как мы внедряли машинное обучение в ДКК


Схема процесса ДКК с ML внутри

Для начала мы определились с постановкой задачи: автоматизировать как можно больше проверок, при этом не увеличив частоту ошибок в общем потоке.

Давайте разберёмся с тем, какими бывают ошибки в нашей задаче. Они бывают двух видов: false positive и false negative. В нашей терминологии negative — результат проверки, с которым водитель может продолжать работать, а positive — результат, который влечёт за собой временное ограничение на приём заказов. Тогда false negative — случай, в котором мы были вынуждены разрешить водителю с плохим автомобилем принимать заказы, а false positive — наоборот, когда мы не разрешили работать водителю, у которого с автомобилем всё хорошо. Выходит, что False Negative Rate (FNR) — доля водителей с «плохими» автомобилями, которым мы разрешили принимать заказы, а False Positive Rate (FPR) — доля водителей, которым мы не разрешили работать, хотя у них с автомобилями всё хорошо. Таким образом, от внедрения машинного обучения в систему мы хотели следующего: автоматизировать как можно больше проверок, при этом не увеличив FPR и FNR в сравнении с системой без машинного обучения.

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

  • Доля потока, на который модели машинного обучения могут дать ответ автоматически.
  • FNR системы.
  • FPR системы.

Мы максимизируем первую величину при соблюдении ограничений на вторую и третью.

Тут может возникнуть вопрос: почему бы не максимизировать экономию денег или минимизировать среднее время проверки напрямую, а не через долю автоматизированных проверок? Оптимизировать деньги — очень привлекательная идея, но, как правило, трудноосуществимая. В нашем случае экономия складывается из двух факторов: первый — экономия с каждой автоматизированной проверки, ведь каждая проверка у асессоров или в Яндекс.Толоке стоит денег; второй — экономия с уменьшения числа ошибок, ведь каждая ошибка стоит Яндекс.Такси денег. Объективно посчитать, во сколько нам обходятся ошибки, — очень сложная задача, поэтому мы ограничены расчётом экономии только по первому фактору. Такая величина монотонно возрастает по доле автоматизированных проверок, так что можно максимизировать эту долю вместо экономии. Такие же рассуждения применимы к среднему времени ДКК, оно так же монотонно убывает по доле автоматизированных проверок.

Выбор модели

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

Первый вариант решения или подход «всё и сразу»

Теперь, когда мы поняли, что оптимизировать и для чего, настало время собрать данные и обучить на них модели. Собрать данные было легко, потому что все проверки ДКК логируются и лежат в хранилище в удобном виде. В первом варианте решения в качестве признаков выступали фото экстерьера и интерьера машины с четырёх ракурсов, марка, модель и цвет машины, а также результаты 10 предыдущих проверок ДКК. Как целевые переменные мы взяли ответы на все вопросы проверки, например: «Повреждён ли автомобиль?» или «Соответствует ли цвет автомобиля указанному в карточке водителя?». Главной целевой переменной был ответ на главный вопрос: «Нужно ли ограничивать возможность водителя принимать заказы?». Мы учили одну большую модель, очень похожую на VGG с SENet attention, отвечать на все вопросы одновременно и в итоге столкнулись с несколькими проблемами.


Подход «всё и сразу»

Проблемы подхода «всё и сразу»:

  1. Мы не могли ответить на вопрос о соответствии номера автомобиля на фото указанному в карточке водителя. Большая сеть для классификации изображений не справлялась с такой задачей, для этого нужна специальная модель Optical Character Recognition (OCR), заточенная распознавать номерные знаки.
  2. Целевая переменная была неполной и зашумлённой. Находя во внешнем виде автомобиля серьёзный недочёт, которого было достаточно для принятия решения, асессоры зачастую забывали ответить на остальные вопросы. А значит, если автомобиль на фото был одновременно и грязным, и битым, то с высокой вероятностью мы наблюдали только одну из отметок: «грязный автомобиль» или «автомобиль с повреждениями», в то время как для нашей модели требовались обе.
  3. Отсутствовала интерпретируемость решения модели. Модель могла с точностью выше случайной ответить на главный вопрос проверки, но этот ответ слабо коррелировал с ответами на остальные вопросы. Иными словами, если ответ был: «Стоит ограничить возможность принимать заказы», — мы почти никогда не видели причину такого решения в остальных ответах модели. В целом, точность ответов на все вопросы, кроме главного, была близка к случайной. Мы не могли объяснить водителю, что именно нужно исправить, чтобы снова принимать заказы, а значит, не могли ограничивать возможность водителя принимать заказы.
  4. Количество ошибок false negative в ответе на вопрос: «Нужно ли ограничивать возможность водителя принимать заказы?» — было слишком велико, чтобы начать автоматически одобрять проверки. Мы не смогли обеспечить такой же FNR, как в системе, работающей без машинного обучения, а это было одним из требований в нашей задаче.

Вместе эти четыре причины не позволили нам применить первый вариант решения на практике, но мы не стали унывать и придумали второй вариант.

Второй вариант решения, или подход «всё, но постепенно»

Мы решили сосредоточиться на проверках экстерьера машины, ведь они составляют около 70% всего потока. Кроме того, мы решили разбить общую задачу на подзадачи и научиться отвечать на все вопросы ДКК по отдельности.


Подход «всё, но постепенно»

Когда-то давно наша служба уже занималась автоматизацией ДКК и успела внедрить модель, которая позволяет фильтровать тёмные и нерелевантные фотографии. Эту модель мы продолжили использовать и дальше, чтобы отвечать на вопрос: «Присутствуют ли следующие настоящие фотографии машины: перед, левый бок, правый бок, зад?».

Наша работа над вторым вариантом решения началась с того, что мы использовали модель службы компьютерного зрения Яндекс.Поиска (от тех самых людей, которые сделали DeepHD) для распознавания номерных знаков на автомобилях. Так мы смогли ответить на вопрос: «Соответствуют ли полностью номер и код региона автомобиля указанным в карточке водителя?» Если говорить об этом более подробно, мы сравнивали результат распознавания с указанным в карточке водителя номером и в зависимости от расстояния Левенштейна между ними выбирали один из вариантов ответа: «номер совпадает», «номер не совпадает» или «нельзя точно ответить на вопрос».

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

В завершение мы обучили классификаторы находить повреждённые и грязные автомобили, это позволило закрыть вопросы: «Есть ли повреждения или дефекты на кузове автомобиля?» и «Насколько грязный кузов автомобиля?»

Подход «всё, но постепенно» позволил нам решить проблему проверки номера автомобиля. Также мы смогли избавиться от неполноты и зашумлённости целевой переменной, ведь теперь у нас была выборка, где объектами класса negative были полностью успешные проверки, а объектами класса positive — проверки, где асессор или все три исполнителя Яндекс.Толоки нашли определённый недочёт, например повреждения корпуса. После решения первых двух проблем наши модели стали интерпретируемыми, и мы могли объяснить водителю причину ограничения, чтобы к следующей проверке он исправил недочёты. Общее качество ответов на вопросы также сильно выросло, а FPR и FNR для некоторых комбинаций порогов уверенности моделей упали до уровня Яндекс.Толоки, что позволило внедрять модели в продакшн.

Внедрение в продакшн

Перед нами стоял выбор: запустить регулярный процесс, который будет применять модели к скопившимся в очереди проверкам, или сделать отдельный сервис, куда можно будет ходить по API и получать ответы моделей в реальном времени. Так как для нас важно быстро находить «плохие» автомобили, мы выбрали второй вариант. Как только основная часть сервиса была написана и он смог поддерживать необходимую функциональность, мы начали добавлять в него модели.

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

  1. Собрать выборку.
  2. Обучить модель.
  3. Измерить качество и подобрать пороги офлайн.
  4. Добавить модель в сервис в фоновом режиме и измерить качество онлайн.
  5. Включить модель в продакшн и начать принимать решения на основе её предсказаний.

Такой подход позволил нам не только моментально находить всё больше «плохих» автомобилей по мере внедрения новых моделей, но и без дополнительных временных затрат измерять качество онлайн, пока модели работали в фоновом режиме.

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

Результаты

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

  • 30% проверок экстерьера автомобиля теперь получали автоматический ответ.
  • FNR остался на том же уровне, а FPR упал, и мы стали реже ограничивать доступ к сервису тем, кто этого не заслужил.
  • На 14% снизилась нагрузка на асессоров, и они смогли больше времени уделять сложным проверкам, которые не смог взять на себя сервис машинного обучения.
  • Время обнаружения автомобилей с серьёзными недочётами в ходе проверки сократилось с нескольких часов до нескольких секунд.

Таким образом, внедрение машинного обучения не только помогло сэкономить деньги, но и позволило сделать сервис более безопасным и комфортным для пользователей. Тем не менее, это ещё далеко не конец истории. Наша быстро растущая команда и дальше будет активно работать над тем, чтобы автоматизировать ещё больше проверок и сделать Яндекс.Такси ещё более удобным, комфортным и безопасным.

Мораль истории

В работе над автоматизацией ДКК в Яндекс.Такси мы столкнулись с множеством проблем, отыскали несколько успешных решений и сделали шесть важных выводов:

  1. Не всегда можно решить задачу в лоб (даже если у вас есть Deep learning).
  2. Модель настолько хороша, насколько хороши данные, на которых её обучили (звучит банально, но это так).
  3. В решении любой задачи важно отталкиваться от реальных нужд бизнеса, а не от минимизации кросс-энтропии.
  4. В решении некоторых задач люди по прежнему важны, несмотря на внедрение машинного обучения (привет, Яндекс.Толока!).
  5. Решения на основе предсказаний моделей машинного обучения могут приниматься не во всех случаях, а только в той части, где модели очень уверены в своих ответах. В остальных случаях, вероятно, стоит принимать решения старым способом — с помощью людей.
  6. Помимо выбора архитектуры и обучения модели, есть ещё множество стадий проекта, которые могут очень сильно повлиять на то, как хорошо будет решена задача бизнеса. Эти стадии: сбор данных, выбор метрик качества, варианта внедрения модели, продуктовой логики принятия решений на основе предсказаний моделей и многое другое.

Ещё из интересного про технологии Такси

  1. Динамическое ценообразование, или Как Яндекс.Такси прогнозирует высокий спрос.

  2. Как Яндекс.Такси прогнозирует время подачи автомобиля с помощью машинного обучения.

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

Есть набор рекомендаций, которые необходимо соблюдать при преодолении фотоэкзамена. Вот самые важные из них:

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

Подключитесь к Яндекс Такси в 2 клика и получите оплату от поездок уже в первый день работы!

• ПОДКЛЮЧИТЬСЯ •

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

Нередко потенциальных работников интересует вопрос, связанный с обходом системы контроля. Сразу хотим сообщить, что никакие ухищрения и махинации не достигнут поставленной цели! Более того, неоднократные попытки схитрить непременно приведут к печальным последствиям, а именно – чёрному списку! Поверьте, выбраться из него будет чрезвычайно сложно!

Подключитесь к Яндекс Такси в 2 клика и получите оплату от поездок уже в первый день работы!

• ПОДКЛЮЧИТЬСЯ •