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

Подготовка данных изображения

Для эффективного обучения модели CNN для выполнения пользовательской задачи обучающее изображение (данные) является наиболее важной частью. Расширение данных — это наиболее распространенный метод предварительной обработки, помогающий генерировать больше обучающих данных из существующей обучающей выборки посредством случайного преобразования. Вы НЕ МОЖЕТЕ создавать новую информацию, но можете повторно смешивать существующую информацию, чтобы модель могла лучше обобщать, чтобы избежать переобучения. Общие преобразования включали: вращение, масштабирование, сдвиг и масштабирование.

Создайте и скомпилируйте модель CNN с помощью трансферного обучения

Всегда приятно тренировать собственные данные с нуля до единицы. Однако из-за ограниченного времени и ресурсов обычно загружается предварительно обученная модель CNN, такая как vgg16. Вариантов больше, но vgg16 обычно работает достаточно хорошо для обычного использования. Что такое предварительно обученная модель? Помните, в части 1а мы знали, что шаблон пикселей универсален? Ученые и исследователи потратили так много времени на обучение модели CNN с огромным количеством изображений. Благодаря их вкладу мы можем загрузить (бесстыдно заимствовать) результат их обучения для выполнения нашей собственной задачи.

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

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

Не забудьте использовать свой собственный классификатор в трансферном обучении

Распространенной ошибкой является то, что иногда мы забываем использовать собственный классификатор. Модель CNN — это часть, которая помогает вам идентифицировать, обнаруживать и распознавать шаблон пикселей, классификатор — это последняя часть, сообщающая вам, каков результат вывода. Результатом классификатора на самом деле является массив значений. Если вы не понимаете, что такое массив? Нет проблем, это означает, что если у вас есть 10 помеченных имен классов, он вернет 10 значений, каждое из которых представляет вероятность для каждого класса. Затем классификатор выберет класс с наибольшей вероятностью в качестве выходного результата, сообщая вам имя прогнозируемого класса.

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

Вывод

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

Ваше здоровье