Обнаружение объектов глубокого обучения

Глубокое обучение: узнайте своих домашних питомцев!

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

Проверьте мой репозиторий GitHub на предмет исходного кода. Если возникнут какие-либо проблемы, отправьте мне электронное письмо.



ДОРОЖНАЯ КАРТА

Вот дорожная карта к этой статье:

1] Введение

2] Предварительные условия для демонстрации и использования

3] Примеры и результаты

4] Будущие улучшения

Вот так!

1. Введение

Если вы не знакомы с обнаружением объектов, ознакомьтесь со статьей, которую я недавно написал об архитектурах Yolo, несмотря на то, что там говорилось о yolov4 и использовалось yolov3 здесь, основные концепции остались.



2] Предварительные условия для демонстрации и использования

Требования к системе такие же, как и в моем репозитории Github. Так что продолжайте и клонируйте мой репозиторий.

git clone https://github.com/miki998/pet_recognition

После того, как вы закончите загрузку, вам нужно будет получить несколько дополнительных файлов, которые я, к сожалению, не смог загрузить в git из-за его размера. Вы должны спросить меня, и я поделюсь с вами ссылками через Google Drive.

Поместите их в следующую папку ./DARK/weights. Еще раз проверьте соответствие всем требованиям (requirements.txt). Хорошо, теперь все готово.

Стандартный запуск

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

python3 train.py -<arguments>

Аргументы будут объяснены, когда вы просто запустите python3 train.py.

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

Узнать домашнее животное

python3 recog.py -<arguments>

Аргументы будут объяснены, когда вы просто запустите python3 train.py.

Запуск контейнера Docker (предпочтительный метод)

Команды аналогичны предыдущим, просто сделайте следующее перед запуском (запустите контейнер с изображением, которое вы предположительно создали заранее, вы можете найти инструкции в README.md из репозитория)

docker run -it -p 9999 --ipc=host <docker-image-name>

Обратите внимание, что ‹docker-image-name› - это имя, которое вы дали образу при его создании.

3] Примеры и результаты

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

У нас есть обнаружение глаз:

Обнаружение тела:

Распознавание лиц:

После обучения модели распознавания (т. Е. Создания и сохранения функций lbph) на 7 разных питомцах (мы не проверяли пределы распознавания и отметили, что мы тестировали всех домашних животных в аналогичной среде), вот мой любимый питомец!

4] Будущие улучшения

У нас есть «своего рода» распознавание в режиме реального времени для ограниченного набора домашних животных (поскольку мы использовали его на продукте для домашних животных, который, очевидно, ограничивает круг домашних животных, которых мы должны узнавать) с помощью некоторых уловок в режиме реального времени, которые включают не улавливать все время изображения из видео, уменьшать разрешение или использовать сверхмощные чипы (я не отвечал за эту часть). Мы все еще пытаемся улучшить части распознавания, поскольку существует очевидное ограничение в количестве (размер весов увеличивается, по крайней мере, линейно в зависимости от количества домашних животных), другие функции, включая автоматические ориентиры лиц, добавленные с крупномасштабной регистрацией диффеоморфизма, могут помочь нормализовать лица , также может помочь поиск других функций (например, поведенческих, поскольку у нас есть обнаружение тела). В части обнаружения можно было бы многое сделать, например, заменить на EfficientDet и TensorRT, распараллелить через разделение изображений, когда у нас есть первые обнаружения тела.

Заключение

Спасибо за чтение, и если вам она понравилась или эта статья оказалась полезной, пожалуйста, подпишитесь на меня на medium и на GitHub, чтобы увидеть больше проектов.