yolo数据集的数据增强 可实现带标签扩增

2022/10/22 修改了github代码导致xmax<xmin的情况。(由于上传疏忽,正确的代码修改了后上传的错误的版本)

这是数据集扩增的小工具,在您想使用yolo等目标检测算法时数据集较少的情况下进行变化增强图片。

(支持LabelIMg和LabelMe标注的文件)

包括3个python文件

(rename_file.py、DataAugmentforLabelImg.py和DataAugmentforLabelMe.py)

  1. rename_file.py能实现文件的重命名,注意修改文件的路径

  2. DataAugmentforLabelImg.py能实现LabelImg标注后的图片的增强(包括模糊,亮度,裁剪,旋转,平移,镜像等变化)

  3. DataAugmentforLabelMe.py能实现LabelMe标注后的图片的增强(包括模糊、亮度、平移、镜像等变化)

注意:一些包的安装是必要的,比如Opencv_python等 ##将您需要增强的图片放在对应的文件夹即可,具体可参考demo给出的图片和xml文件存放路径,您放入即可 保存结果:

  1. 目标检测增强后的图片默认会保存在./data/Images2中,xml文件会保存在./data/Annotations2中(包括新的图片和xml文件)

  2. 目标分割增强后的图片默认会保存在./data2中(包括新的图片和json文件)

  3. 可以实现自我设置数据增强数量

具体效果如下展示:

3ed88c4541e14ad4b11505b94e917f6a.png

若需要图上常见的零部件(螺丝、螺母、垫圈和钢丝螺套)密集不规则摆放600张数据集,可自行提取:https://download.csdn.net/download/qq_39740357/89583337

部分原图:

d813905ee7b4d156e8107f4c003357d9.jpeg

数据增强后:

 747df9eec9c7012738041e52561eb99c.jpeg

166f0c1507f0d183ec87feea25e4ddd2.jpeg

 564d59c75c51f2a0447b6f120910b4b5.jpeg

数据增强源码下载地址,需要自提:yolo数据集的数据增强 可实现带标签扩增

https://download.csdn.net/download/qq_39740357/89583321

 

 

 

  • 43
    点赞
  • 273
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 52
    评论
要用imageDatastore提取一个标签数据集,需要对每个图像都有一个对应的标签数据。标签数据的格式可以是数字标签向量、one-hot编码向量、框框坐标数组或分割掩模矩阵等。下面以一个分类任务为例,介绍如何用imageDatastore提取一个标签数据集。 首先,假设已经用imageDatastore提取完一个图片集,可以使用readimage函数读取每个图像,并将其转换为特定格式用于训练。接下来,需要创建另一个imageDatastore对象,用于提取标签数据集。 1. 首先,需要定义一个标签数据的格式,例如数字标签向量或one-hot编码向量,以及每个图像对应的标签。这里以数字标签向量为例,假设有6个类别,分别用数字0~5表示。可以创建一个大小为1x1x6的矩阵,每个元素表示对应类别的概率,例如[1,0,0,0,0,0]表示第一类,[0,1,0,0,0,0]表示第二类,以此类推。 2. 然后,需要将每个图像的标签转换为数字标签向量,并存储到一个数组或矩阵中。可以使用一个for循环依次读取每个图像,并根据其文件名或路径来确定对应的标签。假设图像文件名为img_001.jpg,那么对应的标签文件名可以是img_001.txt,其中存储了数字标签向量。可以使用fgetl函数读取标签文件,再使用str2double函数将字符串转换为数字向量。最后将所有标签向量存储到一个大小为N x 1 x 6的矩阵中,其中N为图像数。 3. 最后,使用imds标签集函数创建一个imageDatastore对象,设置标签数据的格式和存储路径,即可用于训练模型。 下面是一个示例代码: ```matlab % 读取图像数据集 imds = imageDatastore('path/to/images'); % 定义标签数据的格式 numClasses = 6; labelFormat = zeros(1,1,numClasses); % 读取每个图像的标签并存储到一个数组中 labels = zeros(length(imds.Files),1,numClasses); for i = 1:length(imds.Files) % 读取标签文件 labelFile = strrep(imds.Files{i},'.jpg','.txt'); labelData = fgetl(fopen(labelFile)); % 转换为数字标签向量 labelVec = str2double(strsplit(labelData)); % 存储到数组中 labels(i,:,:) = repmat(labelVec,1,1,numClasses); end % 创建标签数据集 labelDS = imageDatastore('path/to/labels','FileExtensions','.txt',... 'ReadFcn',@(x) repmat(str2double(fgetl(fopen(x))),1,1,numClasses),... 'LabelSource','file','LabelFormat',labelFormat); % 用于训练模型 trainCNN(imds,labelDS); ``` 在上面代码中,labelDS对象用于提取标签数据集,设置了标签数据的格式为数字标签向量,存储路径为path/to/labels,文件扩展名为.txt,使用了一个匿名函数来读取每个标签文件。需要注意的是,这里的标签文件名需要与对应的图像文件名相同,并且存储路径也需要对应。例如,如果有一张图像文件path/to/images/img_001.jpg,那么其对应的标签文件应该为path/to/labels/img_001.txt。
评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wiz_k

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值