PASCAL VOC
PASCAL VOC挑战赛(The PASCAL Visual Object Classes)是一个世界级的计算机视觉挑战赛,PASCAL全称:Pattern Analysis, Statical Modeling and Computational Learning, 是一个欧盟资助的网络组织。
PASCAL VOC 挑战赛主要包括4类:
1)图像分类(Object Classification)
2)目标检测(Object Detection)
3)目标分割(Object Segmentation)
4)动作识别(Action Classification)
PASCAL VOC一共有20个类别
PASCAL VOC数据集文件结构:
下载的数据集文件结构:
对Annotations中的一个xml文件解析:
size:图片的宽度、高度和深度(多GPU并行计算时会用到)
做目标检测主要看 object 部分:
name:类别
truncated:此目标是否被截断(1是被截断,0是未被截断)
difficult:此目标检测的难易程度(1是比较难检测,0是比较容易检测)
bndbox:目标框左上角的x,y坐标
目标框右下角的x,y坐标
有几个object表示有几个目标
Main函数中的train.txt,val.txt文件中:每行存储的是图像名称,且无交集
trainval.txt指train.txt与val.txt的总和
PASCAL VOC07的test数据集公开了
PASCAL VOC12的至今未公开
如何利用以上这些文件载入图像信息:
1)使用train.txt中的每行信息(即图片名称)
2)在Annotations中找到对应的xml文件并解析,便知道图片的高度宽度,及图片的目标及其位置
3)在JPEGImages中找到相应图片,并载入内存
PASCAL VOC下载地址:https://pjreddie.com/projects/pascal-voc-dataset-mirror/
使用迅雷下载
MS COCO数据集
MS COCO数据集是一个非常大型且非常常用的数据集,其中包括了目标检测,分割,图像描述,人体关键点描述等
做目标检测仅仅关注80个目标类别
做图像分割会用到stuff91类
注意,train2017中的图片中若仅针对目标检测object80类而言,其中有些图片是空的,无标注信息或者有的标注信息有问题(标注的目标框高或宽为0,导致回归损失为NAN),则实际中需筛选数据
以验证集及验证集的json为例:
查看json文件:
验证集中有5000张图片,故images有5000个元素
每张图片所包含的信息
在json中的annotations中有36781,表示5000张图片一共有36781个目标,并不是一张图片里目标
而对于每一个目标:category_id表示stuff91的索引
前两个元素代表目标边界框左上角的x与y坐标,后面两元素表示目标边界框的宽度与高度
categories 中一共有80类,并非连续的从1-80,而是从stuff91中选取的,若要训练80个目标检测网络,需要把这些索引映射到1-80中
COCO数据集的标注需要转成PASCAL VOC的标注格式
利用pycocotools工具包读取标注文件
利用COCO数据集做预训练pycocotools这个工具对数据进行读取,以及对预测结果进行mAP的计算
一般来说:(COCO预训练效果好但费时)
先用MS COCO数据集做预训练,基于迁移学习的办法,然后用PASCAL VOC 再训练
若是想训练自己的数据集,使用COCO数据集预训练好的权重做迁移学习
若是自己的数据集需要标注:
参考一下链接:
github.com/tzutalin/labellmg
以上内容均参考https://space.bilibili.com/18161609/channel/detail?cid=113611&ctype=0(超厉害的up主)