2D точечная модель извлечения, аналогичная классификации без слоя активации в конце - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь выяснить, как я могу преобразовать модель классификации в модель извлечения 2d точек.т. е. обучаться обнаружению 4-х координат в изображении (не классифицируя его).

Было бы целесообразно удалить softmax в конце, но я не уверен, как бы я обучил модель, чтобы она соответствовала номеру Nкоординат.Я даже не уверен, как бы я структурировал помеченные данные.

Пользовательские Mobilenet Пример:

...
previous layer definitions
...

# final layer
def pool_and_classify(self):
            model = self.model
            model.add(AveragePooling2D(pool_size=(7,7),strides=(1,1)))
            model.add(Flatten())
            model.add(Dense(self.classes))
            # model.add(Activation('relu')) #was 'softmax'

def create(self, size):
        self.model = Sequential()
        self.model.add(Conv2D(32,kernel_size=(3,3),strides=(2,2), padding='same', input_shape=size))
        self.mobile_block(32,64)          
        self.mobile_block(128,128)
        self.mobile_block(256,256)
        self.separate()
        self.final_conv_block()
        self.pool_and_classify()

Если бы я хотел 4 координаты, последний плотный слой мог быпотенциально быть 8?

1 Ответ

0 голосов
/ 13 февраля 2019

Вы можете выполнить регрессию в последнем слое.Для извлечения 4 точек вам нужно предсказать 8 значения (координаты x и y для каждой точки).Для N баллов в целом вам нужно будет прогнозировать 2N значений.Ваш последний слой должен быть

model.add(Dense(2 * N))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...