Классификация объектов в режиме реального времени |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-02-27 23:30 искусственный интеллект примеры, теория распознавания образов, машинное обучение новости Автор: Игорь Пантелеев, Software Developer, DataArt
Распознавание изображений очень широко используется в машинном обучении. В этой области существует множество различных решений, однако потребностям нашего проекта ни оно из них не удовлетворяло. Нам понадобилось полностью локальное решение, которое способно работать на крошечном компьютере и передавать результаты распознавания на облачный сервис. В этой статье описывается наш подход к созданию решения для распознавания изображений с помощью TensorFlow. Yolo YOLO — это передовая система обнаружения объектов в реальном времени. На официальном сайте вы можете найти SSD300, SSD500, YOLOv2 и Tiny YOLO, которые прошли обучение с двумя различными наборами данных: VOC 2007+2012 и COCO. Еще больше вариантов конфигураций и наборов данных для машинного обучения вы можете найти в Интернете (например, YOLO9k). Благодаря широкому диапазону доступных вариантов можно выбрать версию, наиболее подходящую для ваших нужд. Например, Tiny YOLO — это самый «компактный» вариант, который может работать быстро даже на смартфонах или Raspberry Pi. Последний вариант нам понравился, и мы использовали его в нашем проекте. DarkNet и TensorFlow Модель Yolo была разработана для нейронной сети на основе DarkNet, для нас же некоторые особенности этого решения не подходят. DarkNet хранит обученные коэффициенты (веса) в формате, который может быть распознан с помощью различных методов на различных платформах. Эта проблема может быть камнем преткновения, потому что вам может понадобиться обучить модель на сверхмощном оборудовании, а затем использовать ее на другом оборудование. DarkNet написан на C и не имеет другого программного интерфейса, поэтому, если требования платформы или собственные предпочтения заставят вас обратиться к другому языку программирования, вам придется дополнительно поработать над его интеграцией. Также он распространяется только в формате исходного кода, и процесс компиляции на некоторых платформах может быть весьма проблематичным. Адаптивный Yolo для TensorFlow Итак, наша задача состояла в том, чтобы перенести модель YOLO на TensorFlow. Мы хотели избежать любых сторонних зависимостей и использовать YOLO напрямую с TensorFlow. Сначала нам нужно было перенести структуру модели, единственный способ сделать это — повторить модель послойно. К счастью для нас, есть много конвертеров с открытым исходным кодом, которые могут это сделать. Для наших целей наиболее подходящим решением оказался DarkFlow. Мы добавили простую функцию к DarkFlow, которая позволяет нам сохранять контрольные точки TensorFlow в метаданные, ее код можно посмотреть здесь. Вы можете сделать это вручную, но если хотите попробовать разные модели, проще автоматизировать этот процесс. Обучение модели Для наших целей мы решили использовать предварительно обученную модель. Обученные коэффициенты доступны на официальном сайте YOLO. Следующей задачей было импортировать веса DarkNet в TensorFlow, это было сделано следующим образом:
Для этого мы использовали DarkFlow. Архитектура модели и поток данных
Обычно с каждой итерацией классификатор делает предположение относительно того, какой тип объекта находится в окне. Он выполняет тысячи прогнозов для каждого изображения. Это тормозит процесс, вследствие чего работа по распознаванию идет довольно медленно. Реализация В нашем GitHub-репозитории вы можете найти демо-проект, который представляет собой предварительно обученную модель TensorFlow YOLO2. Данная модель может распознать 80 классов. Для ее запуска вам нужно установить дополнительные зависимости, необходимые для демонстрационных целей (для интерфейса модели требуется только TensorFlow). После установки просто запустите python eval.py, и он будет захватывать видеопоток с вашей веб-камеры, оценивать его и отображать результаты в простом окне со своими прогнозами. Процесс оценки — покадровый — и может занять некоторое время в зависимости от оборудования, на котором он запущен. На Raspberry Pi для оценки одного кадра может потребоваться несколько секунд. Интеграция с IoT Конечно, было бы неплохо интегрировать в этот проект службу IoT, а также настроить доставку результатов распознавания туда, где к ним смогут получить доступ и другие службы. http://127.0.0.1:8000/events/ . Он также запускает клиент DeviceHive. Конфигурация доступна на http://127.0.0.1:8000/ . Это позволяет отправлять всю прогнозируемую информацию в DeviceHive в виде уведомлений. Вывод Как видите, есть множество готовых проектов с открытым исходным кодом практически для любых случаев, нужно просто уметь правильно их использовать. Разумеется, необходимы определенные изменения, но внедрить их намного проще, чем создать новую модель с нуля. Огромное преимущество таких инструментов — их кроссплатформенность. Мы можем разработать решение на настольном ПК, а затем использовать тот же код на встраиваемых системах с операционной системой Linux и ARM-архитектурой. Мы очень надеемся, что наш проект поможет вам в создании собственного изящного решения. Источник: habrahabr.ru Комментарии: |
|