Как интерпретировать вывод результатов сегментации mobilenetv2 на Android?

Я обучил квантованную модель семантической сегментации с моим собственным набором данных, используя скрипты Python, доступные на официальная страница Deeplab на Github. Я использовал магистраль mobilenetv2_coco_voc_trainaug. Я проверил модель результата в Netron, и вот как выглядит ввод и вывод:

нетронная визуализация

Как видите, на выходе получается массив int64 размером 257x257. Насколько я понимаю, этот массив должен содержать индекс метки с наибольшей вероятностью для каждого индекса массива, или я что-то упустил? Но когда я пытаюсь прочитать это в Android, я получаю только нули и единицы, безразличные к тому, что на картинке, люди, корова и т. д.

for (y in 0 until imageHeight) {
  for (x in 0 until imageWidth) {
    // resultBuffer is a ByteBuffer of size imageSize * imageSize * 8
    val value  = resultBuffer.getLong((y * imageWidth  + x) * 8)
  }  

}

входное изображение результат сегментации

Результат тоже не такой точный, так как я получаю значения сегментации там, где не должен. Любая помощь будет оценена по достоинству!


person blade    schedule 19.08.2020    source источник


Ответы (1)


Пока не могу комментировать, давайте попробуем угадать.

Вы пытаетесь использовать квантованную модель с выводом int64. Вывод должен быть 8-битного типа

И да, точность падет с квантованной моделью.

person Alex K.    schedule 28.08.2020