Получение логитов вывода из модели deeplab

Для получения сегментации входного изображения. Я могу получить сематические метки (например, SemanticPredictions), которые argmax применяются к логитам (ссылка).

Мне было интересно, есть ли простой способ получить логиты до argmax? Я надеялся найти имя выходного тензора и просто передать его в свою tfsession, как показано ниже:

tf_session.run(
        self.OUTPUT_TENSOR_NAME,
        feed_dict={self.INPUT_TENSOR_NAME: [np.asarray(input_image)]})

Но мне не удалось найти такое имя тензора в коде, который показывает логиты или выходные данные softmax.


person Zahra    schedule 08.04.2019    source источник


Ответы (1)


Для модели, обученной из MobileNet_V2, параметр self.OUTPUT_TENSOR_NAME = 'ResizeBilinear_2:0' извлекает логиты до выполнения argmax.

Я подозреваю, что это то же самое для xception, но не проверял это.

Я пришел к этому ответу, загрузив свою модель в tensorflow. Затем напечатайте имя всех слоев в загруженном графике. Наконец, я взял имя конечного выходного слоя перед последним слоем «ArgMax» и провел некоторые выводы, используя его.

Вот ссылка на вопрос stackoverflow о печати имен слоев на графике. Мне очень помог ответ Теда.

Кстати, к выходным слоям моделей DeeplabV3 не применяется SoftMax. Таким образом, вы не можете просто взять необработанное значение элементов выходных векторов в качестве достоверности.

person Jacob    schedule 18.06.2019