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,珊瑚的分割和分类/检测的主要内容,如果未能解决你的问题,请参考以下文章