如何解决COCO .json 文件在注释中包含奇怪的分段值,如何转换这些值?
我有一个 COCO 格式的 .json 文件,其中在注释部分包含奇怪的值。这里的大多数分段都很好,但有些包含非人类可读格式的大小和计数。
在训练我的模型时,由于奇怪的分段值,我遇到了错误。我在某处读过这些是 RLE 格式的,但我不确定。我应该能够使用位掩码而不是多边形来训练我的模型,但我更喜欢处理根本原因并将这些分段更改为正常格式。它们的类型是什么,它们是否可以转换为正常的分段格式,如果可以,我该怎么做?
{'id': 20,'image_id': 87,'category_id': 2,'segmentation': [[301,303,305,288,321,261,335,236,346,214,350,209,351,205,349,202,344,203,334,221,322,244,307,272,297,290,295,302,310,301,309]],'area': 829.5,'bBox': [295,56,108],'iscrowd': 0}
{'id': 21,'segmentation': [[292,300,278,287,270,283,260,280,249,276,240,273,234,233,268,266,274,253,259,277,265,281,284,285,299,306,291,292,304]],'area': 517.0,'bBox': [266,26,73],'iscrowd': 0}
{'id': 22,'segmentation': [[300,279,311,313,224,314,211,319,185,172,323,162,155,318,158,168,189,217,228,296,237,245,254,289,293,287]],'area': 1177.0,'bBox': [290,33,140],'iscrowd': 0}
{'id': 23,'segmentation': [[311,308,315,286,282,294,307]],'area': 235.5,'bBox': [301,14,26],'iscrowd': 0}
#Weird values
{'id': 24,'image_id': 27,'segmentation': {'size': [618,561],'counts': 'of[56Tc00O2O000001O00000OXjP5'},'area': 71,'bBox': [284,326,10,8],'iscrowd': 0}
{'id': 25,'category_id': 1,'counts': 'fga54Pc0<H4L4M2O2M3M2N2N3N1N2N101N101O00000O10000O1000000000000000000000O100O100O2N1O1O2N2N3L4M3MdRU4'},'area': 1809,'bBox': [294,46,47],'iscrowd': 0}
#normal values again
{'id': 26,'image_id': 61,'segmentation': [[285,269,262,271,256,255,257,251,267,250,258,278]],'area': 1024.0,'bBox': [250,35,41],'iscrowd': 0}
{'id': 27,'segmentation': [[167,231,175,227,180,226,188,198,215,235,239,243,252,264,216,238,194,184,171,167,233]],'area': 782.5,'bBox': [167,92,38],'iscrowd': 0}
{'id': 28,'segmentation': [[279,186,192,195,200,210,218,190]],'area': 593.0,'bBox': [255,'iscrowd': 0}
{'id': 29,'segmentation': [[264,232,230,229,241,246,254]],'area': 264.0,'bBox': [264,24,27],'iscrowd': 0}
解决方法
在这里找到您需要的一切: Interface for manipulating masks stored in RLE format
"RLE 是一种用于存储二进制掩码的简单而有效的格式。RLE 首先将一个向量(或矢量化图像)划分为一系列分段 恒定区域,然后为每个片段简单地存储该片段的长度。例如,给定 M=[0 0 1 1 1 0 1],RLE 计数将是 [2 3 1 1],或者对于 M=[1 1 1 1 1 1 0],计数将是 [0 6 1] (请注意,奇数始终是零的数量)。 不是直接存储计数,而是使用基于称为 LEB128 的常见方案的可变比特率表示来实现额外压缩。"
所以,基本上你可以将掩码注释为:
- 多边形标准 coco-json 格式(x,y,x,y 等),
- 二进制掩码(图像 png)
- 一种 RLE 编码格式。
这三个都是一样的,但有时您需要将它们转换为所需的格式(以防您的 DL 库不支持所有这些格式,或者为您转换它们)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。