做腰椎核磁证网站是 收 七,seo网站模板下载,扬州建设银行网站,做网站网站判刑matlab-对数据集加噪声并实现tsne可视化
最近才知道#xff0c;原来可以不用模型#xff0c;也能实现对数据集数据的可视化。
**一、**以COIL-100数据集为例子。
问题#xff1a; 前提#xff1a;首先对COIL-100数据集根据角度0-175和180-255#xff0c;分别划分成C1,C…matlab-对数据集加噪声并实现tsne可视化
最近才知道原来可以不用模型也能实现对数据集数据的可视化。
**一、**以COIL-100数据集为例子。
问题 前提首先对COIL-100数据集根据角度0°-175°和180°-255°分别划分成C1,C2两个子数据集。 目的 ①实现C1-C2的tsne可视化 ②对COIL-100数据集添加遮挡物实现C1-C2的tsne可视化。 平台 matlabR2019b 以及 Pycharm2022
**
二、解决方法
** 1首先获取得到我们的COIL-100的数据集以及划分好的C1,C2数据集
2----------对数据集图片添加遮挡物---------- 分别对COIL-100-1和COIL-100-2数据集添加遮挡物 我借鉴了这个博客数据增强-在图片中添加遮挡物 这个博客是对数据集添加不规则的五边形我自己改成了添加长方体遮挡物且位置随机python代码如下
import randomimport itertoolsimport os
import PIL.Image as Image
import PIL.ImageDraw as ImageDraw# 原始图片的存放位置
PATH C:/Users/lenovo/Documents/MATLAB/COIL-Augment-tsne/data/COIL-100/
# 新生成的图片的保存位置
SAVE_PATH C:/Users/lenovo/Documents/MATLAB/COIL-Augment-tsne/data/COIL-100-noise-10x10/
# 要在图片上生成几边形的物体N5代表五边形
N 4def drawObs(path, savePath, n):for file in os.listdir(path):if not file.lower().endswith((.bmp, .dib, .png, .jpg, .jpeg, .pbm, .pgm, .ppm, .tif, .tiff)):continueimg Image.open(path file)(x, y) img.sizerandom_list list(itertools.product(range(1, x), range(1, y)))points random.sample(random_list, n)draw ImageDraw.Draw(img)x random.randint(0, 255)#ImageDraw.ImageDraw.polygon(xypoints, fill(x1, x2, x3), selfdraw)draw.rectangle((x,x,x20,x10),fill(0,0,0))img.save(savePath rand file)print(file)if __name__ __main__:drawObs(PATH, SAVE_PATH, N)
于是我们得到 添加了随机遮挡物的C1和C2数据集COIL-100-agument-1和COIL-100-agument-2.
3----------数据集转换为.mat文件---------- 分别将COIL-100-1, COIL-100-2, COIL-100-agument-1 和 COIL-100-agument-2四个数据集转换成.mat文件。 .png向.mat文件转换的代码我借鉴了这个博客将COIL数据集转换成.mat文件
clear
clc
path D:\COIL\coil-100\; %源数据集路径
save_path D:\COIL\; %处理之后保存的路径
file dir([path,*.png]); %列出源路径下所有.png文件的信息name date bytes...COIL [];
Label [];
for i 1:length(file) %源路径下png文件的个数%%%%对图片本身数据做处理image0 imread([path,file(i).name]); %读取某一张图片str file(i).name; %图片名保存为strimage1 rgb2gray(image0); %将彩图转换为灰度图像image2 im2double(image1); %将图片中unit8转换为double[a,b] size(image2); %a为图片行数 b为图片列数image3 reshape(image2,1,a*b); %将a*b的图片转换为1行COIL [COIL;image3]; %每一张图片都加载在上一张图片的下一行fprintf(%d th starting...\n,i); %记录程序运行过程%%%%对图片标签做处理 图片名为‘obj(类标签)__拍摄角度.png’%主要提取类标签LabelStart strfind(str,j); %找到图片名‘j’的位置类标签前LabelEnd strfind(str,_); %找到图片名‘__’的位置类标签后label_temp str2double(str(LabelStart1:LabelEnd(1,1)-1)); %提取出图片类标签Label [Label;label_temp]; %每个类标签按顺序排排坐
endsave savepath COIL Label
注意: ①保存的COIL-100-1 和 COIL-100-augment-1 图片保存为X_src,图片标签保存为Y_src,即上述代码中的COIL和Label ②保存的COIL-100-2 和 COIL-100-augment-2 图片保存为X_tar,图片标签保存为Y_tar,即上述代码中的COIL和Label
即生成的.mat文件如下图所示
4最后分别将COIL-100-1和COIL-100-2可视化以及COIL-100-agument-1 和 COIL-100-agument-2可视化。 matla可视化代码如下
%%% tsne visulization
clc;
clear;
addpath(tSNE_matlab);savefile1 C:\Users\lenovo\Documents\MATLAB\COIL-Augment-tsne\data\COIL-100-agumnet-1.mat;
savefile2 C:\Users\lenovo\Documents\MATLAB\COIL-Augment-tsne\data\COIL-100-agumnet-2.mat;load(savefile1);
load(savefile2);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
XsX_src;
XtX_tar;
X[Xs;Xt];color1[1,0,0];%red
color2[0,0,1];%blue
Y1[repmat(color1,[length(Y_src),1]);repmat(color2,[length(Y_tar),1])];mappedX tsne(X, Y1, 2,100,30);savefile [C:\Users\lenovo\Documents\MATLAB\COIL-Augment-tsne\save_tu\map_COIL_100_10x10,.mat];
save(savefile, mappedX,X_src,X_tar,Y_src,Y_tar);
完成。