Рубрики
Без рубрики

Обнаружение объектов с помощью Image AI в Python

Автор оригинала: Guest Contributor.

Вступление

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

Две основные задачи обнаружения объектов включают в себя:

  • Идентифицировать все объекты, присутствующие на изображении
  • Отфильтруйте объект внимания

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

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

Методы глубокого обучения были доказаны на современном уровне для различных задач обнаружения объектов. Ниже приведены некоторые из наиболее часто используемых подходов глубокого обучения для обнаружения объектов:

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

ImageAI

Image AI-это библиотека Python, созданная для того, чтобы дать разработчикам возможность создавать приложения и системы с автономными возможностями глубокого обучения и компьютерного зрения, используя несколько строк прямого кода. Изображение содержит реализацию на Python почти всех современных алгоритмов глубокого обучения, таких как Retin a Net , YOLOv3 и TinyYOLOv3.

Image AI использует несколько API, которые работают в автономном режиме – у него есть API обнаружения объектов, обнаружения видео и отслеживания объектов, которые можно вызвать без доступа в Интернет. Изображение AI использует предварительно обученную модель и может быть легко настроено.

Класс Object Detection библиотеки изображений содержит функции для выполнения обнаружения объектов на любом изображении или наборе изображений с использованием предварительно обученных моделей. С помощью изображений вы можете обнаружить и распознать 80 различных видов обычных, повседневных объектов.

Настройка среды

В этой части урока мы будем работать через установку образа AI.

Чтобы использовать образы, вам нужно установить несколько зависимостей. Первый шаг-установить Python на свой компьютер. Скачайте и установите Python 3 с официального сайта Python .

После того как вы установили Python на свой компьютер, установите следующие зависимости с помощью pip :

Тензорный поток

$ pip install tensorflow

OpenCV

$ pip install opencv-python

Керас

$ pip install keras

ImageAI

$ pip install imageAI

Теперь загрузите файл TinyYOLOv3 model, содержащий классификационную модель, которая будет использоваться для обнаружения объекта.

Выполнение обнаружения объекта с помощью изображения

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

Шаг 1

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

  • Обнаружение объектов : корневая папка
  • модели : хранит предварительно обученную модель
  • input : хранит файл изображения, на котором мы хотим выполнить обнаружение объекта
  • output : сохраняет файл изображения с обнаруженными объектами

После того как вы создали свои папки, у вас Object detection folder должны быть следующие подпапки:

├── input
├── models
└── output

3 directories, 0 files
Шаг 2

Откройте предпочтительный текстовый редактор для написания кода Python и создайте новый файл detector.py .

Шаг 3

Импорт Обнаружение объектов класс из библиотеки изображений.

from imageai.Detection import ObjectDetection
Шаг 4

Теперь , когда вы импортировали библиотеку изображений и класс Object Detection , следующим шагом будет создание экземпляра класса ObjectDetection , как показано здесь:

detector = ObjectDetection()
Шаг 5

Давайте определим путь от нашего входного изображения, выходного изображения и модели.

model_path = "./models/yolo-tiny.h5"
input_path = "./input/test45.jpg"
output_path = "./output/newimage.jpg"
Шаг 6

После создания экземпляра класса Object Detection мы теперь можем вызывать различные функции из этого класса. Класс содержит следующие функции для вызова предварительно обученных моделей: set Model Type As Retin a Net() , setModelTypeAsYOLOv3 () и setModelTypeAsTinyYOLOv3() .

Для целей этого урока я буду использовать предварительно обученную модель TinyYOLOv3 , и поэтому мы будем использовать функцию setModelTypeAsTinyYOLOv3() для загрузки нашей модели.

detector.setModelTypeAsTinyYOLOv3()
Шаг 7

Далее мы вызовем функцию setModelPath() . Эта функция принимает строку, содержащую путь к предварительно обученной модели:

detector.setModelPath(model_path)
Шаг 8

Этот шаг вызывает функцию load Model() из экземпляра detector . Он загружает модель из пути, указанного выше, используя метод setModelPath() class.

detector.loadModel()
Шаг 9

Чтобы обнаружить объекты на изображении, нам нужно вызвать функцию detect Objects From Image с помощью объекта detector , созданного нами в предыдущем разделе.

Эта функция требует двух аргументов: input_image и output_image_path . input_image – это путь, по которому находится обнаруживаемое изображение, а параметр output_image_path – это путь для хранения изображения с обнаруженными объектами. Эта функция возвращает словарь, содержащий имена и процентные вероятности всех объектов, обнаруженных на изображении.

detection = detector.detectObjectsFromImage(input_image=input_path, output_image_path=output_path)
Шаг 10

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

for eachItem in detection:
    print(eachItem["name"] , " : ", eachItem["percentage_probability"])
Полный код для обнаружения объекта

Вот полный код для обнаружения изображения:

from imageai.Detection import ObjectDetection

detector = ObjectDetection()

model_path = "./models/yolo-tiny.h5"
input_path = "./input/test45.jpg"
output_path = "./output/newimage.jpg"

detector.setModelTypeAsTinyYOLOv3()
detector.setModelPath(model_path)
detector.loadModel()
detection = detector.detectObjectsFromImage(input_image=input_path, output_image_path=output_path)

for eachItem in detection:
    print(eachItem["name"] , " : ", eachItem["percentage_probability"])

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

car  :  54.72719073295593
car  :  58.94589424133301
car  :  62.59384751319885
car  :  74.07448291778564
car  :  91.10507369041443
car  :  97.26507663726807
car  :  97.55765795707703
person  :  53.6459743976593
person  :  56.59831762313843
person  :  72.28181958198547

Исходное изображение:

Исходное изображение, то есть “тест 45”, выглядело так:

Изображение с обнаружением объекта:

После обнаружения объекта полученное изображение выглядит следующим образом:

Вы можете видеть, что ИИ изображения успешно идентифицировал автомобили и людей на изображении.

Вывод

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

Рекомендации