Сколько изображений в классе достаточно для обучения CNN

12

Я начинаю проект, где задача состоит в том, чтобы идентифицировать типы кроссовок по изображениям. В настоящее время я читаю в реализации TensorFlow и Torch . Мой вопрос: сколько изображений на класс требуется для достижения разумной эффективности классификации?

Feynman27
источник
Определить «разумный»? Ваша цель - достичь точности, которая могла бы использоваться в производственной системе? Ваша цель - это что-то другое? Сколько существует классов? Существуют различные варианты подготовки перед тренировкой и обучения под наблюдением, которые могут сэкономить ваши усилия, поэтому не могли бы вы уточнить, стоит ли вам уделять внимание маркировке изображений или просто выбору какого-либо изображения. Наконец, насколько чистыми и простыми являются ваши целевые изображения? Изображения с фиксированным освещением и позой будут легче тренировать, чем фотографии «реального мира» с надетыми кроссовками.
Нил Слэйтер
Да, это будет использоваться в производстве. В настоящее время я не знаю, сколько будет классов, так как я не знаю, сколько разных типов кроссовок есть в библиотеке изображений. Мое лучшее предположение было бы порядка 50-100, но чем ближе описание кроссовок, тем меньше классы (например, air-jordan vs. air-jordan-ultrafit). К сожалению, библиотека изображений представляет собой смесь носимых кроссовок и кроссовок в виде фиксированных предметов с белым фоном.
Feynman27

Ответы:

2

С какого количества примеров обучения слишком мало при обучении нейронной сети? в резюме:

Это действительно зависит от вашего набора данных и сетевой архитектуры. Одно практическое правило, которое я прочитал (2), было несколько тысяч образцов на класс, чтобы нейронная сеть начала работать очень хорошо. На практике, люди пытаются увидеть.


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

введите описание изображения здесь


Франк Дернонкур
источник
0

Наилучший подход - собрать как можно больше данных. Тогда начните с проекта и создайте модель данных.

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

Высокая дисперсия : в этой ситуации вы увидите, что ошибка перекрестной проверки выше, чем ошибка обучения после конвергенции. Существует существенный разрыв, если вы строите график в зависимости от размера данных обучения.

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

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

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

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

XeqtR
источник
Я уже выполнил быстрый тест с использованием TensorFlow's Inception-v3. Лучшее, что он может сделать, - это дать мне очень точную классификацию курсов, например, «кроссовки», но мне нужно что-то более гранулированное, например «air-jordan-ultrafit». Вот почему я создаю новый тренировочный набор для использования с Inception.
Feynman27
Это странное определение «немного более гранулированный».
Дживан