从壹开始解读Yolov11【源码研读系列】——Data.Augment.py:数据增强模块第四部分——Format标签格式标准化操作

**【前情回顾】**在上一篇文章中介绍了augment.py数据增强文件中一个重要的类------LetterBox图片形状大小统一化,这是不管训练还是预测都必须进行的图片操作。

LetterBox类文章地址:https://blog.csdn.net/qq_58718853/article/details/143233094

【实验代码】 所有实验代码上传至Gitee仓库。(会根据博文进度实时更新):

Gitee链接:https://gitee.com/machine-bai-xue/yolo-source-code-analysis

如果链接失效,访问404拒绝,可以直接在Gitee码云主页搜索------"机器白学",所有项目中的YOLO源码实验就是本系列所有实验代码。

【本节预告】 本文继续augment.py类部分的解读记录,下面要介绍的Format 类,其跟LetterBox类一样十分重要,尤其是在训练时,作用是将图片的标签信息标准化为统一格式,方便后续数据集加载器构建需要。

一、augment.Format类:输入标签格式统一化

1.Format类功能概述

Format 类用于标准化图像的标签信息,以便用于目标检测、实例分割和姿态估计任务。该类将图像和实例的注释转换为统一的格式,以便后续的 collate_fn(批处理函数)在 PyTorch 的 DataLoader 中使用。

其整体结构如下图所示,包含初始化该类一共定义了四个方法。其中**call**主要功能是将图像的标签格式化,以适用目标检测任务,此方法是重点对象,关键功能实现部分;_format_img主要是将图像从numpy数组转为pytorch张量;_format_segments是将语义分割的多边形分割信息转为位图掩码(mask)。

2.init:类参数初始化

首先看此类的初始化参数含义,归纳在下面表格。

|---------------------|----------------------------------------------------------|
| bbox_format | 输入字符串(str)。边界框的格式(如'xyxy'表示左上右下两点坐标;'xywh'表示左上点坐标加上框的宽高) |
| normalize | 输入bool值。是否将边界框的坐标取值归一化至区间【0,1】 |
| return_mask | 输入bool值。是否返回实例分割的掩码(语义分割任务) |
| return_keypoint | 输入bool值。是否返回关键点(姿态评估任务) |
| return_obb | 输入bool值。是否返回定向边界框OBB |

**OBB(Oriented Bounding Box,定向边界框)**是一种与传统的平行轴对齐边界框(Axis-Aligned Bounding Box,AABB)不同的边界框。

传统 的AABB边界框通常是矩形,与图像边界平行,其表示方式通常为左上角坐标加上宽度和高度(x, y, w, h),不考虑物体的旋转方向

OBB边界框 可以随物体的方向进行旋转,通常用来更准确地表示具有明显方向 的物体。OBB的表示方式一般为中心点坐标、宽度、高度、以及旋转角度 (或直接提供四个角点坐标)。这种方式特别适合那些在图像中倾斜、旋转的目标物体。OBB 的优势在于能够更好地适应物体的真实形状和方向,提高检测精度,尤其在目标密集且形状复杂的场景中。

|------------------|---------------------------|
| mask_ratio | 输入整数int值。掩码下采样比例。(语义分割任务) |
| mask_overlap | 输入bool值。掩码是否可以重叠(语义分割任务) |
| batch_idx | 输入bool值。是否保留批次索引 |
| bgr | 输入float浮点数。返回BGR图像的概率 |

3.call:标准化标签与图片数据

此方法并不复杂,该函数接受一个包含图像和标签数据的字典 labels,输出格式化后的字典。

下面暂时屏蔽掉语义分割(return_mask)、姿态评估(return_keypoint)、旋转定向框(return_obb)处的处理代码,专注于检测模型主要的处理逻辑。

下图注释了相关代码的作用和含义。

4.具体数据实验

所有实验代码已上传至Gitee仓库 data/augment/Format.py 下。

首先实验一下默认参数进行格式化操作后的labels输出。

可以看到图片、类别、边界框都转为了PyTorch数据格式。且边界框是归一化后的数据。

继续将归一化功能屏蔽,打印查看此时的边界框信息,已经是坐标绝对值形式的了。

至此,data文件中的augment.py文件中的一些基本类介绍完毕,还有一些针对语义分割、图像分类、姿态评估的增强操作将在以后编写相关任务时记录。

下一篇文章新开一个py文件------解读data文件下的base.py文件,其中定义了一个可灵活调整的数据加载类。

下一篇文章快速链接:从壹开始解读Yolov11【源码研读系列】------Data.Base.py.BaseDataset:可灵活改写的数据集加载处理基类-CSDN博客

相关推荐
王哈哈^_^8 小时前
【完整源码+数据集】草莓数据集,yolov8草莓成熟度检测数据集 3207 张,草莓成熟度数据集,目标检测草莓识别算法系统实战教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
王哈哈^_^1 天前
YOLOv11视觉检测实战:安全距离测算全解析
人工智能·数码相机·算法·yolo·计算机视觉·目标跟踪·视觉检测
深度学习lover1 天前
<数据集>yolo航拍交通目标识别数据集<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·航拍交通目标识别
Coovally AI模型快速验证1 天前
视觉语言模型(VLM)深度解析:如何用它来处理文档
人工智能·yolo·目标跟踪·语言模型·自然语言处理·开源
王哈哈^_^1 天前
【数据集+完整源码】水稻病害数据集,yolov8水稻病害检测数据集 6715 张,目标检测水稻识别算法实战训推教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
像风一样的男人@2 天前
python --两个文件夹文件名比对(yolo 图和label标注比对检查)
windows·python·yolo
AI纪元故事会3 天前
《目标检测全解析:从R-CNN到DETR,六大经典模型深度对比与实战指南》
人工智能·yolo·目标检测·r语言·cnn
Python图像识别3 天前
75_基于深度学习的咖啡叶片病害检测系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
python·深度学习·yolo
Python图像识别3 天前
74_基于深度学习的垃圾桶垃圾溢出检测系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
python·深度学习·yolo
AI浩3 天前
MHAF-YOLO:用于精确目标检测的多分支异构辅助融合YOLO
人工智能·yolo·目标检测