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

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

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

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

Так как это будет долгий и большой проект. Я решил писать свою повседневную работу в виде блога. Итак, этот блог будет моим проектным журналом. Я планирую подвести итоги своей работы в другом блоге, как только этот проект будет завершен.

В настоящее время я даже не знаю, реализуем этот проект или нет.

«Процесс важнее результата».

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

Я буду обновлять этот блог по мере продвижения своего проекта.

Описание Проекта

Целью этого проекта является создание системы распознавания лиц и оповещения об угрозах с использованием видеопотока с домашних камер видеонаблюдения. Я буду использовать Nvidia Jetson Nano для развертывания и Python для программирования. Основные библиотеки, которые будут использоваться, включают OpenCV, TensorFlow, face_recognition и dlib.

Используемое оборудование: Nvidia Jetson Nano (4 ГБ)

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

  1. Бюджетирование
  2. Анализ осуществимости
  3. Изучение методов распознавания лиц
  4. Сбор данных
  5. Обработка данных
  6. Моделирование
  7. Оценка
  8. Тестирование
  9. Улучшение
  10. Развертывание
  11. Мониторинг

Они могут меняться по мере того, как я продвигаюсь вперед в проекте и появляются новые вещи.

Бюджетирование

К основному оборудованию, необходимому для реализации проекта, относятся:

1. Nvidia Jetson Nano (4 ГБ)

2. Чехол для Jetson Nano

3. Блок питания для Jetson Nano (5В — 4А)

4. › Карта памяти на 64 ГБ

Общая стоимость = около 13 000 рупий (175 долл. США)

Анализ осуществимости

Я выделил следующие разделы для технико-экономического анализа:
а) Можно ли получить данные? Если да, то как?
б) Можно ли использовать полученные данные для построения системы распознавания лиц?
в) Если можно построить систему распознавания лиц на основе данных, можно ли запустить его в режиме реального времени на Jetson Nano?

Получение данных

Прежде чем я мог начать что-либо, первым и самым важным было получить данные (видео) для работы.

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

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

Первоначально я думал о таких способах, как использование HDMI или Ethernet с подходящим конвертером для получения канала, но поскольку прямую трансляцию с камер можно также просматривать на мобильных устройствах, я подумал, что должен быть способ получить видеовход для нашей программы, используя похожий способ.

Именно тогда я наткнулся на видео на YouTube об IP-камерах. IP-камера — это камера, которая передает и принимает видео через сетевое соединение. Я решил использовать этот метод, так как это был самый простой и распространенный способ получения корма.

Подробная работа:

1 июля — 3 июля:

Изучили подключения камер, как они развернуты по всему дому? Какой провод куда идет? Какие провода мне нужны?

Искал варианты покупки Jetson Nano. Решил отложить покупку до тех пор, пока не проведу достаточную оценку осуществимости.

4 июля:

Изучил, как просматривать изображение с камеры на ноутбуке (без программирования), думая, что это может дать подсказку о том, как получить ввод в python. Использовал HDMI для просмотра на ТВ-мониторе. Тут мне на помощь пришел поставщик камер. Он сказал мне, что IP был необходим для просмотра на ноутбуке.

В этот момент я просто случайным образом делал что-то и не знал, поможет ли что-нибудь из этого.

5 июля — 6 июля:

Изучил YouTube о том, как получить IP камеры безопасности. Наткнулся на 3 способа:

1. Вход в роутер

2. Проволочная акула

3. Инструмент обнаружения компании-производителя камер (в моем случае инструмент конфигурации Dahua)

Я использовал Wire Shark, чтобы получить IP-адрес сети камер.

Как только я получил IP-адрес, я смог войти на страницу конфигурации камеры и просмотреть ее канал на своем ноутбуке.

При поиске в Интернете способа получения IP-адреса камеры Dahua я наткнулся на метод, использующий протокол RTSP для получения видеопотока с IP-камеры в программе на Python.

В этот день я выполнил первую задачу по получению видеопотока в качестве входных данных для программы python.

Сводка раздела (Получение данных с IP-камеры):

Следующая команда обобщает этот раздел и может использоваться для передачи входных данных с IP-камеры Dahua в программу Python с использованием OpenCV:

cam = cv2.VideoCapture (URL-адрес RTSP)

URL-подпись RTSP:

rtsp://‹имя пользователя›:‹пароль›@‹ip›:‹порт›/cam/realmonitor?channel=‹канал›&subtype=‹подтип›

‹username› — имя пользователя для входа в камеру.
‹password› — пароль для входа в камеру.
‹ip› — IP-адрес камеры или системы.
‹port› — порт RTSP (по умолчанию :554).
‹channel› — номер канала. От 1 до n в зависимости от количества подключенных камер.
‹subtype› — тип потока. 0 для основного потока, 1 для дополнительного потока 1, 2 для дополнительного потока 2.

Пример:
rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0

В статье Удаленный доступ Dahua дается подробное объяснение.
Если вы используете камеры других компаний, эта статья URL-адреса потоков RTSP от (почти) всех производителей — хорошее место для получения помощи.

Анализ осуществимости на основе данных

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

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

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

Анализ операций в реальном времени

Цель здесь — проанализировать, можно ли запустить нашу систему распознавания лиц во встроенной системе или нет? (Достаточно ли оптимизирован метод?)

Требуется тщательное исследование методов распознавания лиц, прежде чем мы сможем принять решение о возможности их использования в реальном времени. Следовательно, мы вернемся к этому разделу после выполнения шага 3, а именно «Изучение методов распознавания лиц».

Статья продолжается здесь: Распознавание лиц в реальном времени на домашних камерах видеонаблюдения с использованием Python и Jetson Nano (Дневник) — часть 2.