I. Определите проблему и получите данные

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

После того, как вы определили свою проблему, вы должны начать думать о том, как вы собираетесь получать свои данные. Один из наиболее популярных подходов - разработка алгоритма парсинга веб-страниц, который извлекает изображения из тегов ‹img url =‘ .. ’› на веб-сайтах. Вы также можете использовать Mechanical Turk для аутсорсинга ваших потребностей в сборе данных. Обычно я начинаю проекты, просто делая скриншоты изображений в Интернете и меняя место хранения снимков экрана по умолчанию, чтобы облегчить сбор данных таким образом. Очевидно, что этот процесс очень трудоемкий, однако я считаю, что он отлично подходит для получения быстрого прототипа проекта.

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

II. Архитектура свертки, стремление к возрастающей сложности

Собрав достаточно данных для начала, вы построите сверточную сеть. Это на удивление легко с API-интерфейсами TFlearn, Keras или PyTorch. В статье ниже будет представлен начальный код, который вы можете легко скопировать и вставить в свой проект, чтобы получить очень простую архитектуру CNN.



Прогрессивная сложность: когда вы экспериментируете со своей сверточной сетью, лучше всего начинать с простой структуры, что-то вроде 1–4 сверточных слоев. Возможно, вы захотите добавить больше слоев по мере добавления дополнительных данных или если ваши первоначальные результаты неудовлетворительны. Когда вы экспериментируете со своей сетевой архитектурой, важно иметь набор данных, зарезервированный для тестирования модели. Таким образом, вы можете использовать эту производительность в качестве элемента управления для экспериментов со сложностью вашей модели.

III. Расширение данных

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

IV. Интерпретация результатов, матрица неточностей

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

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

V. Сбор данных и автоматическое улучшение

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



Заключение

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

CShorten

Коннор Шортен - студент факультета информатики Атлантического университета Флориды. Научные интересы в области компьютерного зрения, глубокого обучения и разработки программного обеспечения.