🏆🏆🏆教程全知识点简介:涵盖图像识别背景、目标检测定义和应用场景。核心算法原理包括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使用的格式。
2.2.1.2 安装
官网给出了不同平台的安装教程,由于教程过于粗略。安装细节参考安装教程本地文件
- 参考本地文件:
2.2.2 产品数据集标记
在这里 只是体验标记的过程,那么对于标记这个费时费力的工作,一般会有专门的数据标记团队去做,也称之为打标签,标记师。特别是缺乏具体应用场景的训练数据的时候。
2.2.2.1 需求介绍
首先在确定标记之前的需求,本项目以产品数据为例,需要明确的有
- 1、产品图片
- 2、需要被标记物体有哪些
确定了8种类别的产品(如需更细致,可将类别产品扩大),如下图
2.2.2.2 标记
使用lableimg进行产品数据集标记
- 运行labelimg
python labelImg.py
打开如下结果
- 对图片中的物体进行标记
标记原则为图片中所出现的物体与 确定的8个类别物体相匹配即可
- 按下ctrl+s键保存,软件将会保存为默认XML文件格式**(XML文件名与图片文件名保持一致方便后续处理)**
其中关于(xmin,ymin,xmax,ymax) 已经解释过,可通过软件标记的时候观察是否一致
2.2.3 总结
-
掌握labelimg的标注使用
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文件
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