Реальное время обнаружения объектов с помощью SSD однопроходные многоблоковые детекторы

Многоблоковые детекторы SSD реальное время обнаружения объектов в одном проходе

Введение

В реальном времени обнаружение объектов, преобладающая парадигма традиционно принимала методологии, включающие предложение ограничивающих рамок, повторный выбор пикселей или функций и применение высококачественных классификаторов. Хотя такой подход достигает высокой точности, его вычислительные требования часто затрудняют его применимость в реальном времени. Однако, Single Shot MultiBox Detector (SSD) представляет собой революционный прорыв в обнаружении объектов на основе глубокого обучения. SSD поддерживает исключительную точность, при этом существенно повышает скорость обнаружения, устраняя необходимость повторного выбора пикселей или функций на этапе предложения ограничивающих рамок. Вместо этого, SSD непосредственно предсказывает категории объектов и смещения ограничивающих рамок, используя небольшие сверточные фильтры на картах признаков.

Исследователи пытались создать более быстрые детекторы, оптимизируя различные этапы данного процесса, но как правило, это приводит к снижению точности. Однако, данная статья представляет революционный детектор объектов на основе глубокого обучения, называемый SSD (Single Shot MultiBox Detector), который поддерживает точность при существенном повышении скорости. SSD достигает этого, устраняя необходимость повторного выбора пикселей или функций для предложений ограничивающих рамок. Вместо этого, он непосредственно предсказывает категории объектов и смещения ограничивающих рамок с использованием небольших сверточных фильтров, применяемых к картам признаков.

Цели обучения

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

Эта статья была опубликована в рамках блогонауки по данным.

Что такое одношаговый детектор (SSD)?

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

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

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

Основные характеристики SSD

  • Один шаг: В отличие от некоторых традиционных моделей обнаружения объектов, которые используют двухэтапный подход (сначала предложение регионов интереса, а затем классификация этих регионов), SSD выполняет обнаружение объектов в один просмотр сети. Он непосредственно предсказывает наличие объектов и их координаты ограничивающих рамок одним выстрелом, делая его более быстрым и эффективным.
  • MultiBox: SSD использует наборы дефолтных ограничивающих рамок (анкерные рамки) различных масштабов и пропорций в нескольких местах на входном изображении. Эти дефолтные рамки служат предварительными знаниями о том, где скорее всего появятся объекты. SSD предсказывает корректировки этих дефолтных рамок для точного определения объектов.
  • Многомасштабное обнаружение: SSD работает с несколькими картами признаков разных разрешений, что позволяет обнаруживать объекты разных размеров. Предсказания делаются на разных масштабах, чтобы захватить объекты с разным уровнем детализации.
  • Оценки классов: SSD предсказывает не только координаты ограничивающих рамок, но также присваивает оценку классов каждой дефолтной рамке, указывая вероятность принадлежности объекта к определенной категории (например, автомобиль, пешеход, велосипед).
  • Майнинг трудноопределяемых отрицательных примеров: Во время обучения SSD использует майнинг трудноопределяемых примеров для фокусировки на сложных случаях, повышая точность модели.

Каковы ключевые концепции SSD?

Single Shot MultiBox Detector (SSD) – это сложная модель обнаружения объектов с несколькими ключевыми концепциями, которые обеспечивают его эффективную и точную работу. Вот основные концепции в SSD:

  • Базовые ограничивающие прямоугольники (якорные прямоугольники): SSD использует предопределенный набор базовых ограничивающих прямоугольников, также известных как якорные прямоугольники. Эти прямоугольники имеют различные масштабы и соотношения сторон, предоставляя предварительные сведения о том, где, вероятно, находятся объекты на изображении. SSD предсказывает корректировки этих базовых прямоугольников для точного локализации объектов.

  • Многошкальные карты признаков: SSD работает с несколькими картами признаков разных разрешений. Получите эти карты признаков, применяя сверточные слои к входному изображению на разных этапах. Использование карт признаков на множестве масштабов позволяет SSD обнаруживать объекты разных размеров.
  • Многошкальные предсказания: Для каждого базового ограничивающего прямоугольника SSD делает предсказания на нескольких слоях карт признаков с разными разрешениями. Это позволяет модели обнаруживать объекты различных масштабов. Эти предсказания включают оценки классов для разных категорий объектов и смещения для корректировки базовых прямоугольников, чтобы соответствовать положениям объектов.
  • Обработка соотношений сторон: SSD использует отдельные предикторы (сверточные фильтры) для различных соотношений сторон ограничивающих прямоугольников. Это позволяет модели адаптироваться к объектам с различными формами и соотношениями сторон.

