Меня зовут Васильев Евгений, и команда в составе Дмитрия, Вячеслава и меня заняла 2 место в кейсе Ростелекома на хакатоне "Цифровой прорыв", региональный тур которого проходил в Нижнем Новгороде 13-14 сентября, и забрала приз в 100 тысяч рублей. После просмотра решений всех команд и возникла идея для данной заметки с громким названием.
Задание кейса: Разработка системы мониторинга за поведением студента во время экзамена
Описание кейса
Все ушли на удаленку. И даже учебные заведения. Зачеты, экзамены и сессии никто не отменял. И если в оффлайн экзамене существует тысяча способов списать, чтобы преподаватель не заметил, то при сдаче экзамена онлайн способов списать в разы больше Эту проблему мы и предлагаем решить в рамках хакатона с помощью машинного обучения и компьютерного зрения.
После того, как было прочитано задание, мозг сразу закипел в раздумьях. Первое, что пришло в голову - библиотека OpenVINO и репозиторий Open Model Zoo, ведь там есть классные примеры по распознаванию человека, по детектированию положения головы и направления глаз - самое то для кейса по анализу поведения студента перед веб-камерой.
Библиотека моделей и семплов OpenVINO к 2020 году стала настолько обширной, что с ее помощью можно быстро сделать базу для почти любого проекта, связанного с компьютерным зрением. В библиотеке есть семплы и на си, и на C++, но мы конечно же будем использовать в хакатоне демки на Python, для максимально быстрой интеграции с вебом и базой данных. Кстати, в поиске по GitHub можно найти примеры веб-приложений для OpenVINO, но их тяжеловато персонализировать под свой проект, поэтому проще сделать веб отдельно с нуля. В качестве альтернативного варианта можно посмотреть собранные докер контейнеры с инференсом OpenVINO и простым веб-сервером по REST API.
В частности, в нашем проекте по детектированию списывания на онлайн-экзаменах Вячеслав разрабатывал сетевую составляющую проекта по передаче видео из браузера на сервер для обработки, а Дмитрий реализовал с помощью OpenVINO каскад из восьми глубоких моделей (face-detection, pedestrian-detection-adas, emotions-recognition-retail, facial-landmarks-35-adas, head-pose-estimation-adas, open-closed-eye, gaze-estimation-adas, face-reidentification-retail), который использовался для того, чтобы найти студента и идентифицировать его, определить направление его взгляда, а также обнаружить людей рядом, которые могут ему подсказывать. Весь проект описывать здесь не стану, задача создания веб-интерфейса сервиса и оркестрирования выходят за рамки темы статьи.
8 команд дошли до финальной защиты своего проекта, и слушая выступления капитанов команд, я с удивлением обнаружил, что больше чем в половине проектов использовался OpenVINO (и в одном еще OpenCV, но возможно там без глубоких моделей). Библиотека с демками для OpenVINO оказалась такой обширной, что с ее помощью можно сделать базу для практически любого проекта, связанного с компьютерным зрением, что и продемонстрировали команды.
Мы шли на хакатон с целью попрограммировать, поставить себе серьезную задачу и решить в краткие сроки. Но во время хатакона выяснилось, что такие аспекты решения, как экономический эффект, стратегия развития и роадмап, конкурентоспособность на рынке, и качество презентации будут играть значительную часть в финальной оценке проекта, и я переключился на формирование многосторонней концепции проекта и того, как его представить жюри. Огромное спасибо нашим менторам, они реально подтянули нас с презентацией и пониманием всей глубины проекта. Роман Цыбенко, Нестор Архангельский, Михаил Дронов - большое спасибо за вашу помощь.
Если посмотреть на остальные кейсы мероприятия, то два из них также относились к компьютерному зрению. Это кейс "Разработка системы диагностики дефектов воздушных линий электропередачи по данным фотосъемки с беспилотных летательных аппаратов"от Росссетей и "Разработка системы, предотвращающей публикацию видеоконтента, не соответствующего требованиям законодательства" от Газпром-медиа. И если для первого задания мне не подобрать сходу подходящей сети, то вот для второго кейса вполне можно было начать с Action Recognition Python Demo c использованием предобученных моделей action-recognition-0001-encoder + action-recognition-0001-decoder из OpenVINO. Эти модели натренирована на датасете kinetics-400, и в них есть распознавание курения, употребления алкоголя, что могло бы помочь с демонстрацией MVP вашего продукта по фильтрованию видео, а оставшееся время можно было бы посвятить слайдам с демонстрацией подхода, проблематикой, масштабируемостью, экономическим эффектом и прочими аспектами проекта, на что любят смотреть эксперты и что так не хочется делать программистам.
В общем, если вы вдруг решите участвовать в хакатоне по компьютерному зрению, обязательно посмотрите репозиторий c готовыми демо-приложениями и готовыми моделями OpenVINO, и вполне возможно, что вам не нужно мучительно делать работоспособный MVP, а можно начать строить серьезное приложение на базе OpenVINO.
bugdesigner
Ну, ок. 1-й способ: открываем окошко мессенджера, рядом (вне поля зрения камеры) сидит "суфлёр" и строчит подсказки а мессенджер. Глаза смотрят прямо в монитор.
2-й способ. Допустим, по требованию экзамена, установлен "шпион", который запрещает использование мессенджеров, дополнительных окон итп. Прийдется потратиться на монитор с PIP и второй комп. Далее схема аналогична 1-му варианту.
Можно придумать ещё несколько прграммно-аппаратных методов обмануть систему.
FenixFly Автор
Любая из систем прокторинга это борьба меча и щита, то новые пути обхода, то новые методы защиты. Мы думали подключить в вторую камеру сбоку для исключения помощи человека за вебкой, но на хакатоне было слишком мало времени чтобы реализовать всё.
FenixFly Автор
Если у студента 4-5 экзаменов каждый семестр, он разорится на суфлерах)))
Ajex
Ну как способ защиты, заставить приобрести вторую камеру, которая бы смотрела сзади. Но есть еще наушники и прочее.
А по взгляду определять, тут можно переиграться. Например есть глазодвигательные реакции в зависимости от того что человек сейчас делает, вспоминает или представляет. Например обращение к памяти — глаза вверх. А будет казаться, как будто человек смотрит на суфлера.