繁体   English   中英

为 Mask-RCNN 加载掩码(VGG Image Annotator)的问题

[英]Problem with loading masks (VGG Image Annotator) for Mask-RCNN

问题

我想训练一个 MRCNN 使用预训练的 COCO 权重来检测 2 个新类(底部,碗)。 我已经在 VGG Image Annotator 中屏蔽了大约 400 张我无法加载的图像。 我认为我创建的类和多边形存在问题,但因为有 400 多个图像,我真的不想从头开始。

基本上我使用的是 matterport https://github.com/matterport/Mask_RCNN 的代码

错误

在读取带有类和多边形的 .json 文件时,我遇到了错误:

Traceback (most recent call last):
  File ".\Test.py", line 302, in <module>
    train(model)
  File ".\Test.py", line 170, in train
    dataset_train.load_meooow(args.dataset, "train")
  File ".\Test.py", line 115, in load_meooow
    num_ids = [int(n['class']) for n in objects]
  File ".\Test.py", line 115, in <listcomp>
    num_ids = [int(n['class']) for n in objects]
ValueError: invalid literal for int() with base 10: 'bottom'

我知道,脚本试图将“底部”转换为非法的 int,这就是我遇到该错误的原因。

我想我的面具有问题,但因为面具很多,我希望我能做些什么......

对我来说,.json 文件结构似乎存在一些问题,但我看不出有什么问题。

图像的多边形示例

图像之一的多边形下方(2 类)

3D_3_14 (4).jpg2371607":{"fileref":"","size":2371607,"filename":"3D_3_14 (4).jpg","base64_img_data":"","file_attributes":{},"regions":{"0":{"shape_attributes":{"name":"polygon","all_points_x":[11,40,200,370,616,761,823,996,1268,1399,1565,1672,1818,1847,2078,2231,2379,2455,2468,2585,2583,7,11],"all_points_y":[1093,1053,984,942,929,916,1002,1022,1009,1058,1051,1049,969,909,918,949,973,1000,1033,1035,1940,1938,1093]},"region_attributes":{"class":"bottom"}},"1":{"shape_attributes":{"name":"polygon","all_points_x":[4,2590,2585,2463,2448,2319,2137,1982,1838,1849,1825,1818,1639,1428,1160,956,867,718,632,576,639,676,714,756,448,297,131,11,4],"all_points_y":[9,9,1035,1038,993,958,925,916,909,827,778,698,552,463,390,341,346,401,486,572,705,774,856,914,933,958,1009,1071,9]},"region_attributes":{"class":"bowl"}}}}

掩蔽...

在屏蔽期间,有时我会更改课程顺序。 我的意思是有时班级底部是 1 级而碗是 2 级

1 bottom
2 bowl

有时碗是 1 级,底部是 2 级

1 bowl
2 bottom

当有东西覆盖班级碗时,我不得不将它分成 2 个多边形,但名称相同。 所以我在 VGG 中有 1 个底部、2 个碗、3 个碗。

1 bottom
2 bowl
3 bowl

这可能是一个问题,还是只要我坚持使用正确的多边形标签就可以了?

标签

我不能使用像 rcnn、mrcnn、mask-rcnn 这样的标签,因为它至少需要 1500 声望.. 对不起...

如果您不想将类名注释为整数字符串 '1',则可以像我的情况一样尝试以下代码:

classes_name = ['bottom', 'bowl']
num_ids = [classes_name.index(n['class']) + 1 for n in objects]

嗯,错误是因为在 VGG 中添加了类。 就我而言,虽然注释我使用班级名称代替班级编号。 删除班级名称并用班级编号替换它。 在您的情况下,将底部替换为 1,将碗替换为 2,同时在 VGG 中进行注释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM