当前位置: 首页 > ds >正文

完整的VOC格式数据增强脚本

完整的VOC格式数据增强脚本,包含多种数据增强方法并能同步更新XML标签。

功能特性

数据增强方法:

  • 水平/垂直翻转 - 同步更新边界框坐标
  • 旋转 - 支持任意角度旋转,自动调整图像尺寸
  • 平移 - 随机平移图像,保持边界框有效性
  • 对比度/亮度调整 - 改善图像质量
  • 高斯噪声 - 增强模型鲁棒性
  • 随机裁剪 - 生成不同尺寸的训练样本
  • 马赛克拼接 - 4张图片拼接成一张,丰富训练数据

XML标注同步:

  • 自动解析VOC格式XML文件
  • 精确计算变换后的边界框坐标
  • 生成格式化的XML标注文件
  • 验证边界框有效性

安装依赖

pip install opencv-python numpy

使用方法

基本用法:

python voc_augmentation.py --images_dir images --annotations_dir Annotations --output_dir augmented_dataset

自定义参数:

python voc_augmentation.py \--images_dir images \--annotations_dir Annotations \--output_dir augmented_dataset \--num_aug 8 \--enable_mosaic

参数说明:

  • --images_dir: 输入图片文件夹路径
  • --annotations_dir: 输入XML标注文件夹路径
  • --output_dir: 输出文件夹路径
  • --num_aug: 每张图片生成的增强数量(默认5)
  • --enable_mosaic: 启用马赛克拼接功能

文件结构

输入目录结构:

your_dataset/
├── images/
│   ├── image1.jpg
│   ├── image2.jpg
│   └── ...
└── Annotations/├── image1.xml├── image2.xml└── ...

输出目录结构:

augmented_dataset/
├── images/
│   ├── image1.jpg (原图)
│   ├── image1_aug_1_hflip_bright120.jpg
│   ├── image1_aug_2_rot15_crop80.jpg
│   ├── mosaic_001.jpg
│   └── ...
└── Annotations/├── image1.xml (原标注)├── image1_aug_1_hflip_bright120.xml├── image1_aug_2_rot15_crop80.xml├── mosaic_001.xml└── ...

代码集成示例

# 直接在代码中使用
from voc_augmentation import VOCDataAugmentation# 创建增强器
augmenter = VOCDataAugmentation(images_dir="images",annotations_dir="Annotations", output_dir="augmented_dataset"
)# 处理数据集
augmenter.process_dataset(num_augmentations_per_image=8,enable_mosaic=True
)
  1. 几何变换 - 使用OpenCV的仿射变换矩阵精确计算边界框坐标
  2. 边界框验证 - 确保变换后的边界框仍在图像范围内且有效
  3. XML处理 - 完整保持VOC格式的所有字段和结构
  4. 马赛克拼接 - 智能缩放和坐标映射,支持多目标融合
http://www.xdnf.cn/news/18104.html

相关文章:

  • 狗品种识别数据集:1k+图像,6个类别,yolo标注完整
  • .net印刷线路板进销存PCB材料ERP财务软件库存贸易生产企业管理系统
  • 曲面/线 拟合gnuplot
  • 第四章:大模型(LLM)】06.langchain原理-(5)LangChain Prompt 用法
  • 第七十五章:AI的“思维操控师”:Prompt变动对潜在空间(Latent Space)的影响可视化——看懂AI的“微言大义”!
  • P2169 正则表达式
  • LeetCode 刷题【43. 字符串相乘】
  • 视觉语言模型(VLA)分类方法体系
  • Kotlin-基础语法练习一
  • 代码随想录算法训练营四十三天|图论part01
  • Ubuntu 25.04 安装并使用 MySQL 8.4.5 的步骤
  • MySQL完整重置密码流程(针对 macOS)
  • AI应用安全 - Prompt注入攻击
  • 深入解析Java代理模式:灵活控制对象访问的核心技术
  • 配置国内加速源后仍然无法拉取镜像
  • STC8单片机驱动I2C屏幕:实现时间、日期与温湿度显示
  • Rust 中 i32 与 *i32 的深度解析
  • 解决zabbix图片中文乱码
  • 46.Sentinel规则持久化
  • 8位量化简介(40)
  • 铨林接纸机学习记录1
  • ramdisk内存虚拟盘(一)——前世今生
  • 按键序列常用示例
  • Mini MAX AI应用矩阵测评报告——基于旗下多款产品的综合体验与行业价值分析
  • 六大主流负载均衡算法
  • 分享一个基于Hadoop的二手房销售签约数据分析与可视化系统,基于Python可视化的二手房销售数据分析平台
  • Oracle按照特定列值排序和C#统计特定列值的所有行
  • p5.js 3D盒子的基础用法
  • 【解决笔记】MyBatis-Plus 中无 selectList 方法
  • RK3588消费级8K VR一体机 是否有坑?