Архитектура SSD

Архитектура Single Shot MultiBox Detector – это глубокая сверточная нейронная сеть (CNN) для обнаружения объектов в реальном времени. Она объединяет различные слои для выполнения операции локализации (предсказание ограничивающего прямоугольника) и классификации (предсказание категории объекта) в одном проходе.

Single Shot MultiBox Detector (SSD) – это стабильная система обнаружения объектов, основанная на пищевой сверточной нейронной сети (CNN). Архитектура SSD предназначена для генерации фиксированного набора ограничивающих прямоугольников и связанных оценок, указывающих на присутствие экземпляров классов объектов в этих прямоугольниках.

Критические компоненты и особенности

Вот объяснение критических компонентов и особенностей подхода SSD:

Базовая сеть (обрезанная для классификации): SSD начинается с обычной архитектуры CNN, которая обычно используется для задач качественной классификации изображений. Однако в SSD эта базовая сеть обрезается до любых слоев классификации. Базовая сеть отвечает за извлечение основных признаков из входного изображения.

  • Многошкальные карты признаков: В обрезанную базовую сеть добавляются дополнительные сверточные слои. Эти слои постепенно уменьшают пространственные размеры, увеличивая количество каналов (каналы признаков). Такая конструкция позволяет SSD создавать карты признаков на нескольких масштабах. Карта признаков каждого масштаба подходит для обнаружения объектов разных размеров.
  • Базовые ограничивающие прямоугольники (якорные прямоугольники): SSD ассоциирует предопределенный набор базовых ограничивающих прямоугольников (якорные прямоугольники) с каждой ячейкой карты признаков. Эти базовые прямоугольники имеют различные масштабы и соотношения сторон. Расположение базовых прямоугольников относительно соответствующей ячейки фиксировано и следует паттерну сверточной сетки. Для каждой ячейки карты признаков SSD предсказывает необходимые смещения для корректировки этих базовых прямоугольников под объекты и оценки классов, указывающих на присутствие конкретных категорий объектов.

  • Соотношения сторон и многошкальные карты признаков: SSD использует базовые прямоугольники с разными соотношениями сторон и использует их на нескольких картах признаков с разными разрешениями. Такой подход эффективно улавливает различные формы и размеры объектов. В отличие от других моделей, SSD не полагается на промежуточный полносвязный слой для предсказаний, а использует сверточные фильтры напрямую.

Как работает SSD?

  1. Откройте ноутбук: Перейдите на Google Colab (colab.research.google.com) и откройте ноутбук.
  2. Перейдите в меню “Runtime”: Щелкните на пункте “Runtime” в верхнем меню.
  3. Выберите “Изменить тип выполнения”: Щелкните “Изменить тип выполнения” в раскрывающемся меню.
  4. Выберите аппаратный ускоритель: Откроется окно. В этом окне выберите “GPU” в выпадающем меню “Аппаратный ускоритель”.
  5. Сохраните изменения: Щелкните “СОХРАНИТЬ”, чтобы применить изменения.
%%bashpip установить numpy scipy scikit-image matplotlib

Вывод:

Предварительно обученная модель: загрузка модели SSD (Single Shot Multibox Detector), предварительно обученной на наборе данных COCO с использованием фреймворка глубокого обучения, такого как TensorFlow или PyTorch, требует специальной реализации кода и доступа к соответствующим библиотекам и репозиториям моделей.

import torchssd_model = torch.hub.load('NVIDIA/DeepLearningExamples:torchhub', 'nvidia_ssd')utils = torch.hub.load('NVIDIA/DeepLearningExamples:torchhub', 'nvidia_ssd_processing_utils')

Вывод:

ssd_model.to('cuda')ssd_model.eval()

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

urls =["https://farm5.staticflickr.com/4080/4951482119_0ecd88aa33_z.jpg"]inputs = [utils.prepare_input(uri) for uri in urls]tensor = utils.prepare_tensor(inputs)

Запуск модели: Запустите сеть SSD для выполнения обнаружения объектов.

with torch.no_grad():    detections_batch = ssd_model(tensor)        results_per_input = utils.decode_results(detections_batch)best_results_per_input = [utils.pick_best(results, 0.40) for results in results_per_input]

Обучение на изображении: Чтобы получить доступ к аннотациям набора данных COCO и сопоставить идентификаторы классов с именами объектов, вы можете использовать API COCO. API COCO позволяет получить информацию о наборе данных COCO, включая категории объектов и соответствующие им метки.

classes_to_labels = utils.get_coco_object_dictionary()

Показ предсказания: Для визуализации обнаруженных объектов на изображении с использованием категорийных меток набора данных COCO

