从该项目来看,这似乎是一个非常明显的问题,对吧?
但我发誓我一生有 21 个标签和 21 个类别。
所以,作为一个健全性检查,我想我会问!
- 我有大量训练图像 (640,640)
- 我已经仔细研究过它们并使用 DataTurks 来注释数据。
- 由此,我创建了一组 PNG 蒙版,其中我使用 255 作为空白区域,然后使用 tan
Int
对应的数字制作一个NP数组,然后转换为png。 - 然后我就关注了这个 sagemaker example for segmentation这似乎一直有效,直到我运行
ss_model.fit
.
这是我开始遇到一些错误的地方。完整日志可以在 this Gist 中看到
第一个向我跳出的错误是:
label maps not provided, using defaults.
这很奇怪,因为我相信我已经在 S3 中正确加载了它们 <bucket>/label_map/train_label_map.json
该标签图如下所示:Gist (也许它会失败,因为它不是有效的 JSON,但我正在复制另一个 sagemaker 示例如何使用它?)
要跳出的第二个错误是标题中的错误。
现在,我的蒙版可能完全错误(我对 ML 还很陌生),但它们看起来像这样,但分辨率为 640x640:
[
255, 255, 255
255, 2, 2,
255, 2, 2
]
其中 255 为空,2 为注释。
此错误可能是因为我没有包含 255: "null"
在 label_map 中?
任何见解都会非常有帮助!谢谢。
最佳答案
-- 但我发誓我一生有 21 个标签和 21 个类别。
如果您有 21 个类,则最大标签应为 20 而不是 21,因此会引发错误。标签索引从 0 开始。相关注释可以在 documentation page 中找到。 。
从您对帖子的评论来看,如果您必须将类别数设置为 22,那么您似乎有 23 个类别。num_classes
仅适用于类别,不包括 255
或洞类。请注意,如果您提供 num_classes
> 标签数量,该算法将不会出现错误。这是因为 num_classes
参数用于创建 softmax 层。如果您的 num_classes
多于实际看到的标签数量,则某些标签根本无法学习。
再深入一点,link that you shared 中的标签图是错的。标签映射仅接受整数而不接受字符串。它是一个 int-int 映射。
接下来,仅仅在 S3 存储桶中拥有 label_map
还不够,它需要在创建训练作业时作为算法的数据通道提供。
关于amazon-web-services - 在标签中找到注释值 21。这大于类(class)数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54383228/