读取SBD实例分割数据集

VOC可以用于实例分割SegmentationObject: 也是物体分割后的结果,总共2913张png图片。
SegmentationClass: 语义分割标签,2913张png图片,图片是一样的,只是语义和实例分割的标签不一样,2913有1449用于validation,1464用于train,
SBD有11355张,训练集可以用于实例分割,实例分割标签在inst,语义分割是cls,不过都是mat,得转成png

想训练voc和SBD的实例分割,找了半天的VOC转COCO,大部分都是bbox的,实例分割的只找到一个链接: Pascal VOC转COCO数据_Python_风吴痕的博客-CSDN博客.
函数实现有一些报错,还有效果也一般,会漏掉一部分像素,如下图:在这里插入图片描述
遇到的报错是091011年的xml格式跟0708不太一样,改下 def data_transfer(self)里面的内容

// A code block

                    i                    if '<object>' in p:
                        # 类别
                        if json_file[-12] == '7' or json_file[-12] == '8':
                            d = [next(fp).split('>')[1].split('<')[0] for _ in range(9)]
                             # 边界框
                            x1 = int(float(d[-4]));
                            y1 = int(float(d[-3]));
                            x2 = int(float(d[-2]));
                            y2 = int(float(d[-1]))
                            self.rectangle = [x1, y1, x2, y2]
                            self.bbox = [x1, y1, x2 - x1, y2 - y1]  # COCO 对应格式[x,y,w,h]
                        if json_file[-12] == '9' or json_file[-12] == '0'or json_file[-12] == '1':
                            d = [next(fp).split('>')[1].split('<')[0] for _ in range(6)]
                            x1 = int(float(d[-3]));
                            y1 = int(float(d[-1]));
                            x2 = int(float(d[-4]));
                            y2 = int(float(d[-2]))
                            self.rectangle = [x1, y1, x2, y2]
                            self.bbox = [x1, y1, x2 - x1, y2 - y1]  # COCO 对应格式[x,y,w,h]
                        elif json_file[-12] == '2':
                            d = [next(fp).split('>')[1].split('<')[0] for _ in range(20)]
                            x1 = int(float(d[-3]));
                            y1 = int(float(d[-1]));
                            x2 = int(float(d[-4]));
                            y2 = int(float(d[-2]))
                            self.rectangle = [x1, y1, x2, y2]
                            self.bbox = [x1, y1, x2 - x1, y2 - y1]  # COCO 对应格式[x,y,w,h]

                        self.supercategory = d[0]
                        if self.supercategory not in self.label:
                            self.categories.append(self.categorie())
                            self.label.append(self.supercategory)

                       



                        self.annotations.append(self.annotation())
                        self.annID += 1

torchvision有实现VOC和SBD的代码,不过只能加载SBD语义分割的数据集
最后使用chainercv的程序加载了SBD实例分割数据集

参考博客

(5条消息)深度学习图像分割(一)——PASCAL-VOC2012数据集(vocdevkit、Vocbenchmark_release)详细介绍_人工智能_OLDPAN的博客-CSDN博客 https://blog.csdn.net/iamoldpan/article/details/79196413
(5条消息)扩增的Pascal VOC 语义分割数据集制作_网络_cncyww的博客-CSDN博客
链接: https://blog.csdn.net/cncyww/article/details/89188506/.
(5条消息)MaskRCNN识别Pascal VOC 2007_人工智能_风吴痕的博客-CSDN博客 https://blog.csdn.net/wc781708249/article/details/79542655#t3

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值