YOLO训练
一、数据准备
数据转化
数据存储的方式
图片名称存在第一行
接下来每一行存储一个目标框,分别为x坐标,y坐标,w宽,h高,c类别存储的方式如下:
matlab代码如下:
clear
addpath(genpath('VOCdevkit'));%添加转化为xml的工具
fid = fopen('存储图片标注信息的文件');
cnt = 1;
tline = fgetl(fid);
ind = regexp(tline,'\');这个是正则化表达式,返回子串的开始下标和结束下标'
imageName = tline;
imageReName{
1} = fullfile(pwd,'path',imageName);%根据你保存图片路径的情况补充为完整的路径
tline = fgetl(fid);
rec{
1} = str2num(tline);
tline = fgetl(fid);
imageNum = 1;
while ischar(tline)
while regexp(tline(1),'\d')%这样做的原因:因为我们存储图片名称第一个字符不是数字,这个正则表达的意思是判断第一个字符是否为数字。
rec{imageNum} = [rec{imageNum};str2num(tline)];
tline = fgetl(fid);
end
ind = regexp(tline,'\');%'
imageNum = imageNum + 1;
imageName = tline;
imageReName{imageNum} = fullfile(pwd,'task-action-data/result_temp',imageName);
tline = fgetl(fid);
rec{imageNum} = str2num(tline);
tline = fgetl(fid);
end
%%经过这个处理之后,数据存储的方式是,图片的完整路径存储在imageReName这个结构体里面,标注的信息存储在rec这个结构体里面。
rand_ind = randperm(length(rec));%%'这个是为了进行随机处理,rangperm的功能是生成[0,length(rec)]的不重复的序列。
imageReName = imageReName(rand_ind);%%重新调整顺序
rec = rec(rand_ind);
dataPath = fullfile(pwd,'path');