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

Recommended Posts

prim.ko    3

Добрый вечер. Интересует как можно обучить модель с использованием vgg-16 предобученной? В keras это как говорит @ternaus из ods "делается мизинцем левой ноги". Причем вообще не глядя в монитор.   https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html .

А для Caffe можно так же просто? Интуитивно догадываюсь, что нужно как-то замораживать слои все сверточные и обучать только выход. И еще, например входы vgg-16 224*244*3. Моя сетка запрашивает на вход изображение 256*256. Изменять свою сеть?

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


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

Я делал в DIGITS, там при создании сетки указывается модель для загрузки (под окошком с текстом модели). Он прогрузит все слои которые имеют то же имя что и в caffemodel файле. Если не нужно их учить, что скорость обучения ставим в 0.

 param {
    lr_mult: 0.0
    decay_mult: 1.0
  }
  param {
    lr_mult: 0.0
    decay_mult: 0.0
  }

и учим, по поводу входного блоба, думаю лучше смастабировать входное изображение до размера входа сети. А после выход смасштабировать обратно. Хотя у меня сейчас вход 600х800 на vgg19 и ничего, учится.

  • Like 1

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


Ссылка на сообщение
Поделиться на других сайтах
prim.ko    3
1 час назад, Smorodov сказал:

Он прогрузит все слои которые имеют то же имя что и в caffemodel файле

При этом память GPU больше потребляется,  в отличие от обучения своей сеткой с нуля? В Keras понравилось, что мы предсказываем с VGG-16 в отдельной итерации на трогая память GPU. А тут как?

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


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

Тут с замороженными слоями тоже меньше памяти лопает и учится быстрее.

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


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

То есть подход следующий, я правильно понял?
1) загружаем веса

2) Изменяем свою сеть. Объявляем столько слоев из прототипа модели VGG-16 сколько необходимо, в своем прототипе модели. Вот на этом моменте замораживаем добавленные слои. Здесь попрошу подробнее разъяснить. Свои слои при этом выбрасываются? Оставляются только выходы из своей модели?

3) Получили необходимый loss, возвращаем все слои на место? 

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


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

Я файнтюнил без замораживания слоев просто с learning rate меньше в 10 раз и норм, но возможно это не самое оптимально решение и зависит от кол-ва данных.

Судя по табличке finetuned acc всегда больше получалась

https://github.com/mrgloom/kaggle-dogs-vs-cats-solution

 

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


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

Как я понял, он читает vgg19.caffemodel  и смотрит совпадают ли названия и свойства слоев, если все совпадает грузятся веса. Прототип сетки уже содержит нужный кусок из VGG19, вот туда и грузятся веса, а все что осталось не тронутым инициализируется случайными числами (надо прописать свойства     weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }

).

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

train_val(1).prototxt

  • Like 1

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


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

Интересная сетка. Для сегментации? С какой целью делаются множественные crop?

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


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

Да, для бинарной сегментации, это FCN8s немного переделанная.

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

А потом кропается постепенно.  Хотел еще повороты приделать но питонский слой не осилил, лень пока копаться пока учится вроде нормально.

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


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

 

7 минут назад, Smorodov сказал:

Хотел еще повороты приделать но питонский слой

На этот счет хочу еще проверить возможно ли будет загружать несколько классов в один модуль, используя один файл, но несколько python layers. Удобно для ошибки и data test aug будет использовать

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×