Что такое обнаружение возражений с помощью Tensorflow? и как это работает [примеры]
Опубликовано: 2021-06-18Оглавление
Обнаружение объекта — что это значит?
Обнаружение объектов — это процесс, при котором объект может быть идентифицирован или расположен на изображении или видео с помощью компьютерного зрения. Если у нас есть изображение с кошкой и человеком, и мы должны классифицировать объекты на изображении, тогда может быть применена техника обнаружения объектов, т.е. обнаружение объектов, и могут быть обнаружены требуемые объекты, т.е. кошка и человек. Этого можно добиться с помощью ограничивающих рамок, которые рисуются вокруг обнаруженных объектов. Следовательно, местонахождение искомых объектов известно.
Большинство людей до сих пор путают распознавание объектов и распознавание изображений. Разница между ними заключается в том, что в случае распознавания изображения маркируется все изображение, в то время как при распознавании объектов маркируются объекты внутри изображения.
Класс объекта, такой как человек, стол и т. д., а также координаты расположения объектов на данном изображении можно определить с помощью техники обнаружения объектов. Производительность алгоритма обнаружения объектов зависит от его способности находить объекты на изображении. Одним из таких примеров обнаружения объектов является обнаружение лиц.
Почему обнаружение объектов?
Благодаря уникальным возможностям, присущим обнаружению объектов, процесс может быть применен во многих важных задачах, таких как:
- Подсчет людей в толпе.
- Вождение в случае беспилотных автомобилей.
- Видеонаблюдение.
- Обнаружение лица.
- Обнаружение аномалий
Подходы к обнаружению объектов
Алгоритмы, используемые для метода обнаружения объектов, могут быть обучены до его использования или не контролироваться.
Для обнаружения объектов используются два подхода, т. е. подходы, основанные на машинном обучении и подходы, основанные на глубоком обучении.
- Различные особенности изображения, такие как цветовая гистограмма или края и т. Д., Рассматриваются подходами, основанными на машинном обучении. Затем на основе этих признаков генерируются регрессионные модели и прогнозируется местоположение объекта.
- Сверточные нейронные сети (CNN) используются в случае подходов, основанных на глубоком обучении, для обнаружения объекта неконтролируемыми методами.
Работа метода обнаружения объектов
Задача обнаружения объекта может быть выполнена с помощью следующих шагов:
- Входное изображение разбивается на несколько небольших сегментов. Наборы блоков, связанных вместе, создаются, охватывая все изображение.
- Каждая сегментированная область подвергается процессу выделения признаков. Затем он предсказывает наличие допустимых объектов в поле. Процесс определяет, присутствуют ли в коробке какие-либо визуальные элементы.
- Для перекрывающихся блоков строится один блок.
Обнаружение объектов с помощью TensorFlow
TensorFlow можно определить как библиотеку с открытым исходным кодом для машинного обучения, которая широко используется в нескольких приложениях, таких как распознавание изображений, голосовой поиск, распознавание объектов и т. д. API-интерфейсы Python и C++ предоставляются TensorFlow.
- В TensorFlow присутствуют как алгоритмы глубокого обучения, так и алгоритмы машинного обучения.
- Python используется в качестве языка интерфейса, а также эффективно работает на C++.
- Граф вычислений создается разработчиками с помощью TensorFlow.
- Математические операции представлены узлами на графе, а данные представлены соединениями.
TensorFlow был разработан для проведения исследований в области машинного обучения и глубоких нейронных сетей командой Google Brain в рамках исследовательской организации Google Machine Intelligence Research.
API (интерфейс прикладного программирования) не позволяет разработчикам писать коды с нуля за счет предоставления набора общих операций. API обнаружения объектов TensorFlow применяется для обучения моделей обнаружению объектов. Фреймворк построен на основе TensorFlow. Функции, принадлежащие TensorFlow для обнаружения объектов:
- Модели, которые уже обучены, называются «зоопарком моделей» и доступны во фреймворке.
- Наборы данных, используемые для обучения различных обученных моделей:
- Набор данных COCO.
- Набор данных КИТТИ.
- Набор данных открытых изображений
Инфраструктура обнаружения объектов TensorFlow состоит из различных моделей с различной архитектурой и, следовательно, с разной точностью предсказания. Типы архитектуры уже обученных моделей:
1. MobileNet-SSD
Сеть одинарной свертки идентифицирует местоположение ограничивающей рамки за один проход. Архитектура состоит из базового уровня (MobileNet) с несколькими уровнями свертки. Расположение ограничительных рамок прогнозируется с помощью операций на картах объектов. Информация, присутствующая в каждой ограничивающей рамке, указана ниже:
- Смещенные местоположения ограничивающей рамки в четырех углах (cx, cy, w, h).
- Вероятности класса C (c1, c2, …cp)
SSD не предсказывает форму коробки, а предсказывает расположение коробки. K количество ограничивающих рамок определяется для каждого местоположения карты объектов. Форма ограничивающей рамки k уже задана до фактического обучения.
Следующее уравнение вычисляет потери.
L=1/N (класс L + коробка L)
Где, N: количество совпавших ящиков, класс L: потеря softmax, ящик L: ошибка, связанная с совпавшими ящиками.
2. Мобильная сеть
Стандартизированная свертка разбивается на свертки и свертки, которые являются точечными, т.е. 1*1 свертки. Вычисления сокращаются с уменьшением размера модели посредством факторизации.
3. Начало-SSD
Inception-SSD имеет ту же архитектуру, что и MobileNet-SSD, однако базой архитектуры в случае MobileNet-SSD была MobileNet, а здесь это модель Inception.
4. Быстрее RCNN
Предсказание местоположения объекта основано на алгоритмах предложения региона. Сети обнаружения сократили время работы благодаря развитию SSPnet и Fast R-CNN. Сверточная карта признаков генерируется, когда входное изображение подается в нейронную сеть в случае Faster RCNN.
Затем предложение региона идентифицируется с помощью сверточной карты объектов и деформируется в квадраты. Затем квадраты преобразуются в размер, который фиксируется с помощью слоя объединения ROL (слой области интереса). Затем он используется в качестве входных данных для слоя, который полностью подключен.
Слой softmax используется для прогнозирования класса предложения региона на основе вектора признаков ROL. Также прогнозируются значения смещения ограничивающей рамки.
Выбор модели TensorFlow для обнаружения объектов
Подходящую модель TensorFlow для обнаружения объектов можно выбрать в API TensorFlow в зависимости от конкретных требований пользователя. Сеть однократного обнаружения, т. е. сеть SSD, может использоваться, если пользователю требуется высокоскоростная модель. Модель работает быстрее и может обнаруживать видеопоток с высокой частотой кадров.
Однако, если требуется более высокая точность, то FasterRCNN может быть лучшим выбором, поскольку точность модели высока, но имеет сравнительно более низкую скорость. Таким образом, пользователь может изучить различные доступные возможности в соответствии со своими требованиями.
Пример TensorFlow для обнаружения объектов
Использование TensorFlow API для обнаружения объектов не требует предварительных знаний в области машинного обучения или нейронных сетей. В основном будут использоваться файлы, предоставляемые API. Единственное требование — знание основ Python.
1. Загрузка TensorFlow
- TensorFlow можно загрузить через git или загрузить вручную.
- Загрузка TensorFlow через git — один из самых простых способов загрузки. Для загрузки через git в системе уже должен быть предустановлен git. После установки git в терминале необходимо ввести следующую команду.
- Необходимо перейти по следующей ссылке и нажать зеленую кнопку. Заархивированные файлы должны быть загружены и извлечены.
- Папка должна быть переименована в модели из models-master.
- Окружающая среда должна быть создана виртуально. Одной из основных целей создания виртуальной среды Python является создание изолированной среды Python. Его нужно использовать для проектов под python. Поэтому зависимости каждого проекта будут разными.
- В приглашении анаконды необходимо использовать следующие команды:
В этом случае виртуальная среда называется obj_detection.
conda create -n obj_detection -> для виртуальной настройки среды
conda активировать obj_detection -> для активации виртуальной среды
2. Установка зависимостей
- Зависимости, требуемые API, должны быть установлены на локальном ПК.
- Зависимости можно установить после активации виртуальной среды.
- Должна быть введена следующая команда
pip установить тензорный поток
- Если присутствует графический процессор, требуется следующая команда
pip установить tensorflow-gpu
- Другие зависимости должны быть установлены с помощью следующей команды
pip установить подушку Cython lxml jupyter matplotlib contextlib2 tf_slim
3. Загрузка буферов протокола (Protobuff)
- Буферы протокола — это определенные механизмы последовательного структурирования данных, подобные XML.
- «Protobuff» необходимо скачать по ссылке .
- Извлеките файлы и скопируйте файлы в подпапку с именем «research» в уже загруженной папке «models».
- Папка, содержащая файлы protobuf, должна быть перемещена и запущена следующая команда
protoc object_detection/protos/*.proto –python_out=.
- Успешное выполнение команды создаст файл python для каждого из файлов proto в папке protos при обнаружении объектов в папке моделей.
Заключение
Обнаружение объектов — широко применяемый метод в различных приложениях реального времени. Мы узнали, что эта техника может быть достигнута за счет применения алгоритмов машинного обучения или глубокого обучения.
Кроме того, при применении API, т. е. TensorFlow, пользователям необходимо иметь предварительные знания о концепции программирования на Python. Только тогда можно будет правильно понять методы обнаружения объектов с помощью TensorFlow API. TensorFlow — это платформа с открытым исходным кодом для машинного обучения. Поэтому, чтобы понять механизм работы TensorFlow и его применение, лучше ознакомиться с концепциями машинного обучения.
Если вы профессионал среднего уровня, который хочет изучать программирование на Python, развертывать модели машинного обучения вместе с облачными вычислениями, вы можете ознакомиться с курсом « Магистр наук в области машинного обучения и искусственного интеллекта », предоставленным upGrad . Курс, совместно сертифицированный IIIT Bangalore и LJMU , согласует ваши цели с экспертным обучением и позволит вам подготовиться к вступлению в компании вашей мечты. Все, что вам нужно, это иметь степень бакалавра. Наша команда поддержки готова ответить вам, если у вас возникнут вопросы, связанные с курсом upGrad.