from matplotlib import pyplot as pltimport matplotlib.patches as patchesfor image_idx in range(len(best_results_per_input)):    fig, ax = plt.subplots(1)    # Показать исходное, денормализованное изображение...    image = inputs[image_idx] / 2 + 0.5    ax.imshow(image)    # ...с обнаруженными объектами    bboxes, classes, confidences = best_results_per_input[image_idx]    for idx in range(len(bboxes)):        left, bot, right, top = bboxes[idx]        x, y, w, h = [val * 300 for val in [left, bot, right - left, top - bot]]        rect = patches.Rectangle((x, y), w, h, linewidth=1, edgecolor='r',\         facecolor='none')        ax.add_patch(rect)        ax.text(x, y, "{} {:.0f}%".format(classes_to_labels[classes[idx] - 1],\         confidences[idx]*100), bbox=dict(facecolor='white', alpha=0.5))plt.show()

Вывод:

Обучение по методу SSD

  • Присваивание информации о граунд-трут: В SSD мы присваиваем информацию о граунд-трут, то есть фактические местоположения и категории объектов, конкретным выходам внутри фиксированного набора выходов детектора. Этот процесс важен для обучения модели правильно распознавать объекты.
  • Стратегия сопоставления: При обучении SSD каждую коробку граунд-трут сопоставляет с дефолтными коробками на основе наилучшего перекрытия Jaccard. Перекрытие Jaccard измеряет насколько предсказанная коробка перекрывается с коробкой граунд-трут. Любая дефолтная коробка с перекрытием Jaccard выше порога (обычно 0,5) с коробкой граунд-трут считается соответствующей. В отличие от других методов, таких как MultiBox, SSD позволяет соответствовать нескольким дефолтным коробкам одной коробке граунд-трут в случае, если их перекрытие Jaccard превышает порог. Это упрощает задачу обучения, поскольку модель может предсказывать высокие оценки для нескольких перекрывающихся дефолтных коробок вместо того, чтобы быть принужденной выбирать только одну.
  • Цель обучения: Цель обучения для SSD происходит от объекта MultiBox, но расширена для работы с несколькими категориями объектов. Она включает как потерю локализации (loc), так и потерю уверенности (conf):

Выходы детектора

В SSD информация о действительных местоположениях объектов (т.е. фактические местоположения и категории объектов) должна быть присвоена определенным выходам в фиксированном наборе выходов детектора.

  • Функция потерь локализации (Lloc): Эта функция потерь измеряет разницу между предсказанными параметрами рамки (например, координатами рамки) и фактическими параметрами рамки. Она использует функцию потерь Smooth L1.
  • Функция потерь уверенности (Lconf): Рассчитывает функцию потерь уверенности с помощью функции потерь softmax по нескольким классам. Она измеряет разницу между предсказанными оценками классов и фактическими метками классов. Общая функция потерь представляет собой взвешенную сумму функций потерь локализации и уверенности.
  • Жесткое негативное майнинг: Для борьбы с дисбалансом между положительными (соответствующими) и отрицательными (несоответствующими) примерами во время обучения SSD использует жесткий негативный майнинг. Он выбирает подмножество отрицательных примеров на основе наивысшей функции потерь уверенности для каждой составной рамки (default box). Цель состоит в поддержании разумного соотношения между отрицательными и положительными примерами (обычно около 3:1) для более эффективного и стабильного обучения.
  • Аугментация данных: Применяется аугментация данных для повышения устойчивости модели к разным размерам и формам входных объектов. Во время обучения каждое входное изображение может быть подвержено нескольким преобразованиям, включая обрезку, изменение размера и горизонтальное отражение. Эти аугментации помогают модели лучше обобщать реальные сценарии.

В целом, процесс обучения SSD включает присвоение информации о действительных местоположениях объектов составным рамкам (default boxes), определение цели обучения, которая включает функции потерь локализации и уверенности, тщательный выбор масштабов и соотношений сторон составных рамок, работу с дисбалансом положительных и отрицательных примеров, а также аугментацию данных для повышения устойчивости модели.

Сравнение с другими моделями обнаружения объектов

SSD выделяется своей быстротой работы в режиме реального времени, простотой и хорошим балансом между точностью и скоростью. Он хорошо подходит для множества приложений, особенно тех, которые требуют эффективного обнаружения объектов в реальном времени или практически в реальном времени. Однако для задач, требующих высшего уровня точности, более подходящими могут быть модели, такие как Faster R-CNN, RetinaNet или Cascade R-CNN, несмотря на их большие вычислительные требования. Выбор модели зависит от конкретных требований и ограничений приложения.

