Задача 1: Распознавание лиц
Для этого проекта мы напишем программу, позволяющую распознавать лица с помощью камеры и выводить определения выражений распознанных лиц.
Понимание логики распознавания лиц
За последние несколько лет распознавание лиц стало одним из самых многообещающих способов применения машинного зрения. Обнаружение лица является значимой частью работы по распознаванию лиц.
Метод обнаружения лица на изображении сложен, потому что лица разных людей очень сильно различаются! У них могут быть разные позы, выражения лиц, поворот и угол наклона головы, цвет кожи, очки, усы и борода, или их отсутствие, и т.д. Также различаются и приближение камеры, условия освещения и разрешение изображения.
Обнаружение лица — действие по определению положения лица человека на изображении и, при необходимости, выдаче различных данных об этом лице.
Блоки для распознавания лиц в PictoBlox
Face Detection (Распознавание лиц) в PictoBlox включает в себя блоки для распознавания лиц.
Сначала давайте добавим в наш проект данное расширение:
- Создайте новый проект в PictoBlox.
- Затем нажмите на кнопку Add Extension (Добавить расширение) и добавьте расширение Face Detection (Распознавание лиц).
- Модели обнаружения лиц нужно будет загрузить, это может занять несколько секунд.
- После загрузки программа выведет сообщение “Model loaded successfully” («Модель успешно загружена»).
Блок для распознавания лиц
Для обнаружения лиц мы будем использовать блоки analyze images from () blocks.
Изображение можно вставить следующими способами:
- Трансляция с камеры
- Экран
Этот блок анализирует изображение и сохраняет информацию о лице локально. Доступ к этой информации можно получить с помощью других блоков, работающих по принципу машинного зрения.
Данный блок нужно запускать каждый раз, когда от нас требуется проанализировать изображение с камеры или экрана.
Управление трансляцией с камеры
Трансляцию с камеры можно контролировать с помощью блока turn () video on stage with () % transparency.
Можно изменить следующие параметры блока:
- Состояние камеры:
- OFF (ВЫКЛ) – Камера прекратит трансляцию.
- ON (ВКЛ) – Камера начнёт трансляцию.
- ON flipped (ВКЛ с зеркальным отображением) – Камера начнёт трансляцию с зеркальным отображением видео. То есть, правая рука будет слева и наоборот.
- Transparency (Прозрачность): Этот параметр позволяет менять прозрачность видео. 0 (ноль) означает отображение трансляции с камеры как она есть, а 100 — полную прозрачность видео вплоть до его полной невидимости.
Попробуйте поменять этот параметр, чтобы понять, как работает данный блок.
БЛОК Get expression of face () (Распознавание выражения лица)
Блок get expression of face () сообщает, какое выражение выбранного лица было распознано. Если выбранное лицо не распознано, он будет отображать значение NULL.
Например: При анализе изображения первое выражение лица — Happy (Счастливое).
Настройка локации
- Перетащим блок when flag clicked в область программирования.
- Перенесем блок turn () video on stage with () transparency из расширенияFace Detection (Распознавание лиц). Изменим настройку камеры на on (вкл) и прозрачность на 0%.
Локация настроена. Нажмём на green flag (зелёный флаг), чтобы камера начала транслировать видео.
Распознавание изображения
- Добавим блок forever из панели Control (Управление).
- Добавим блок analyse image from (). Выберем опцию трансляции с камеры – Сamera.
- Добавим блок if-else () под блоком analyse image from (). Добавим блок () > () из панели Operators (Операторы) в условие блока if-else ().
- В левую часть последнего блока добавим блок recognized face count, а в правую — числовую величину O.
- Затем добавим блок say (). Добавим блок get expression of face () из панели Face Detection (Распознавание лиц) в его текстовую область.
- Добавим ещё один блок say () с текстом «Лицо не обнаружено (No face detected)». Эта надпись будет выдаваться, если условие блока if – else () не будет выполнено.
Итак, наша программа готова. Нажмём на зелёный флаг, чтобы ее запустить.