Готовясь к этой статье, я видел несколько статей, видеороликов и курсов тут и там, объясняющих некоторые основные принципы компьютерного зрения. Однако многие из них были —

  1. Не обширные — они не охватывали достаточно тем и оставляли много места для догадок, таких как такие темы, как увеличение изображения.
  2. Вводит в заблуждение — некоторые курсы могут заставить вас поверить в то, что компьютерное зрение чрезвычайно сложно и требует большого опыта в области компьютерных наук и машинного обучения, прежде чем пытаться чему-либо научиться. Некоторые также устарели на несколько лет.

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

Тип проблемы

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

Сбор и обработка данных

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

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

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

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

  1. НЕ переусердствуйте, особенно с небольшими наборами данных, где выборки классов меньше нескольких сотен. Это может привести к тому, что модель будет работать хуже, чем модель ML, которая не использует увеличение.
  2. Отдайте предпочтение ONLINE, а не OFFLINE дополнению. Я продолжаю видеть всю эту рекламу автономных дополнений, увеличивающих размер набора данных. Новичку в компьютерном зрении искусственное увеличение наборов данных может показаться очень заманчивым. Однако это весьма ошибочное утверждение. Если ваши исходные изображения ошибочны или искажают образцы из реального мира, заявление о том, что ваш набор данных стал больше из-за дополнений, является чрезвычайно большим риском. Чтобы узнать больше о дополнении ОНЛАЙН и о том, как оно реализуется, обязательно прочитайте раздел «обучение» этого руководства.

После этого изображения должны быть помечены. В зависимости от типа проблемы маркировка может включать в себя рисование рамок вокруг определенных объектов или масок в случае сегментации. Существует множество инструментов для маркировки, таких как v7labs, roboflow, labelbox и др.

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

Модели

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

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

Таким образом, определить правильную модель не всегда просто. Однако вы можете сначала прочитать любую соответствующую литературу по интересующим вас моделям и посмотреть, насколько хорошо они работают по отношению друг к другу на общих наборах данных, таких как ImageNet и COCO. Вы также можете поискать в Интернете или научных ресурсах, если есть какие-либо документы/статьи, которые пытаются решить подобные проблемы.

Обучение

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

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

Во-первых, вы можете проводить эксперименты, в которых вы или компьютер будете постепенно изменять значения гиперпараметров, чтобы проверить различия в производительности. Это известно как исчерпывающий подход «поиска по сетке». Я уверен, что вы уже можете видеть проблемы с этим — во многих случаях слишком медленно и вычислительно дорого проверять производительность как можно большего количества комбинаций гиперпараметров. Однако при наличии достаточно большого пространства поиска вы гарантированно найдете оптимальное решение в этом пространстве поиска.

Альтернативный подход к проблеме настройки гиперпараметров, который становится все более популярным, заключается в использовании генетических алгоритмов, моделирующих естественный отбор. Например, можно установить фитнес-функцию (например, средневзвешенное значение между значениями mAP и mAP[0,5:0,95]), определяющую, насколько хорошо работает модель. Затем запускается серия «поколений», в которых гиперпараметры создаются из «мутированных» версий исходного набора гиперпараметров, где гиперпараметры случайным образом меняют значения, вызывая увеличение или уменьшение пригодности. Кроме того, используются комбинации лучших гиперпараметров предыдущих поколений. Со временем гиперпараметры стремятся к более оптимальным значениям, экономя огромное количество времени и повышая эффективность.

Возможно, некоторые из наиболее важных параметров, помимо ранее упомянутых гиперпараметров, — это количество эпох и размер пакета. Как правило, с увеличением эпохи точность модели увеличивается. Однако в определенный момент модель начнет «подходить» к обучающим данным — отсюда и важность использования проверочного набора, чтобы определить, когда модель начинает подходить. Учитывая, что ваш проверочный набор достаточно репрезентативен для всего набора данных, играйте с разными значениями эпохи, пока точность проверки и потери не стабилизируются.

Интерпретация результатов

Существует множество показателей, используемых для оценки моделей машинного обучения, особенно в компьютерном зрении. Чтобы назвать некоторые, есть точность, отзыв, mAP (средняя точность точности), mAP [0,5: 0,95] (mAP над пороговыми значениями IoU от 0,5 до 0,95), МНОГИЕ различные виды функций потерь и т. д.

В общем, если вам нужен показатель общей производительности модели, переходными метриками являются mAP и mAP[0,5:0,95]. mAP[0,5:0,95], как правило, является более полной метрикой для оценки общей емкости модели, но оба они обычно считаются хорошими показателями производительности модели.

С другой стороны, такие показатели, как точность и полнота, измеряют совершенно разные вещи. Если крайне важно не допустить ложных срабатываний, более высокая точность будет лучше. Если важно, чтобы не было ложноотрицательных результатов, более высокий отзыв будет лучше. В некоторых случаях может быть предпочтительнее использовать эти значения, а не просто использовать mAP и mAP[0,5:0,95].

Заключение

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