2021SC@SDUSC
准备数据
本项目使用road-sign-detection 比赛数据,检测4种路标:
- speedlimit
- crosswalk
- trafficlight
- stop
划分成训练集和测试集,总共877张图,其中训练集701张图、测试集176张图。
本项目提供voc格式和coco格式的数据:
- voc格式:
划分好的数据下载地址为: roadsign_voc.tar。
AiStudio上数据地址:roadsign_voc
2.coco格式:
划分好的数据下载地址为:roadsign_coco.tar。
AiStudio上数据地址:roadsign_coco
将~/data/
文件夹下的数据解压到PaddleDetection/dataset/
文件夹下。
%cd ~/work/PaddleDetection/dataset/
! pwd
! ls ~/data -l
1. voc格式数介绍
VOC数据格式的目标检测数据,是指每个图像文件对应一个同名的xml文件,xml文件中标记物体框的坐标和类别等信息。
Pascal VOC比赛对目标检测任务,对目标物体是否遮挡、是否被截断、是否是难检测物体进行了标注。对于用户自定义数据可根据实际情况对这些字段进行标注。
xml文件中包含以下字段:
- filename,表示图像名称。
<filename>road650.png</filename>
- size,表示图像尺寸。包括:图像宽度、图像高度、图像深度
<size>
<width>300</width>
<height>400</height>
<depth>3</depth>
</size>
object字段,表示每个物体。包括
- name: 目标物体类别名称
- pose: 关于目标物体姿态描述(非必须字段)
- truncated: 目标物体目标因为各种原因被截断(非必须字段)
- occluded: 目标物体是否被遮挡(非必须字段)
- difficult: 目标物体是否是很难识别(非必须字段)
- bndbox: 物体位置坐标,用左上角坐标和右下角坐标表示:xmin、ymin、xmax、ymax
将~/data/data49531/roadsign_voc.tar
解压到PaddleDetection/dataset/roadsign_voc
下
%cd ~/work/PaddleDetection/dataset/roadsign_voc/
! pwd
# copy roadsign_voc.tar and extract
! cp ~/data/data49531/roadsign_voc.tar .
! tar -xvf roadsign_voc.tar
! rm -rf roadsign_voc.tar
# 查看一条数据
! cat ./annotations/road650.xml
2. coco格式数介绍
coco数据格式,是指将所有训练图像的标注都存放到一个json文件中。数据以字典嵌套的形式存放。
json文件中存放了 info licenses images annotations categories 的信息:
- info中存放标注文件标注时间、版本等信息。
- licenses中存放数据许可信息。
- images中存放一个list,存放所有图像的图像名,下载地址,图像宽度,图像高度,图像在数据集中的id等信息。
- annotations中存放一个list,存放所有图像的所有物体区域的标注信息,每个目标物体标注以下信息:
{
'area': 899,
'iscrowd': 0,
'image_id': 839,
'bbox': [114, 126, 31, 29],
'category_id': 0, 'id': 1,
'ignore': 0,
'segmentation': []
}
将~/data/data49531/roadsign_coco.tar
解压到PaddleDetection/dataset/roadsign_coco
下
%cd ~/work/PaddleDetection/dataset/
! mkdir roadsign_coco
%cd ~/work/PaddleDetection/dataset/roadsign_coco/
! pwd
# copy roadsign_coco.tar and extract
! cp ~/data/data52968/roadsign_coco.tar .
! tar -xvf roadsign_coco.tar
! rm -rf roadsign_coco.tar
# 查看一条数据
import json
coco_anno = json.load(open('./annotations/train.json'))
# coco_anno.keys
print('\nkeys:', coco_anno.keys())
# 查看类别信息
print('\n物体类别:', coco_anno['categories'])
# 查看一共多少张图
print('\n图像数量:', len(coco_anno['images']))
# 查看一共多少个目标物体
print('\n标注物体数量:', len(coco_anno['annotations']))
# 查看一条目标物体标注信息
print('\n查看一条目标物体标注信息:', coco_anno['annotations'][0])