Распознавание объектов на Python / Глубокое машинное обучение

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Python является одним из самых перспективных языков, позволяющий воплощать искусственный интеллект в жизнь. В уроке мы создадим распознавание объектов при помощи Python и ImageAI.

Одна из самых перспективных наук о компьютерах и программах – компьютерное зрение. Его смысл заключается в способности ПК к распознанию и определению сути картинки. Это важнейшая область в искусственном интеллекте, включающая сразу несколько действий: распознание содержимого фотографии, определение предмета и его классификация или генерация. Поиск объектов на картинке, скорее всего, является важнейшей областью компьютерного зрения.

Определение вещей или живых существ на фотографии активно используется в следующих сферах:

  • Поиск автомобилей;
  • Система распознания людей;
  • Поиск и подсчёт количества пешеходов;
  • Усиление системы безопасности;
  • Создание беспилотных автомобилей и т. д.

Сегодня удалось разработать много методов для поиска объектов, которые применяются в зависимости от целевой области. В этой сфере, как и в других направлениях использования ИТ-технологий, многое напрямую зависит от программиста. Это отличный инструмент для творчества, с которым «творение» может получить собственный ум. Как использовать интеллект программы уже зависит от творческого мышления разработчика.

Технология действительно перевернула представление об искусственном интеллекте. В дальнейшем она стала основой для следующих методов R-CNN, Fast-RCNN, Faster-RCNN, RetinaNet. Среди них и высокоточные, быстрые методы - SSD и YOLO. Для применения перечисленных алгоритмов, в основе которых глубокое обучение, требуется наличие глубоких познаний в математике и доскональное понимание фреймворков.

Начнем

Рассмотрение советов следует начинать с функциональной библиотеки ImageAI, написанной на Python. Данный фреймворков позволяет с лёгкостью интегрировать инновационные достижения в сфере компьютерного зрения в уже разработанные или новые программы.

Установка Python

Без инсталляции Python 3 здесь не обойтись. Нужно всего лишь загрузить файл с оф. сайта и запустить процесс установки.

Создание зависимостей

Сейчас самое время для того, чтобы посредством pip установить зависимости. Принцип создания команды прост: pip install и название библиотеки (основные фреймворки описаны в списке ниже). Как это выглядит:

pip install tensorflow # устанавливает программную среду Tensorflow.

Какие фреймворки нужно добавить:

  • Numpy;
  • SciPy;
  • OpenCV (opencv-python);
  • Pillow;
  • Matplotlib;
  • H5py;
  • Keras;
  • ImageAI (ссылка).

Просмотреть все фреймворки и команды для их установки вы можете на официальном сайте с документацией по ImageAI.

Retina Net

Теперь стоит скачать файл для модели Retina Net. Он участвует в процессе идентификации объектов на изображениях.

Как только зависимости установлены, уже есть возможность написать первые строки кода для вычисления предметов на картинках. Следует создать файл FirstDetection с расширением .py. В созданный файл следует вставить код из следующего раздела. Ещё нужно скопировать файл из модели Retina и добавить картинку для обработки в папку с файлом Python.

Тестирование

Создайте файл и разместите в нем следующий код:

from imageai.Detection import ObjectDetection import os  exec_path = os.getcwd()  detector = ObjectDetection() detector.setModelTypeAsRetinaNet() detector.setModelPath(os.path.join( 	exec_path, "resnet50_coco_best_v2.0.1.h5") ) detector.loadModel()  list = detector.detectObjectsFromImage( 	input_image=os.path.join(exec_path, "objects.jpg"), 	output_image_path=os.path.join(exec_path, "new_objects.jpg"), 	minimum_percentage_probability=90, 	display_percentage_probability=True, 	display_object_name=False )

Осталось запустить код и ожидать появление результатов работы в консоли. Дальше следует пройти в каталог, где установлен файл FirstDetection.py. Здесь же должна появиться новая фотография или несколько. Чтобы лучше понимать, что произошло, следует открыть изначальную и новую картинку.

