【深度学习】嘿马深度学习目标检测教程第5篇:数据集处理,2.2 目标数据集标记【附代码文档】

51 阅读1分钟

🏆🏆🏆教程全知识点简介:涵盖图像识别背景、目标检测定义和应用场景。核心算法原理包括R-CNN系列算法(R-CNN、SPPNet、Faster R-CNN、RPN原理)、YOLO算法(单次检测、候选框机制、单元格概念)以及SSD算法(单次多框检测器、多个Detector & classifier、训练与测试流程)。数据处理模块包含目标数据集标记、数据集格式转换(TFRecords文件、VOC2007数据集)、slim库和API使用。项目实现涉及项目结构设计、数据模块接口、预处理和数据增强技术。模型训练包括预训练模型、SSD模型定义、default boxes、模型加载、变量初始化、交互式会话。模型推理涵盖predictions筛选、bbox处理、scores排序、NMS算法。部署方案包括Web Server、TensorFlow Serving Client、环境安装、DeploymentConfig配置。训练主函数包含设备选择、全局步长变量、网络参数获取、批处理数据队列、多GPU/CPU平均损失计算。


📚📚👉👉👉本站这篇博客:   juejin.cn/post/752175…    中查看

📚📚👉👉👉本站这篇博客:   juejin.cn/post/752175…    中查看

✨ 本教程项目亮点

🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考


🎯🎯🎯全教程总章节


🚀🚀🚀本篇主要内容

数据集处理

了解常用目标检测数据集
了解数据集构成
了解数据集标记的需求
知道labelimg的标记使用
应用TensorFlow完成pascalvoc2007数据集的转换
了解TensorFlow slim库
了解TFRecords文件的作用
了解slim读取数据流程
应用TF-slim的data模块完成VOC2007TFRecord文件的读取

2.2 目标数据集标记

学习目标

  • 目标

    • 了解数据集标记的需求

    • 知道labelimg的标记使用

  • 应用

    • 应用labelimg完成产品数据集的标记

为什么要进行数据集标记呢?

1、提供给训练的数据样本,图片和目标真是实结果

2、特定的场景都会缺少标记图片

2.2.1 数据集标记工具介绍

2.2.1.1 介绍

LabelImg是一个图形图像注释工具。它是用Python编写的,并使用Qt作为其图形界面。注释以PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。

注:官网:github.com/tzutalin/la…

2.2.1.2 安装

官网给出了不同平台的安装教程,由于教程过于粗略。安装细节参考安装教程本地文件

  • 参考本地文件:

NumPy 文档

2.2.2 产品数据集标记

在这里 只是体验标记的过程,那么对于标记这个费时费力的工作,一般会有专门的数据标记团队去做,也称之为打标签,标记师。特别是缺乏具体应用场景的训练数据的时候。

2.2.2.1 需求介绍

首先在确定标记之前的需求,本项目以产品数据为例,需要明确的有

  • 1、产品图片
  • 2、需要被标记物体有哪些

确定了8种类别的产品(如需更细致,可将类别产品扩大),如下图

Python 开发者指南

2.2.2.2 标记

使用lableimg进行产品数据集标记

  • 运行labelimg
python labelImg.py

打开如下结果

  • 对图片中的物体进行标记

PySimpleGUI 文档

标记原则为图片中所出现的物体与 确定的8个类别物体相匹配即可

email-validator 文档

  • 按下ctrl+s键保存,软件将会保存为默认XML文件格式**(XML文件名与图片文件名保持一致方便后续处理)**

其中关于(xmin,ymin,xmax,ymax) 已经解释过,可通过软件标记的时候观察是否一致

2.2.3 总结

  • 掌握labelimg的标注使用

LightGBM 文档

2.2.4 问题

通过这样标记数据,假设你想做一个潮流产品品牌(Nike、H&M等)或者其他具体某个子领域的大部分产品的识别模型,你的数据集怎么准备?

数据集处理

了解常用目标检测数据集
了解数据集构成
了解数据集标记的需求
知道labelimg的标记使用
应用TensorFlow完成pascalvoc2007数据集的转换
了解TensorFlow slim库
了解TFRecords文件的作用
了解slim读取数据流程
应用TF-slim的data模块完成VOC2007TFRecord文件的读取

2.3 数据集格式转换

学习目标

  • 目标

    • 了解TFRecords文件的作用
  • 应用

    • 应用TensorFlow完成pascalvoc2007数据集的转换

首先来看下转换的效果:

为什么要进行格式转换?

数据集的图片以及标记文件分布在不同的文件当中,并且图片与标签没有一一对应。在后续项目当中不方便处理,也不方便项目的解耦合,需要将数据集转换成一个标准、统一使用、方便赋值移动到其他模块当中。

2.3.2 TFRecords文件

cryptography 文档

TensorFlow提供了TFRecord的格式来统一存储数据,TFRecord格式是一种将图像数据和各种标签放在一起的二进制文件,在tensorflow中快速的复制、移动、读取、存储。特点:

  • 文件格式:.tfrecord or.tfrecords

  • 写入文件内容:使用Example将数据封装成protobuffer协议格式

    • 体积小:消息大小只需要xml的1/10~1/3
    • 解析速度快:解析速度比xml快20~100倍
  • 每个example对应一张图片,其中包括图片的各种信息

2.3.3 案例:VOC2007数据集转换

2.3.3.1 转换效果显示

2.3.3.2 TensorFlow API

gfile读取模块

  • tf.gfile.MakeDirs(dirname):

    • 以递归方式建立父目录及其子目录,如果目录已存在且是可覆盖则会创建成功,否则报错,无返回
  • tf.gfile.Exists(filename):

    • 判断目录或文件是否存在,filename可为目录路径或带文件名的路径,有该目录则返回True,否则False