MS COCO 2014数据集获取类别semantic segmentation

MS COCO 2014 数据集的cocoapi只能获得 instance mask(下图右);但是要是想获得 class semantic segmentation(下图左),现在的官方cocoapi貌似并没提供这个api。

这里写图片描述


实现环境:

  • Python

实现方法:

coco官网的2017年数据集中可以发现有Stuff Segmentation,同时提供了新版的能获取Stuff Segmentation的cocoapi:link 。里面的 PythonAPI/cocostuff/cocoSegmentationToPngDemo.py 可以获得类别的Segmentation,但是这个是仅针对2017年的dataset的(博主发现直接使用会报错或者只能得到一片黑的图)。

在研究了2017的dataset和新版cocoapi后,发现2017的dataset的 category ids 与2014的dataset不一样,变成:

 1-91      % thing categories (not used for stuff segmentation) 
 92-182    % stuff categories 
 183       % other category (all thing pixels)

新版cocoapi根据stuff categories来对同一个class赋予颜色,直接使用原来的category ids(1-91)无法进行stuff分类(所以一片黑),因此对代码稍作改动即可作用于2014的数据集!


实现步骤:

1、下载新版cocoapihttps://github.com/nightrome/cocoapi

2、进入PythonAPI/pycocotools/cocostuffhelper.py,改动:

(1) Line141:

from:

    labelMap = cocoSegmentationToSegmentationMap(coco, imgId, includeCrowd=includeCrowd)

to:

    labelMap = cocoSegmentationToSegmentationMap(coco, imgId, checkUniquePixelLabel=False, includeCrowd=includeCrowd)

(2) Line142 后面加上:

    labelMap = labelMap + 91

3、进入 PythonAPI/

make

4、使用 PythonAPI/cocostuff/cocoSegmentationToPngDemo.py ,设置好 annPath 为你自己的 coco/annotations/instances_train2014.json 路径;然后把 Line75-Line88 注释掉

5、运行即可


结果:

这里写图片描述
这里写图片描述
这里写图片描述


常见问题:

  1. “Exception: Error: Some pixels have more than one label”

    • 原因:2014的dataset可能存在一个pixel对应多个label的情况,2017的Stuff Segmentation应该不存在这个问题,所以新版cocoapi会检查异常
    • 解决方法:不检查异常(多个label则由后者覆盖),即看一下 Line141 有没有加上checkUniquePixelLabel=False (查看上方实现步骤2-(1))
  2. 得到的图像全黑

    • 原因:检查原来 Line142的 labelMap 有没有加上91。若没加上,category ids仍为1-91,无法着色。
    • 解决方法:查看上方实现步骤2-(2)

References:

[1] coco dataset官网:http://cocodataset.org/#download
http://cocodataset.org/#stuff-eval
[2] cocoapi(旧版):https://github.com/cocodataset/cocoapi
[3] cocoapi(新版):https://github.com/nightrome/cocoapi

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值