csdn推荐
目标检测 Object Detection :检测,不仅要找到图片上的所关心的目标 位置 ,同时还要识别出这个目标是什么 类别。主流的目标检测都是以 矩阵框 的形式进行输出的,而语义分割比目标检测的精度更高。
voc数据集
很多优秀的计算机视觉模型比如分类,定位,检测,分割,动作识别等模型都是基于PASCAL VOC挑战赛及其数据集上推出的,尤其是一些目标检测模型(比如大名鼎鼎的R CNN系列,以及后面的YOLO,SSD等)。
在 ImageNet挑战赛上涌现了一大批优秀的分类模型,而PASCAL挑战赛上则是涌现了一大批优秀的目标检测和分割模型
官网
目前广大研究者们普遍使用的是 VOC2007和VOC2012数据集,因为二者是互斥的,不相容的。
数据集下载
直接在官网下载(通过迅雷可以下载的很快)
pytorch内置了voc数据集
数据集使用
论文中针对 VOC2007和VOC2012 的具体用法有以下几种:
1、只用VOC2007的trainval 训练,使用VOC2007的test测试
2、只用VOC2012的trainval 训练,使用VOC2012的test测试,这种用法很少使用,因为大家都会结合VOC2007使用
3、使用 VOC2007 的 train+val 和 VOC2012的 train+val 训练,然后使用 VOC2007的test测试,这个用法是论文中经常看到的 07+12 ,研究者可以自己测试在VOC2007上的结果,因为VOC2007的test是公开的。
4、使用 VOC2007 的 train+val+test 和 VOC2012的 train+val训练,然后使用 VOC2012的test测试,这个用法是论文中经常看到的 07++12 ,这种方法需提交到VOC官方服务器上评估结果,因为VOC2012 test没有公布。
5、先在 MS COCO 的 trainval 上预训练,再使用 VOC2007 的 train+val、 VOC2012的 train+val 微调训练,然后使用 VOC2007的test测试,这个用法是论文中经常看到的 07+12+COCO 。
6、先在 MS COCO 的 trainval 上预训练,再使用 VOC2007 的 train+val+test 、 VOC2012的 train+val 微调训练,然后使用 VOC2012的test测试 ,这个用法是论文中经常看到的 07++12+COCO,这种方法需提交到VOC官方服务器上评估结果,因为VOC2012 test没有公布。
VOC 2007数据集标注
PASCAL VOC 2007 数据集分为两部分:训练和验证集trainval,测试集test ,两部分各占数据总量的约 50%。其中trainval 又分为训练集和测试集,二者分别各占trainval的50%。
每张图片中有可能包含不只一个目标object。
标注文件如下
注意xy坐标轴位置
coco数据集
#home
VOC 数据集和 COCO 数据集是使用较多的数据集,COCO 数据集比 VOC 数据集大,适用于大型项目。
常用的是COCO2017
├── coco2017
├── train2017所有训练图像文件夹(118287张)
├── val2017 所有验证图像文件夹(5000张)
├── annotations:标注文件夹
├── istances_train2017.json:对应目标检测、分割任务的训练集标注文件
├── instances_val2017.json: 对应目标检测、分割任务的验证集标注文件
├── captions_train2017.json: 对应图像描述的训练集标注文件
├── captions_val2017.json: 对应图像描述的验证集标注文件
├── person_keypoints_train2017.json: 对应人体关键点检测的训练集标注文件
├── person_keypoints_val2017.json: 对应人体关键点检测的验证集标注文件
json是一个大字典,读取出json标注格式文件,实际上是一个dict,如下所示
{
"info": info,
"licenses": [license],
"images": [image],
"annotations": [annotation],
"categories": [category]
}
其中image和annotations如下
image{
"id": int,# 图片的ID编号(每张图片ID是唯一的)
"width": int,#宽
"height": int,#高
"file_name": str,# 图片名
"license": int,
"flickr_url": str,# flickr网路地址
"coco_url": str,# 网路地址路径
"date_captured": datetime # 数据获取日期
}
annotations字段是包含多个annotation实例的一个列表,annotation类型本身又包含了一系列的字段,如这个目标的category id和segmentation mask。segmentation格式取决于这个实例是一个单个的对象(即iscrowd=0,将使用polygons格式)还是一组对象(即iscrowd=1,将使用RLE格式)。
annotation{
"id": int, # 对象ID,因为每一个图像有不止一个对象,所以要对每一个对象编号(每个对象的ID是唯一的)
"image_id": int,# 对应的图片ID(与images中的ID对应)
"category_id": int,# 类别ID(与categories中的ID对应)
"segmentation": RLE or [polygon],# 对象的边界点(边界多边形,此时iscrowd=0)。
#segmentation格式取决于这个实例是一个单个的对象(即iscrowd=0,将使用polygons格式)还是一组对象(即iscrowd=1,将使用RLE格式)
"area": float,# 区域面积
"bbox": [x,y,width,height], # 定位边框 [x,y,w,h]
"iscrowd": 0 or 1 #见下
}
标注自己的数据集
在线工具:、
本地标注:精灵标注助手
pytorch加载数据集
#torchvision.datasets.CocoCaptions
import torchvision
from PIL import ImageDraw
COCO_dataset=torchvision.datasets.CocoDetection(root="D:\目标检测数据集\val2017\val2017",
annFile="D:\目标检测数据集\annotations_trainval2017\annotations\instances_val2017.json",
)
image,info=COCO_dataset[0]
image_handler=ImageDraw.ImageDraw(image)
#取出info中的所有bbox 在info里面循环取出bbox
for annotation in info:
x_min,y_min,width,height=annotation['bbox']
image_handler.rectangle(((x_min,y_min),(x_min+width,y_min+height)))
image.show()
文章来源:https://blog.csdn.net/qq_55675216/article/details/139048503
微信扫描下方的二维码阅读本文
暂无评论内容