0

我正在尝试使用 DeepLabV3 在 Coral 上进行图像分割和对象检测/分类。

我能够在珊瑚上使用 DeepLabV3 成功运行 semantic_segmentation.py 示例,但这仅显示了一个对象被分割的图像。

我看到它为颜色分配了标签 - 我如何将我根据模型的标签信息制作的 labels.txt 文件与这些颜色相关联?(我怎么知道哪个颜色对应哪个标签)。

当我尝试运行引擎 = DetectionEngine(args.model)

使用 deeplab 模型,我得到了错误

ValueError: 检测模型应该有 4 个输出张量!这个模型有 1 个。

我想这种方式是错误的方法吗?

谢谢!

4

1 回答 1

1

我相信您已经就相同的查询与我们联系过。我只是想在这里粘贴答案供其他人参考:

“检测模型通常有 4 个输出张量来指定位置、类别、分数以及数量和检测。您可以在此处阅读更多相关信息。相反,分割模型只有一个输出张量,因此如果您将其视为同样,您很可能会尝试访问错误的内存区域。如果您想在同一个图像上执行所有三个任务,我的建议是创建 3 个不同的引擎并将图像输入每个引擎。唯一的问题是是每次切换模型时,模型加载到 TPU 上可能会出现数据传输瓶颈。我们这里有一个示例,说明如何在单个 TPU 上运行 2 个模型,您应该可以对其进行修改取 3 个模型。”

在最后一个注释中,我刚刚看到您添加了:

我如何将根据模型的标签信息制作的 labels.txt 文件与这些颜色相关联

我只是不认为这是您可以为分段模型做的事情,但也许我只是对您的查询感到困惑?

以对象检测模型为例,有 4 个输出张量,第二个张量为您提供一个与某个类关联的 id 数组,您可以将其映射到标签文件。分割模型只给出对象周围的像素。

[编辑] 抱歉,看起来我是对分割模型感到困惑的人。引用我的大学 :) “您有兴趣知道标签的名称,您可以从 Semantic_segmentation.py 中的结果数组中找到该标签的对应整数。其中结果是每个像素的分类数据。

例如;

如果您在以 bird.jpg 作为输入的情况下打印结果数组,您会发现很少有像素值为 3,这是 pascal_voc_segmentation_labels.txt 中对应的第 4 个标签(因为索引从 0 开始)。

于 2020-04-27T15:43:03.900 回答