Приложения SSD

  • Автономные транспортные средства: Используются для обнаружения объектов в реальном времени в самоуправляемых автомобилях для определения пешеходов, транспортных средств и препятствий на дороге.
  • Системы наблюдения: Применяются в системах безопасности и наблюдения для обнаружения и отслеживания злоумышленников или подозрительной активности в контролируемой зоне.
  • Аналитика розничной торговли: Розничные торговцы используют SSD для отслеживания запасов на полках магазина, определения поведения покупателей и анализа шаблонов покупок.
  • Промышленная автоматизация: В производственных условиях SSD помогает контролировать качество путем обнаружения дефектов продукции на производственной линии.
  • Применения дронов: Дроны, оснащенные SSD, могут выполнять такие задачи, как поисково-спасательные операции, аграрный мониторинг и инспектирование инфраструктуры путем обнаружения объектов или аномалий из воздуха.

Проблемы и ограничения SSD

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

  • Обнаружение маленьких объектов: Одно из основных ограничений SSD заключается в его эффективности при обнаружении крошечных объектов. Маленькие объекты могут представлять сложности для точности обнаружения из-за неэффективности составных рамок в представлении их размеров и формы внутри пирамиды признаков.
  • Сложные фоны: Объекты, расположенные на сложных или загроможденных фонах, могут представлять сложности для SSD. Модель может производить ложные срабатывания или неправильно классифицировать объекты из-за путаницы визуальной информации окружающей среды.
  • Компромисс между скоростью и точностью: В то время как SSD отличается скоростью, достижение высокой точности может требовать компромиссов. В приложениях, требующих большой точности, может быть предпочтительным использование альтернативных методов обнаружения объектов, более точных, но требующих больших вычислительных ресурсов. Если нам нужна быстрая предсказательная модель, мы используем SSD, но она имеет меньшую точность.
  • Сложности настройки: Тонкая настройка SSD для конкретных приложений может требовать большого количества труда и ресурсов. Настройка и оптимизация под конкретные случаи использования могут потребовать экспертизы в глубоком обучении.

Проект на SSD

Защита рук от дробилок: Использование SSD (Single Shot MultiBox Detector) в проекте имеет большое значение, поскольку оно является основой модели обнаружения объектов, используемой для определения и отслеживания рук вблизи дробилок. Вот как SSD используется в проекте:

Для получения исходного кода проекта скопируйте репозиторий:

git clone https://github.com/NeHa77A/Shredder-Machine-Hand-Protection.git

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

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

Реальные кейсы

  • Автономное вождение: Самоуправляемые автомобили Tesla используют SSD и другие техники компьютерного зрения для обнаружения и классификации объектов на дороге, таких как пешеходы, автомобили и дорожные знаки. Эта технология является важным элементом для достижения продвинутых систем поддержки водителя и полностью автоматического вождения.
  • Аэропортовая безопасность: Аэропорты используют системы наблюдения на базе SSD для контроля пассажиров и багажа. SSD помогает определить подозрительные объекты, безнадзорные сумки и необычные действия, повышая безопасность.
  • Управление запасами в розничной торговле: Розничные торговцы применяют SSD для управления запасами, обеспечивая быстрое и точное подсчет товаров на полках магазина. Он помогает отслеживать уровни запасов и предотвращать разногласия в инвентаризации.
  • Промышленная автоматизация: Контроль качества в производстве: Производственные отрасли используют SSD для обеспечения качества продукции. Он применяется для проверки изделий на дефекты, проверки расположения этикеток и обнаружения загрязнений на линии производства.
  • Линии сборки роботов: В робототехнике используется SSD для идентификации и поиска объектов в динамических средах. Это особенно полезно в операциях взятия и размещения (pick-and-place) и других робототехнических задачах.

Эти примеры из реального мира демонстрируют гибкость и значение SSD в различных отраслях.

Заключение

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

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

Основные выводы

  • Эмпирические результаты демонстрируют, что SSD часто превосходит традиционные модели обнаружения объектов по точности и скорости.
  • SSD использует многомасштабный подход, позволяющий обнаруживать объекты различных размеров внутри одного и того же изображения.
  • SSD – универсальный инструмент для различных задач компьютерного зрения.
  • SSD известен своей возможностью обнаружения объектов в реальном времени или практически в реальном времени.
  • Использование большего числа основных рамок позволяет SSD лучше адаптироваться к сложным сценам и сложным вариациям объектов.

Часто задаваемые вопросы

Показываемые в этой статье материалы не принадлежат Analytics Vidhya и используются по усмотрению автора.