快速构建目标检测/分割 coco格式数据集

coco数据集

在这里插入图片描述
首先搞清楚coco格式数据集的组成。在data数据下、分为train、val以及annotations三个文件夹。(image是我未划分训练集和测试集的图像存储文件夹)
1.train文件夹:用来存放作为训练的图片(一般为JPG文件)。
2.val文件夹:用来存放作为测试的图片。
3.annotation文件夹:一般有两个.json文件。(instances_train.json以及instance_val.json)

快速构建

明白了coco格式数据集,我们比葫芦画瓢,构造一个相似的就可以。
下面是重点!!!!!
我们目标检测任务需要构建的几个键(必不可少的)如图所示:

{
    "images": [image],
    "annotations": [annotation],
    "categories": [category]
}


image = {
    "id": int,            #(图片id)
    "width": int,         #(图片宽度)
    "height": int,        #(图片高度)
    "file_name": str,
}

annotation = {
    "id": int,            #(标注id)
    "image_id": int,      #(图片id)
    "category_id": int,   #(类别id)
    "segmentation": RLE or [polygon],  #(分割任务用,我们不需要)
    "area": float,              #(分割任务用,我们不需要)
    "bbox": [x,y,width,height], # (x, y) 为 bbox 左上角的坐标
    "iscrowd": 0 or 1,           #(bbox是否拥挤)
}

categories = [{
    "id": int,
    "name": str,
    "supercategory": str,      
}]

最上面一段代码的就是用python写的一个字典,包含了我们目标检测任务的三个重要键。我们主要是通过python字典的形式。然后import json,通过json.dump来生成我们需要的.json文件。
用python处理json文件推荐链接:
https://cloud.tencent.com/developer/article/1654900
同样介绍了coco数据集的文章推荐链接:
https://zhuanlan.zhihu.com/p/309549190

补充 (后来用SAM半自动标注时候,生成的还有分割掩码)

避免在划分数据集时浪费分割掩码,所以在此补充含有目标分割的COCO标注文件的.json文件格式。

{
    # image信息
	"image" : [
	{
	    "id": int,            #(图片id)
	    "width": int,         #(图片宽度)
	    "height": int,        #(图片高度)
	    "file_name": str,
	},
	.................
	{
	    "id": int,            #(图片id)
	    "width": int,         #(图片宽度)
	    "height": int,        #(图片高度)
	    "file_name": str,
	}
	],
	# 标注信息
	"annotation": [
	{
	    "id": int,            #(标注id)
	    "image_id": int,      #(图片id)
	    "category_id": int,   #(类别id)
	    "segmentation":{      # RLE or [polygon],  #(分割任务用)
	    	"counts":[
	    	# 一大串数字...
	    	],
	        "size":[
	        	height,
	        	width
	        ],
	    }       
	    "area": float,              #(分割任务用)
	    "bbox": [x,y,width,height], # (x, y) 为 bbox 左上角的坐标
	    "iscrowd": 0 or 1,           #(bbox是否拥挤)
	}
	],
	# 种类信息
	"categories" = [{
	    "id": int,
	    "name": str,
	    "supercategory": str,      #可选,这个可有可无
	}]
}

总结

键名不能错,我之前粗心file_name写成了 filename,然后就debug了几十分钟才发现。
最后,祝大家代码0 error。点个赞支持一下吧~
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想当极客的小芦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值