Самый быстрый способ анализа моделей для обнаружения объектов

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

Вы когда-нибудь чувствовали, что не можете идти в ногу со всеми новыми модными моделями, которые выходят из лабораторий каждый день?

Мне кажется, что я вижу такие сюжеты каждый день

А теперь думаю:

Я тренировал Yolov3 несколько лет назад, и это было потрясающе, давайте проверим эти совершенно новые архитектуры и создадим еще лучшие модели!

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

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

Это моя вина? Я ошибся в своем коде? может быть, мой набор данных не так хорош? Как я могу быстро узнать, лучше ли он, чем другие модели?

Итак, как вы можете быть действительно уверены в своей способности тренироваться и воспроизводить результаты? Всегда иметь лучшую архитектуру на кончиках ваших пальцев? И, наконец, выбрать лучшие алгоритмы для ВАШИХ БИЗНЕС-ЗАДАЧ?

Это то, что мы рассмотрим в этой статье, мы разделим работу на несколько частей:

  • Выберите подходящий набор данных (для обнаружения объектов)
  • Выберите кучу моделей и создайте сценарии обучения
  • Сравните журналы тренировок и метрики
  • Сравните выступления вживую на некоторых изображениях

Пойдем !

Для простоты этого урока мы будем использовать Платформу Piccellia, поскольку она дает нам отличную панель инструментов для беспрепятственного выполнения всех вышеперечисленных задач.

Выберите набор данных

Поскольку мы собираемся обучать модели для задачи обнаружения объектов, нам нужно выбрать набор данных для… ну вы поняли! Обнаружение объектов !

Чтобы получить значительные результаты, мы будем обучать наши модели примерно на 6500 изображениях с аннотациями 144000 автомобилей и 106000 пешеходов, которые выглядят следующим образом.

Набор данных называется VizDrone, и его можно найти полностью аннотированным 11 различными классами на Picsellia.

Выберите модели

Picsellia предлагает несколько готовых к использованию архитектур SOTA, в том числе самые последние (например, EfficientDet-dx).

Для нашего теста мы сравним следующие архитектуры (совершенно новые и старые):

  • EffectiveDet-d0 (базовый EffectiveDet)
  • EffectiveDet-d2 (тяжелее EffectiveDet)
  • более быстрый-rcnn-resnet50 (более старая модель)
  • ssd-mobilenet-640 (более легкая старая модель)

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

Мы видим, что наш набор данных хорошо привязан, теперь давайте создадим разные эксперименты.

Создать сценарий обучения

Мы создадим несколько «фиктивных» экспериментов, что означает, что мы не будем пытаться оптимизировать гиперпараметры в этой статье (не волнуйтесь, мы рассмотрим эту тему в следующей) .

Тем не менее, я оставлю параметры по умолчанию, предложенные Picsellia, и буду использовать одни и те же параметры для каждого эксперимента, поэтому мы сравниваем только архитектуры.

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

Повторив операцию для всех моделей, мы можем убедиться, что у нас все настроено.

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

Теперь нам осталось только запустить обучение и сохранить все метрики и журналы на платформе благодаря Piccellia's Python SDK.

Один из способов сделать это — проверить вкладку «launch» в одном из этих экспериментов и скопировать команду для запуска предварительно упакованного образа Docker, готового к обучению.

(По понятным причинам мы размыли нашу учетную запись и токен проекта, но вы можете заменить их своими)

Теперь я просто скопирую эту команду на наш сервер с графическими процессорами NVIDIA и увижу, как произойдет волшебство!

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

Сравните результаты

Если ваши тренировки закончены, теперь вы можете вернуться в Picsellia, в списке экспериментов выбрать их все, а затем нажать «Сравнить».

Теперь вы должны увидеть панель всех различных журналов тренировок, показателей оценки…

Какой вывод мы можем сделать о наших обученных моделях?

Чтобы выполнить первый, действительно упрощенный анализ, мы рассмотрим только несколько показателей оценки:

  • mAP (средняя средняя точность)
  • AR (средний отзыв)

И немного журналов тренировок:

  • Полная потеря

Если вы не знаете, что это за метрики, и хотите узнать о них подробнее, я рекомендую вам проверить это сообщение в блоге, в котором все подробно объясняется!

Здесь мы видим, что наши модели чему-то учатся, поскольку кривая потерь медленно уменьшается. Но довольно шумно…

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

Из этого графика мы можем узнать, что модели efficientDets сходятся быстрее, чем другие, и что дисперсия faster-rcnn не уменьшается со временем.

Вы должны понимать, что наш анализ НИ В КОЕМ СЛУЧАЕ не является исчерпывающим и что каждой архитектуре потребуются разные параметры для оптимизации процесса обучения. Но это дает нам хорошее представление о том, как они ведут себя по сравнению друг с другом за очень короткое время.

Если мы отсортируем наши эксперименты по показателю AR@10 (чем выше, тем лучше), то увидим, что наша модель faster-rcnn работает лучше, чем другая архитектура. . Это означает, что эта модель будет той, которая, скорее всего, НЕ будет давать ложных прогнозов.

Мы также видим, что faster-rcnn также является моделью с лучшим глобальным mAP, что означает, что это на самом деле самая точная модель.

Вот другие доступные показатели (которые являются вариациями mAP или AR), мы видим, что они следуют той же тенденции.

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

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

Сравните выступления

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

Для теста мы будем использовать следующее изображение, на котором мы можем видеть наложение правды. Это изображение использовалось для оценки, поэтому оно не является частью тренировочного набора.

Нет, мы попробуем наши модели, отрегулируем порог и посмотрим, как они работают.

Вот шаги, которые мы наблюдаем на анимации выше:

  • Попробуйте модель EffectiveDet-d2 и установите разумный порог
  • Попробуйте все другие модели с таким же порогом
  • Отрегулируйте порог, пока мы не увидим пешеходов.
  • Попробуйте все модели с этим порогом

Как мы видим, faster-rcnn лучше всего работает с нашим изображением, а это означает, что наш предыдущий небольшой анализ был не так уж далек от истины!

Вывод

Цель этой статьи состояла в том, чтобы посмотреть, сможем ли мы быстро идентифицировать, использовать и сравнить некоторые архитектуры моделей (более или менее новые) и выполнить быстрый анализ, который послужит основой для наших будущих полных исследовательских экспериментов.

Как мы видим, это не самые новые, причудливые архитектуры, которые лучше всего работают с нашим первым подходом, не означает, что они могут увеличить производительность при реальном, исчерпывающем обучении.

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

Если вы считаете, что Picsellia предлагает очень оптимальный способ проведения экспериментов, и хотите присоединиться, у нас все еще есть несколько мест на бета-тестирование здесь.

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

Пожалуйста, напишите мне в комментариях, что бы вы хотели, чтобы я обсудил в следующих статьях!

Увидимся там 👋