Эта система «подсвечивает» нарушения, подсказывает, на кого и на что обратить внимание. В результате один преподаватель может контролировать разом несколько десятков студентов, сидящих у себя дома.
Такой подход к онлайн-обучению, прокторинг, первыми внедрили Coursera и Udemy. Разработчики ProctorEdu задумали собственную систему прокторинга в 2016 году именно для учебных заведений, но вскоре поняли, что она способна решать другие, более серьезные задачи.
В конце концов, многие хотя бы раз в жизни списывали в школе или вузе, и мир до сих пор не рухнул, но в некоторых ситуациях жульничество на экзаменах приводит к серьезным последствиям.
Взять тестирование на знание основ информационной безопасности. Сотрудники — уязвимое звено в защите любой компании, и было бы действительно здорово, если бы все они выучили базовые меры предосторожности. Возможно, тогда бы Uber не оштрафовали на $1.2 млн. за утечку персональных данных, и не произошло скандала со взломом Twitter.
А ведь есть ответственная и опасная работа, где от знания должностных инструкций и техники безопасности зависят жизни людей.

Примеров много: от управления поездом до вахты на буровой платформе в открытом море. Это не говоря об экстремальных ситуациях, когда раздумывать просто некогда и нужны готовые, заученные решения.
Как правило, во всех этих сферах сотрудников регулярно обучают, тестируют и аттестуют, но часто это воспринимается, как формальность. К тому же, при популярных сейчас онлайн-экзаменах контролировать соблюдение правил довольно сложно.
Конечно, можно приставить к каждому участнику по проктору, следящему за соблюдением регламента из объектива веб-камеры, но чтобы всерьез протестировать персонал крупной компании за разумные сроки, потребуется целый взвод наблюдателей.
Разработчики ProctorEdu решают эту проблему при помощи нейронных сетей и нескольких десятков других алгоритмов, которые распознают нарушения по набору настраиваемых параметров.
Как это работает
Во время экзамена ProctorEdu ведет запись с камеры, микрофона и экрана компьютера.

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


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


Проктор может развернуть видео на весь экран и приглядеться к происходящему, объяснить участнику, что тот делает не так, предупредить о нарушении, приостановить или досрочно завершить экзамен.
Такая технологическая поддержка облегчает работу проктора, ускоряет проведение онлайн-экзаменов и аттестаций и позволяет сохранить высокую достоверность результатов.
Ограничения браузера и детекция лиц
Запись камеры и экрана, распознавание лиц, логирование клавиатуры… Это звучит не секьюрно, поэтому разработчики ProctorEdu сознательно отказались от идеи устанавливать свое ПО на компьютеры участников экзамена.

ProctorEdu работает через браузер при помощи супервизор SDK — JavaScript-библиотеки, в которой реализованы алгоритмы машинного обучения.
SDK не требует установки расширений и плагинов. ProctorEdu интегрируется с сервисом онлайн-тестирования при помощи стандарта IMS LTI или нескольких API-команд. Система запускается на странице тестирования и работает параллельно с ним.
Это удобно для пользователей, и браузер с его политикой безопасности дает независимую гарантию того, что данные собираются только во время экзамена.
Конечно, с таким подходом связаны определенные сложности. Разработчики сами наложили на себя ограничения, с которыми теперь вынуждены жить. Например, у системы нет доступа к оборудованию, процессам, окнам и другим ресурсам компьютера. Поэтому тестирование проходит в той же вкладке, где работает прокторинг. Это позволяет отслеживать переключение фокуса на другие вкладки и окна. Есть и нюансы, связанные с архитектурой и нейросетями.
Распознавание лиц в ProctorEdu реализовано при помощи сверточных нейросетей с использованием OpenCV и Dlib. Они регулярно переобучаются на свежесобранных данных. Для детекции лиц используется отдельная модель.
Разработчики с самого начала планировали запустить эти алгоритмы в браузере. Обычно такие задачи решают при помощи компиляции C++ в WebAssembly (Wasm). Считается, что это хорошая практика.
Чисто теоретически Wasm работает быстрее, чем JavaScript сценарий, но на практике выяснилось, что он медленнее, потребляет больше памяти и процессора, весит больше. Только загрузчик такого кода получается от 10 МБ.
Пришлось разрабатывать на JavaScript в несколько итераций. Первые версии были слабенькими и часто ошибались, но со временем команда ProctorEdu добилась стабильной работы и вывела это решение в продакшн.
Получилось быстро и компактно, но через какое-то время Сколтех пожаловался, что система не видит некоторых студентов. Оказалось, что курсы этого института проходит много чернокожих ребят, которые подключаются прямо из Африки, и алгоритм действительно не всегда их замечает.
За время обучения нейронка видела достаточно людей разных рас и возрастов, никто не ожидал возникновения такой проблемы. В конце концов выяснилось, что сетка здесь ни при чем, а дело в засветке. Африка просто слишком солнечная.
Если за спиной студента окно, или он сидит на ярком солнце в белой с иголочки рубашке, камера выставляет экспозицию по самому светлому участку изображения. Черты лица затемняются, сливаются, и алгоритму не с чем работать. Пришлось добавить рекомендации по освещению в инструкцию для участников экзамена.
Сейчас разработчики планируют перенести в браузер и алгоритм распознавания лиц. Пока что модель великовата (20—30 Мбайт с учетом сжатия), это в то время как все SDK весит около 1 мегабайта. Но здесь стоит постараться и найти решение.
Когда все изображения будут распознаваться в браузере, расходы на хостинг сократятся на добрых 30%. К тому же, на сервер будут передаваться только дескрипторы, по которым нельзя восстановить оригинальное изображение, а фото и документы так и останутся на компьютерах пользователей.
Серверная часть ProctorEdu
Кстати, об архитектуре системы.