Время рассмотреть принцип работы кода:

from imageai.Detection import ObjectDetection import os  exec_path = os.getcwd()

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

  • 1 строка: перенос ImageAI и класса для поиска предмета;
  • 2 строка: импорт Python os;
  • 4 строка: создание переменной, в которой указывается путь к директории с файлом Python, RetinaNet, моделью и образом.
detector = ObjectDetection() detector.setModelTypeAsRetinaNet() detector.setModelPath(os.path.join( 	exec_path, "resnet50_coco_best_v2.0.1.h5") ) detector.loadModel()  list = detector.detectObjectsFromImage( 	input_image=os.path.join(exec_path, "objects.jpg"), 	output_image_path=os.path.join(exec_path, "new_objects.jpg"), 	minimum_percentage_probability=90, 	display_percentage_probability=True, 	display_object_name=False )

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

  • 1 строка: объявление нового класса для поиска объектов;
  • 2 строка: установка типа модели RetinaNet;
  • 3 строка: указание пути к модели RetinaNet;
  • 6 строка: загрузка модели внутрь класса для поиска;
  • 8 строка: вызов функции обнаружения (распознавания объектов) и запуск парсинга пути начального и конечного изображений.

ImageAI имеет поддержку массы различных настроек для поиска объектов. Например, можно настроить извлечение всех найденных объектов во время обработки картинки. Класс поиска способен создать отдельную папку с названием image, а затем извлечь, сохранить и вернуть массив с путём ко всем объектам.

list, extracted_images = detector.detectObjectsFromImage 	(input_image=os.path.join(execution_path , "objects.jpg"),  	output_image_path=os.path.join(execution_path , "new_objects.jpg"),  	extract_detected_objects=True)

Видео обзор

Для более детального рассмотрения библиотеки советуем просмотреть видео обзор этой библиотеки. В ходе видео будет показано не только распознавание объектов на фото, но также вы узнаете про рассмотрение объектов на видео.

Ссылки из видео:

  1. Установка Python;
  2. Установка Pip
  3. Редактор PyCharm;
  4. Большой курс по языку Python;
  5. ImageAI GitHub;
  6. ImageAI документация.

В ходе урока было создано распознавание объектов на видео. Код приведен ниже: 

from imageai.Detection import VideoObjectDetection import os  execution_path = os.getcwd()  detector = VideoObjectDetection() detector.setModelTypeAsYOLOv3() detector.setModelPath( os.path.join(execution_path , "yolo.h5")) detector.loadModel()  video_path = detector.detectObjectsFromVideo( 	input_file_path=os.path.join(execution_path, "traffic.mp4"), 	output_file_path=os.path.join(execution_path, "traffic_detected"), 	frames_per_second=20, 	log_progress=True )  print(video_path)

Заключение

В конце советов по глубокому изучению следует добавить небольшую выборку из самых полезных функций ImageAI, ведь её возможности выходят далеко за пределы обычного обнаружения объектов:

  • Установка порога минимальной вероятности: стандартные настройки исключают из выборки все объекты с вероятностью до 50%. Они даже не записываются в лог. При желании можно изменить в большую или меньшую сторону вероятности для определённых случаев;
  • Особые настройки обнаружения: с помощью класса CustomObject, есть возможность попросить приложение передавать информацию об определении некоторых уникальных объектов;
  • Скорость поиска: существует возможность вручную снизить время, которое затрачивает приложение для сканирования фотографии. Есть 3 режима работы: fast, faster, fastest;
  • Входящие типы: поддерживает указание в качесиве пути картинке – Numpy-массива, а также файлового потока;
  • Выходные типы: можно установить, чтобы функция detectObjectsFromImage возвращала картинки файлом или массивом Numpy.

Конечно, охватить всё компьютерное зрение нереально даже за целую книгу, но основные понятия, надеемся, мы смогли донести.


Источник: itproger.com

Комментарии: