В этом уроке (создание новой модели для обнаружения объектов) в середине он упоминается как
"Обычно мы инициализируем веса этого экстрактора функций, используя веса из контрольной точки классификации Slim Resnet-101, и мы знаем, что изображения были предварительно обработаны при обучении этой контрольной точки путем вычитания среднего значения канала из каждого входного изображения. Таким образом, мы реализуем Функция предварительной обработки для репликации того же канала означает вычитание. "
Сейчас я пытаюсь загрузить предварительно подготовленную модель для MobileNet_v1_1.0_224
на этой странице .
Я проверил все переменные из загруженной контрольной точки и те переменные, которые требовались для инициализации при обучении FasterRcnn. Загруженный контрольно-пропускной пункт имеет больше переменных, чем необходимо.
Например,
Мне нужно инициализировать эту переменную 'FirstStageFeatureExtractor/MobilenetV1/Conv2d_0/BatchNorm/beta'
.
Но в загруженных переменных есть
'MobilenetV1/Conv2d_0/BatchNorm/beta/ExponentialMovingAverage': [32]
'MobilenetV1/Conv2d_0/BatchNorm/beta/RMSProp_1': [32],
'MobilenetV1/Conv2d_0/BatchNorm/beta': [32],
Мои запросы
(1) Так что для меня достаточно использовать последний 'MobilenetV1/Conv2d_0/BatchNorm/beta'
для инициализации 'FirstStageFeatureExtractor/MobilenetV1/Conv2d_0/BatchNorm/beta'
.
Это правильно?
(2) Для чего нужны ExponentialMovingAverage и RMSProp_1?
(3) Тогда как разделить FirstStageFeatureExtractor и SecondStageFeatureExtractor в FasterRcnn в Tensorflow?
(4) Эти инициализированные переменные используют инициализированные веса, для неинициализированных переменных будет использоваться Xavier initializer
в соответствии с файлом конфигурации, это правда?
initializer {
variance_scaling_initializer {
factor: 1.0
uniform: true
mode: FAN_AVG
}
}
EDIT:
Тогда для переменной MobilenetV1/Conv2d_12_pointwise/depthwise_weights shape=(3, 3, 512, 1)
я не могу найти точную переменную.
Те, кто ближе,
'MobilenetV1/Conv2d_12_depthwise/depthwise_weights': [3, 3, 512, 1],
'MobilenetV1/Conv2d_12_depthwise/depthwise_weights/RMSProp': [3, 3, 512, 1],
'MobilenetV1/Conv2d_12_depthwise/depthwise_weights/ExponentialMovingAverage': [3, 3, 512, 1],
'MobilenetV1/Conv2d_12_depthwise/depthwise_weights/RMSProp_1': [3, 3, 512, 1],
Таким образом, я использовал веса переменной 'MobilenetV1 / Conv2d_12_depthwise / deepwise_weights': [3, 3, 512, 1] из загруженной контрольной точки для назначения
MobilenetV1/Conv2d_12_pointwise/depthwise_weights shape=(3, 3, 512, 1)