目录

一、了解Voc数据格式

1. Anotations目录

2. JPEGImages目录

3. ImageSets目录

二、自己标准目标检测数据

1. 安装标注工具

2. 配置环境

3. 创建文件夹

4. 标注数据


深度学习工程师在数据标注上是必不可少的内容之一。

  • 一、了解Voc数据格式

利用深度学习方法如Faster R-CNN或YOLOv3等进行目标检测时需要训练数据集,我们很少会根据自己的数据集格式修改代码,更多的是按照一定格式修改自己的数据格式,而PASCAL VOC为图像识别和分类提供了一整套标准化的数据集,为了方便我们目标检测的进行,可以先来详细的记录一下PASCAL VOC的格式。

Pascal VOC数据集下载地址:The PASCAL Visual Object Classes Homepage

数据集下载后解压得到一个名为VOCdevkit的文件夹,该文件夹结构如下:

1. Anotations目录

目录存放xml文件:

Annotations文件夹中存放的是xml格式的标签文件,每一个xml文件都对应于JPEGImages文件夹中的一张图片,包含了图片的重要信息:图片的名称,图片中object的类别及其bounding box坐标。

内容如下:

<annotation><folder>VOC2007</folder><filename>000051.jpg</filename><source><database>The VOC2007 Database</database><annotation>PASCAL VOC2007</annotation><image>flickr</image><flickrid>291539949</flickrid></source><owner><flickrid>kristian_svensson</flickrid><name>Kristian Svensson</name></owner><size><width>500</width><height>375</height><depth>3</depth></size><segmented>0</segmented><object><name>motorbike</name><pose>Unspecified</pose><truncated>1</truncated><difficult>0</difficult><bndbox><xmin>352</xmin><ymin>138</ymin><xmax>500</xmax><ymax>375</ymax></bndbox></object><object><name>motorbike</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>105</xmin><ymin>1</ymin><xmax>427</xmax><ymax>245</ymax></bndbox></object><object><name>person</name><pose>Unspecified</pose><truncated>0</truncated><difficult>1</difficult><bndbox><xmin>415</xmin><ymin>61</ymin><xmax>465</xmax><ymax>195</ymax></bndbox></object>
</annotation>

其中重要字段解析如下:

标签

解释

filename

文件名

source

图像来源(不重要)

size

图像尺寸(长宽以及通道),包含了width,height和depth

segmented

是否用于分割

object

需检测到的物体,包含了物体名称name,拍摄角度pose,是否截断truncated,难以识别difficult,object对应的bounding box信息 bndbox

bndbox

