首页 > 解决方案 > 如何在 Android 上解释 mobilenetv2 分割结果输出?

问题描述

我使用Deeplab官方 Github 页面上提供的 python 脚本,用我自己的数据集训练了一个量化语义分割模型。我使用了mobilenetv2_coco_voc_trainaug主干。我检查了Netron中的结果模型以及输入输出的外观:

网络可视化

如您所见,输出是一个大小为 257x257 的 int64 数组。据我了解,该数组应包含每个数组索引处概率最高的标签索引,还是我遗漏了什么?但是,当我尝试在 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)
  }  

}

输入图像 分割结果

结果也不是那么准确,因为我得到了不应该的分段值。任何帮助,将不胜感激!

标签: androidtensorflowsemantic-segmentationtensorflow-litedeeplab

解决方案


还不能评论,让我们猜猜。

您正在尝试使用具有 int64 输出的量化模型。输出应为8bit 类型

是的,量化模型的准确性会下降


推荐阅读