DeepLabV3,珊瑚的分割和分类/检测

Posted

技术标签:

【中文标题】DeepLabV3,珊瑚的分割和分类/检测【英文标题】:DeepLabV3, segmentation and classification/detection on coral 【发布时间】:2020-08-09 09:27:42 【问题描述】:

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

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

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

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

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

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

我猜这种方式是错误的做法?

谢谢!

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

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

例如;

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

【讨论】:

以上是关于DeepLabV3,珊瑚的分割和分类/检测的主要内容,如果未能解决你的问题,请参考以下文章

DeepLabv3 +分割图像边界

语义图像分割 NN (DeepLabV3+) 的内存过多问题

搭建自己的语义分割平台deeplabV3+

DeepLabv3+图像语义分割实战:训练自己的数据集

高精度轻量级图像分割SOTA模型PP-LiteSeg开源

高精度轻量级图像分割SOTA模型PP-LiteSeg开源