Архитектура ProctorEdu включает отдельный сервис под API распознавания лиц и документов, и TURN-сервер для координации WebRTC-подключений между компьютерами участников.
Раньше для видеосвязи использовался медиасервер, через который проходили видеопотоки всех клиентов. Но разработчики быстро поняли, как тяжело приходится онлайн-кинотеатрам: то соединения отваливаются, то данные не передаются, то память переполняется — вечно какие-то сложно диагностируемые проблемы. Когда они перешли на p2p архитектуру, проблемы решились сами собой.
Вся система поддерживает горизонтальное масштабирование. Ее компоненты упакованы в контейнеры. Их можно разбросать по разным физическим серверам и собрать кластерную конфигурацию в режиме мастер-мастер. Тогда нагрузка будет распределяться равномерно.
Обычно ProctorEdu разворачивают на базе одного из российских хостингов, поддерживающих хранение персональных данных, но систему можно запустить и на локальном сервере, как в проекте с МГУ и КРОК.
Требования к железу невысокие: компьютер с восьмиядерным процессором и 8 ГБ оперативной памяти потянет порядка 500 одновременных сессий. Однажды ProctorEdu обслуживала больше 5 тыс. одновременных участников экзамена и понадобилось всего 6 серверов для обработки клиентских запросов.
Можно ли обмануть систему?
Можно, но не так, как это обычно пытаются сделать.
В торговых сетях, где используют ProctorEdu, часто бывает так, что один сотрудник пытается пройти тесты за весь магазин. Порой пользователи подменяют видео с камеры на какую-нибудь видеотрансляцию. Так, однажды разработчики наблюдали, как тесты по технике безопасности на предприятии проходила известная порноактриса.
Был случай, когда один из участников подготовился особенно серьезно: напечатал чужое фото на листе А4, вырезал глаза, привязал резинку и использовал как маску.

Раньше можно было поставить смартфон перед монитором так, что его не было видно с фронтальной камеры. Казалось, что участник постоянно смотрит только на монитор. Теперь ProctorEdu обеспечивает и боковой обзор. К системе подключается вторая камера или тот же смартфон.
Еще можно попробовать списывать при помощи удаленного рабочего стола или виртуальной машины. Отследить их с вкладки браузера практически невозможно. Чтобы закрыть эту возможность, в систему добавили интеграцию с Safe Exam Browser.

Конечно, и это не панацея. Если постараться, Safe Exam Browser можно обмануть. Еще можно раздобыть скрытые наушники или аппаратный сплиттер для мониторов. Любой алгоритм можно обойти, вопрос лишь в том, сколько усилий для этого потребуется. ProctorEdu делает так, чтобы было проще выучить, чем смухлевать. И наши клиенты подтверждают, что система успешно справляется с этой задачей.
Источник: https://habr.com/ru/company/croc/blog/553012/