我正在尝试使用DeepLabV3在Coral上进行图像分割和对象检测/分类。
我能够在珊瑚上使用DeepLabV3成功地运行semantic_segmentation.py示例,但是只显示了一个带有分割对象的图像。
我看到它为颜色分配了标签-如何将基于模型的标签信息制作的labels.txt文件与这些颜色相关联? (我怎么知道哪种颜色对应哪个标签)。
当我尝试运行 引擎= DetectionEngine(args.model)
使用deeplab模型,我得到了错误
ValueError:检测模型应具有4个输出张量!此模型 有1。
我猜这是错误的方法吗?
谢谢!
答案 0 :(得分:1)
我相信您已经就相同的查询与我们联系。我只想在此处粘贴答案,以供其他人参考:
“检测模型通常具有4个输出张量来指定位置,类别,分数,数量和检测。您可以在此处了解更多信息。相反,分段模型只有一个输出张量,因此如果以同样的方式对待它,您很可能会尝试段错误尝试访问错误的内存区域。如果您想在同一张图像上执行所有三个任务,我的建议是创建3个不同的引擎,并将图像分别提供给每个引擎。问题在于,每次切换模型时,模型都可能会存在数据传输瓶颈,无法加载到TPU上。我们这里有一个示例,说明如何在单个TPU上运行2个模型修改它以采用3个模型。”
在最后一个音符上,我刚刚看到您添加了:
如何将基于模型的标签信息制作的labels.txt文件与这些颜色相关联
我只是不认为您可以对细分模型执行此操作,但也许我对您的查询感到困惑?
以对象检测模型为例,有4个输出张量,第二个张量为您提供与特定类关联的ID数组,您可以将其映射到标签文件。 Segmentaion模型仅给出对象周围的像素。
[编辑] 道歉,看来我是对细分模型感到困惑的人。 从我的大学报价:) “您有兴趣知道标签的名称,可以在Semantic_segmentation.py的结果数组中找到该标签的对应整数。其中结果是每个像素的分类数据。
例如;
如果在带有bird.jpg作为输入的结果数组中打印结果数组,您会发现很少的像素值为3,这对应于pascal_voc_segmentation_labels.txt中的第4个标签(因为索引从0开始)。”