首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3.7中的KeyError: 0

Python3.7中的KeyError: 0
EN

Stack Overflow用户
提问于 2019-12-02 16:36:13
回答 1查看 801关注 0票数 0

我正在训练3个对象类的maskRCNN,遵循git中的train_shapes示例。我使用VIA 2.0.8将图像注释提取到JSON。

代码语言:javascript
复制
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-11-bbed02f10f39> in <module>
      3 for image_id in image_ids:
      4     image = dataset.load_image(image_id)
----> 5     mask, class_ids = dataset.load_mask(image_id)
      6     visualize.display_top_masks(image, mask, class_ids, dataset.class_names)

K:\Python\maskRCNN\samples\dining\dining.py in load_mask(self, image_id)
    186             mask[:, :, i] = mask[:, :, i] * occlusion
    187             occlusion = np.logical_and(occlusion, np.logical_not(mask[:, :, i]))
--> 188         # Map class names to class IDs.
    189         class_ids = np.array([self.class_names.index(s[0]) for s in polygons])
    190         return mask.astype(np.bool), class_ids.astype(np.int32)

K:\Python\maskRCNN\samples\dining\dining.py in <listcomp>(.0)
    186             mask[:, :, i] = mask[:, :, i] * occlusion
    187             occlusion = np.logical_and(occlusion, np.logical_not(mask[:, :, i]))
--> 188         # Map class names to class IDs.
    189         class_ids = np.array([self.class_names.index(s[0]) for s in polygons])
    190         return mask.astype(np.bool), class_ids.astype(np.int32)

KeyError: 0

这是它调用的代码:

代码语言:javascript
复制
def load_mask(self, image_id):
    """Generate instance masks for an image.
   Returns:
    masks: A bool array of shape [height, width, instance count] with
        one mask per instance.
    class_ids: a 1D array of class IDs of the instance masks.
    """
    # If not a dining dataset image, delegate to parent class.
    image_info = self.image_info[image_id]
    if image_info["source"] != "dining":
        return super(self.__class__, self).load_mask(image_id)

    # Convert polygons to a bitmap mask of shape
    # [height, width, instance_count]
    info = self.image_info[image_id]
    polygons = info["polygons"]
    count = len(info["polygons"])
    mask = np.zeros([info["height"], info["width"], count],
                    dtype=np.uint8)
    for i, p in enumerate(info["polygons"]):
        # Get indexes of pixels inside the polygon and set them to 1
        rr, cc = skimage.draw.polygon(p['all_points_y'], p['all_points_x'])
        mask[rr, cc, i] = 1

    # Handle occlusions
    occlusion = np.logical_not(mask[:, :, -1]).astype(np.uint8)
    for i in range(count-2, -1, -1):
        mask[:, :, i] = mask[:, :, i] * occlusion
        occlusion = np.logical_and(occlusion, np.logical_not(mask[:, :, i]))
    # Map class names to class IDs.
    class_ids = np.array([self.class_names.index(s[0]) for s in polygons])
    return mask.astype(np.bool), class_ids.astype(np.int32)

什么是KeyError?这是我的多边形变量的数据结构错误吗?

EN

回答 1

Stack Overflow用户

发布于 2019-12-02 17:59:33

Key errors and how to handle them

总之。无论多边形是什么,它似乎包含某种字典对象,当您在行中循环时,这些对象被分配给s,然后您尝试访问键0,除非没有键。

我的建议是通过找出polygons和其中的每个s到底是什么来进行调试。然后计算出你所期望的s[0]到底是什么。如果不了解每个s的外观,就很难给出更具体的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59135146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档