Перейти к содержимому
Compvision.ru
BeS

Большая база, или Fine-tuning

Recommended Posts

Всем привет,

Возник такой вопрос:

Вот хочу я на основе DL сделать, например, детектор котиков. И вот тут есть два варианта решения задачи:

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

2) Взять предтренированную на ImageNet сетку и зафайнтюнить её базой котиков среднего размера.

Учитывая опыт всяких RCNN и YOLO, тренировка на ImageNet + файнтюнинг на PASCAL дает близкие к state of the art результаты на задачах, например детектированию пешеходов. Хотя в ImageNet + PASCAL число людей вряд ли достигает хотя бы 1M...а вот методов основанных только на тренировке большой базой, без предтренировке на ImageNet в топах не видно...отсюда возникает вопрос, что же все таки лучше: специализированный детектор для конкретного класс объектов, или что-то универсальное, что умеет различать несколько различных классов? В литературе сравнений таких не встреал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Думаю лучше файнтюнить, тем более что можно ведь зафайнтюнить и на большой базе, если она есть.

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

 

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я думаю что для уменьшения ошибки в два раза, нужно увеличить размер выборки вдвое.

Но это грубо конечно очень.

Резутьтат теоретически должен сильно зависеть от эффективной размерности данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
58 minutes ago, Smorodov said:

Я думаю что для уменьшения ошибки в два раза, нужно увеличить размер выборки вдвое.

Но это грубо конечно очень.

Резутьтат теоретически должен сильно зависеть от эффективной размерности данных.

Ну вот тут не совсем понятно, относительно чего уменьшать ошибку.

Грубо говоря, если я беру хорошую, выровненую базу жестких объектов, скажем из 100K сэмплов необходимого класса и начинаю на ней обучать сетку, то на тестовой выборке в итоге получается точность ~99%. Но на реальных данных сеть фолсит. При этом как бороться с оверфитом на глубоких сетках не понятно, т.к. весь Deep Learning строится на оверфите моделей (dropout'ы, dither'ы и прочие техники для избегания оверфита не особо как помогают).

Да и выобрку можно увеличивать долго...можно, скажем, взять 10M изображений людей и получить результаты хуже, чем у Faster-RCNN, который взял фичи от VGG16 и зафайнтюнился на PASCAL, где людей всего дай бог тысяч 5-10...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

что такое dither'ы?

 

Скорее всего на реальных данных намного больше сэмплов отрицательного класса и поэтому точность падает.

 

Цитата

можно, скажем, взять 10M изображений людей и получить результаты хуже, чем у Faster-RCNN, который взял фичи от VGG16 и зафайнтюнился на PASCAL, где людей всего дай бог тысяч 5-10

это реальная история из жизни? или результаты из какого то пейпера?

 

Можно попробовать 2 варианта обучить с нуля на 10M и зафайнтюнится на 10M и посмотреть что лучше.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 minutes ago, mrgloom said:

что такое dither'ы?

Очень простая техника для улучшения обобщающей способности(тупо примешивает к блобам равномерно распределенный шум): http://arxiv.org/abs/1508.04826

10 minutes ago, mrgloom said:

Скорее всего на реальных данных намного больше сэмплов отрицательного класса и поэтому точность падает.

 

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

17 minutes ago, mrgloom said:

это реальная история из жизни?

Это эмпирическое предположение, основанное на том, что сетка обучаема с нуля, правда на базе меньшего размера, чем 10M, катастрофически проигрывает Faster-RCNN, который обучался на базе, содержащей на порядок меньше искомых объектов. При этом увеличение базы за счет jittering'а не сильно улучшает ситуацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Цитата

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

я имел ввиду что когда у вас в caffe test phase то у вас accuracy считается по данным в которых pos:neg 50%:50%, а может надо тестировать на выборке которая по распределению pos:neg близка к распределение на реальных данных и так вы получите accuracy приближенную к реальной.

 

Вообще метрика accuracy не применима к unbalanced data, т.к. например у нас pos:neg 1:100 и если  мы предиктим всё как негативное, то получаем хорошую accuracy, но понятно что это неадекватно.

 

Кстати как в caffe можно управлять соотношением pos:neg в батче? Только в изначальное хранилище записывать в необходимой пропорции pos:neg и предполагая что оттуда будет брать сэмплы равномерно рэндомом и в среднем в батче мы получим pos:neg примерно в таком же отношении?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×