Как стать автором
Обновить

Комментарии 7

Не понятно вот что:


Загрузим веса с ImageNet в Xception, из которой убраны последние полносвязные слои. Прогоним наш датасет через эту сеть, чтобы получить признаки, которые свёрточная сеть может извлечь из изображений (так называемые bottleneck features):

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


Создадим полносвязную сеть и обучим её на признаках, полученных из свёрточных слоёв, используя для валидации специально отложенную часть исходного набора данных:

У нас есть только полносвязанные слои, без сверточных? И обучаем их на сохраненных в шаге 1 изображениях (признаках на выходе сверточной сети) и labels?

Да, мы делаем прямой проход изображений через свёрточные слои сети и сохраняем выделенные признаки. Лейблы сохранять не нужно, так как мы выставили у генератора
shuffle=False

и потом без проблем восстановим порядок лейблов.

На следующем шаге мы создаем полносвязную сеть и тренируем её на признаках, сохранённых на первом шаге. По сути этот процесс похож на вариант, когда мы сразу добавляем к сверточной части сети полносвязную и «замораживаем» обучение у свёрточных слоёв, однако он серьёзно экономит нам ресурсы, позволяя избежать повторения прямого прогона изображений через свёрточные слои, веса которых не меняются, на каждой эпохе обучения.
Такой вопрос, если последний слой делать не полносвязным, а
sigm(sum(x-y)^2)

где x — вектор предыдущего слоя, а y подбираемые переменные?
Свернём исходный тензор 1х1 свёрткой, подобно тому как мы делали в блоке Inception, получив тензор (M−2)∗(M−2)∗C2. Эта операция называется pointwise convolution

А разве при 1x1 свертке c шагом 1 по пространственным координатам меняются размерности? Вроде должно быть M∗M∗C2.
Вы абсолютно правы, размерность поменяется на следующем шаге, где мы применим свёртки 3х3.
Видимо эта ошибка закралась, когда я копировал формулу. Спасибо за уточнение, исправил.
1) > InceptionResNetV2 имеет 55 873 736 обучаемых параметров и весит 215 Мб, достигая точности 80.4%.
> Xception… имеет 22 910 480 весов и весит 88 Мб. При этом точность классификации на ImageNet составляет 79%.
А можно ли догнать лидера InceptionResNetV2 по точности немного увеличив, например, количество слоёв (типа вместо 16->32 сделаем 16->35 или 40)?

2) В Rethinking the Inception Architecture for Computer Vision предлагалась архитектура, состоящая из свёрток 1xN и Nx1 в различных комбинациях. Это подход в итоге забраковали? Можно ли его скомбинировать с данным? Т.е. в итоге вместо свёртки по объёму использовать линейные свёртки по «осям».
А можно ли догнать лидера InceptionResNetV2 по точности немного увеличив, например, количество слоёв (типа вместо 16->32 сделаем 16->35 или 40)?

Хороший вопрос. Полагаю, что если не догнать, то приблизиться вплотную к этому результату можно. Другое дело, что этого никто пока что не сделал (насколько мне удалось нагуглить). Я думаю, что причина в следующем: если мы хотим реально выжимать доли процентов из точности на ImageNet, то в 2018 году там в ход уже идёт более тяжелая артиллерия, а Xception (и впоследствии MobileNet) как раз опирается на идеологию того, что мы хотим сделать относительно компактную архитектуру, а не выдавить максимум перфоманса.

В целом, попробовать углубить Xception-like архитектуру и довести её до 80% accuracy — интересный челлендж, но к сожалению, я не обладаю достаточными аппаратными ресурсами, чтобы поэкспериментировать в этом направлении.

Это подход в итоге забраковали? Можно ли его скомбинировать с данным?

Почему же забраковали? Насколько я понимаю, вы говорите об InceptionV3, довольно распространённой архитектуре. Её я осознанно не брал в сравнение в статье, поскольку она показывает 78.8% top-1 accuracy на ImageNet, и потому сравнивать с ней не так наглядно.
Я думаю, что пытаться совместить эти подходы не стоит. Они и так похожи между собой и, как мне кажется, являются параллельными ветвями развития одной и той же модели — Inception-модуля.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.