Теперь стало намного проще добавлять функции искусственного интеллекта в ваш проект благодаря более совершенным инструментам, но, как мы убедились при испытании платформы машинного обучения Edge Impulse на плате XIAO BLE Sense, это по-прежнему требует определенных усилий, и кривая обучения может оказаться выше, чем некоторые ожидают.
Но для обычных задач, таких как распознавание лиц, решение не должно быть сложным в использовании или дорогим, и Пит Уорден (Pete Warden (Useful Sensors)) разработал модуль Person Sensor за 10 долларов, оснащенный модулем камеры, предварительно запрограммированным с помощью алгоритмов, которые обнаруживают близлежащие лица и сообщают результаты по I2C интерфейс.
Технические характеристики модуля Person Sensor:
- ASIC — Himax HX6537-A AI-ускоритель со сверхнизким энергопотреблением с частотой 400 МГц с 2 МБ SRAM, 2 МБ флэш-памяти
- Камера
- Датчик изображения — 110 градусов FOV
- Частота сканирования изображения — 7 Гц без распознавания лиц
- Частота сканирования изображения — 5 Гц с активным распознаванием лиц
- Хост-интерфейс
- Разъем Qwiic для интерфейса I2C до 400 Кбит/с
- Пин-код прерывания, используемый для указания, были ли обнаружены какие-либо люди.
- Рабочее напряжение — 3,3 В
- Потребляемая мощность
- До 150 мВт
- 5 мВт для светодиода
- Размеры – Маленький…
Вам нужно будет подключить модуль к хост-микроконтроллеру, который либо запрашивает данные, либо использует вывод прерывания, и получить координаты распознавания лиц из области 256 × 256 пикселей, а также достоверность в процентах и то, обращено ли лицо к камере или нет. Никакие данные изображения не отправляются на хост, и поэтому они обеспечивают повышенную конфиденциальность. Примечание. Микроконтроллер Himax предварительно запрограммирован, и вы не можете обновить встроенное ПО или получать обновления.
Пример программы (режим опроса) для Raspberry Pi Pico будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
person_sensor_results_t results = {}; while (1) { // Perform a read action on the I2C address of the sensor to get the // current face information detected. if (!person_sensor_read(&results)) { printf("No person sensor results found on the i2c bus\n"); sleep_ms(SAMPLE_DELAY_MS); continue; } printf("********\n"); printf("%d faces found\n", results.num_faces); for (int i = 0; i < results.num_faces; ++i) { const person_sensor_face_t* face = &results.faces[i]; printf("Face #%d: %d confidence, (%d, %d), %dx%d, %s\n", i, face->box_confidence, face->box_left, face->box_top, face->box_right, face->box_bottom, face->is_facing ? "facing" : "not facing"); } sleep_ms(SAMPLE_DELAY_MS); } |
Модуль также будет возвращать идентификационную информацию или, другими словами, пытаться обнаружить до 8 разных пользователей, но это не показано в примере выше, и неясно, насколько хорошо это работает. Вы найдете документацию и примеры кода на разных языках, включая Arduino, CircuitPython и Python, на GitHub.
На видео ниже показана демонстрация face following fan, основанная на модуле Person Sensor.
Модуль Person Sensor указан на Sparkfun за 9,95 долларов США, но на момент написания статьи его нет в наличии и он находится в стадии ожидания.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.