包含左下角和右上角x,y坐标 (xmin,ymin,xmax,ymax

以下程序可以将XML标签中目标绘制在图像中,具体步骤为:

1.用xml.etree.ElementTree库中的parse方法解析xml文件;

2.获取xml文件的根节点;

3.寻找object节点用find() 和findall(), .text表示获取节点中的内容;

4.cv2绘图,rectangle画框,putTEXT标注类别。

代码:

# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
import os,cv2xml_file='Annotations/000282.xml'
tree=ET.parse(xml_file)
root=tree.getroot()
imgfile='JPEGImages/000282.jpg'
im = cv2.imread(imgfile)
for object in root.findall('object'):object_name=object.find('name').textXmin=int(object.find('bndbox').find('xmin').text)Ymin=int(object.find('bndbox').find('ymin').text)Xmax=int(object.find('bndbox').find('xmax').text)Ymax=int(object.find('bndbox').find('ymax').text)color = (4, 250, 7)cv2.rectangle(im,(Xmin,Ymin),(Xmax,Ymax),color,2)font = cv2.FONT_HERSHEY_SIMPLEX  cv2.putText(im, object_name, (Xmin,Ymin - 7), font, 0.5, (6, 230, 230), 2)cv2.imshow('01',im)
#cv2.imwrite('02.jpg', im)

2. JPEGImages目录

存放的是数据集的原图片,像素尺寸大小不一。

 3. ImageSets目录

ImageSets存放的是每一种计算机视觉任务类型所对应的文件夹,各个文件夹均存放txt格式文件,txt中记录图片名:

文件夹

数据信息

Layout

具有人体部位的数据

Main

一般存放图像物体识别的数据

Segmentation

用于语义,实例分割的数据

目标检测主要用到Main文件夹中的txt文件(训练自己的数据时,我们需要自己生成):

文件夹

数据信息

train

训练使用的图片名称(无后缀)

val

验证使用的图片名称(无后缀)

trainval

以上两者的合并

test

测试使用的图片名称(无后缀)

  • 二、自己标准目标检测数据

    1. 安装标注工具

数据标注工具labelImg,可以通过可视化的操作界面进行画框标注,就能自动生成VOC格式的xml文件,该工具是基于Python语言编写的,这样就支持在Windows、Linux的跨平台运行。

下载地址为:https://github.com/tzutalin/labelImg

解压,得到LabelImg-master文件夹:

​​​​​​​2. 配置环境

安装说明:

终端进入LabelImg-master 目录下 ,依次执行如下命令即可

# 更新源
python.exe -m pip install --upgrade pip
# 安装qt5:
pip install pyqt5 lxml
# 加载资源
pyrcc5 -o libs/resources.py resources.qrc
# 启动软件
python labelImg.py

​​​​​​​

3. 创建文件夹

按照VOC数据集的要求,创建以下文件夹:
                (1)Annotations:用于存放标注后的xml文件;
                (2)ImageSets/Main:用于存放训练集、测试集、验收集的文件列表;
                (3)JPEGImages:用于存放原始图像;

​​​​​​​4. 标注数据

将源图片集放在JPEGImages文件夹里面,注意图片的格式必须是jpg格式的。打开labelImg标注工具,然后点击左侧的工具栏“Open Dir”按钮,选择刚才放猫的JPEGImages文件夹。这时,主界面将会自动加载第一张猫照片。

点击左侧工具栏的“Create RectBox”按钮,然后在主界面上点击拉个矩形框,将猫圈出来。

圈定后,将会弹出一个对话框,用于输入标注物体的类别,这里输入cat作为object类别。

然后点击左侧工具栏的“Save”按钮,选择刚才创建的Annotations作为保存目录,系统将自动生成VOC2007格式的xml文件保存起来。这样就完成了一张猫照片的物体标注了。

接下来点击左侧工具栏的“Next Image”进入下一张图像,按照以上步骤,画框、输入名称、保存,如此反复,直到把所有照片都标注好,保存起来。

保存在Anotations目录下图片名字对应的xml文件上,内容如下:

<annotation><folder>JPEGImages</folder><filename>test_00000024.jpg</filename><path>F:\数据集\myVOC_test\JPEGImages\test_00000024.jpg</path><source><database>Unknown</database></source><size><width>188</width><height>220</height><depth>3</depth></size><segmented>0</segmented><object><name>face_mask</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>48</xmin><ymin>4</ymin><xmax>146</xmax><ymax>126</ymax></bndbox></object>
</annotation>

目标检测数据集标注-VOC格式相关推荐

  1. 100种目标检测数据集【voc格式yolo格式json格式coco格式】+YOLO系列算法源码及训练好的模型

    提示:本文介绍并分享了应用于各行业.各领域非常有用的目标检测数据集(感谢您的关注+三连,数据集持续更新中-),其中绝大部分数据集作者已应用于各种实际落地项目,数据集整体质量好,标注精确,数据的多样性充 ...

  2. 目标检测数据集PASCAL VOC简介

    简介 PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛, PASCAL全称:Pattern Analysis, Stat ...

  3. 睿智的目标检测12——使用labelimg进行目标检测数据集标注

    睿智的目标检测12--使用labelimg进行目标检测数据集标注 学习前言 labelimg的安装 进行批量标注 学习前言 好久没写博文了,先水一水. labelimg的安装 其实安装labelimg ...

  4. 史上最强!目标检测数据集标注工具网页版

    前言 相信做目标检测的大家都有过会在将会有制作自己的目标检测数据集的需求.标注数据就得有相应的工具,这里就提供了这样一个标注工具.这个标注工具有着独一无二的特点,它是基于浏览器的标注工具.这就意味着任 ...

  5. 目标检测 数据集—标注工具 labelImg/labelme

    版权声明:转载请说明来源,谢谢 https://blog.csdn.net/wsp_1138886114/article/details/85017498 文章目录 一.使用 LabelImg生成目标 ...

  6. 【数据集】香烟目标检测数据集(YOLO格式标注)

    [来源] https://blog.csdn.net/qq_46098574/article/details/107334954 [链接及提取码](免费下载) 链接:https://pan.baidu ...

  7. 目标检测,将voc格式转化为coco格式详细过程

    在目标检测方法研究中,数据集的格式至关重要,为了减小模型的训练时长,需要现在小数据集进行模型研究,从而需要将VOC数据集转化为coco格式.下面一步一步来看: 1. 下载VOC数据集 Pascal V ...

  8. 目标检测数据集-Pascal VOC 数据集介绍

    个人微信公众号:AI研习图书馆 ID:(Art-Intelligence) 欢迎关注,交流学习,共同进步~ 1.引言 PASCAL VOC数据集,为图像识别和分类提供了一整套标准化的优秀数据集,从20 ...

  9. 目标检测:PASCAL VOC 数据集简介

    一.简介 PASCAL VOC 挑战赛主要有 Object Classification .Object Detection.Object Segmentation.Human Layout.Acti ...

  10. PASCAL VOC目标检测数据集格式转化为COCO目标检测数据集格式

    VOC2012目标检测数据集格式转化为COCO目标检测数据集格式 你只需要传入一个VOC数据集根路径可以直接运行,简直不要太方便好吧 需要材料: VOC2012原始数据集 一个pycharm项目文件夹 ...

最新文章

  1. 20170601xlVBA正则表达式提取体检数据
  2. python输出csv文件-更高效的Python CSV文件导出
  3. Java中MessageFormat的使用
  4. 扩展easyui tree的两个方法 获取实心节点
  5. python3 isalnum
  6. 小蚂蚁学习数据结构(16)——串的堆分配储存代码演示
  7. Java跨域问题以及如何使用Cors解决前后端 分离部署项目所遇到的跨域问题
  8. 毕设题目:Matlab图像拼接
  9. android 获取经纬度的三种方法,Android获取经纬度
  10. Java 金额转换帮助类(元转分)
  11. Instrument初识
  12. html:button按钮背景图片设置
  13. Android系统epub阅读器分享
  14. React 调和(Reconciler)原理理解
  15. RN-Flex Box---基础
  16. THHN vs. XHHW: What Is the Difference?
  17. 如何写 Cover Letter 论文投稿
  18. CSS系列之美化网页/span标签和div标签/字体样式/文本样式
  19. vue中identify(生成图片验证码)插件的配置和使用
  20. Elasticsearch的基本使用

热门文章

  1. 5次Shift破解Win7登录密码
  2. w ndows摄像头驱动怎么安,电脑中如何安装摄像头驱动
  3. VEH,VCH,UEF Windows向量化异常处理机制详解
  4. Windows+Caffe+VS2013+python接口配置过程
  5. 关于 centos 7系统,iptables透明网桥实现
  6. 三维实景拍摄虚拟现实!- Panorama
  7. 『深度应用』首届中国心电智能大赛复赛开源(第三十一名,得分0.841484)
  8. 【渝粤教育】广东开放大学 开放教育 学生创业案例 形成性考核 (59)
  9. maya中英文对比_maya菜单中英文对照表
  10. 大数据的价值体现在哪几个方面,大数据领域未来的技术方向是什么?