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

matlab-对数据集加噪声并实现tsne可视化

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/'
# 要在图片上生成几边形的物体,N=5代表五边形
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(xy=points, fill=(x1, x2, x3), self=draw)draw.rectangle((x,x,x+20,x+10),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(LabelStart+1:LabelEnd(1,1)-1));     %提取出图片类标签Label = [Label;label_temp];     %每个类标签按顺序排排坐
endsave savepath COIL Label

注意:
①保存的COIL-100-1 和 COIL-100-augment-1 图片保存为X_src,图片标签保存为Y_src,即上述代码中的COILLabel
②保存的COIL-100-2 和 COIL-100-augment-2 图片保存为X_tar,图片标签保存为Y_tar,即上述代码中的COILLabel

即生成的.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);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Xs=X_src;
Xt=X_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');

完成。

相关文章:

matlab-对数据集加噪声并实现tsne可视化

matlab-对数据集加噪声并实现tsne可视化 最近才知道,原来可以不用模型,也能实现对数据集数据的可视化。 **一、**以COIL-100数据集为例子。 问题: 前提:首先对COIL-100数据集根据角度0-175和180-255,分别划分成C1,C…...

【BASH】回顾与知识点梳理(三十八)

【BASH】回顾与知识点梳理 三十八 三十八. 源码概念及简单编译38.1 开放源码的软件安装与升级简介什么是开放源码、编译程序与可执行文件什么是函式库什么是 make 与 configure什么是 Tarball 的软件如何安装与升级软件 38.2 使用传统程序语言进行编译的简单范例单一程序&#…...

Sql注入攻击的三种方式

SQL注入是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。SQL 注…...

dockerfile部署前端vue打包的dist文件实战

背景:一般前端开发后会将打包后的dist文件交由我们部署,部署的方式有很多,这里提供一种思路 在服务器的路径下新建一个目录,在目录中新建Dockerfile,编辑这个文件 FROM nginxCOPY ./dist /home/front COPY nginx.con…...

[技术杂谈]MobaXterm中文乱码编码问题一种解决方法

今日使用mobaxterm连接树莓派发现安装出现乱码,看不清文字是什么。最最简单方式是ssh设置终端字体,具体步骤为: 1. 右键会话,点击编辑会话 2.在以下画面点击终端字体设置 3.选择编码:GBK或者ISO-8859-1...

mac os M1 安装并启动 postgreSQL 的问题

Homebrew 安装 postgreSQL brew install postgresql启动 brew services start postgresql但报错: uninitialized constant Homebrew::Service::System解决方案 brew doctor按照 brew doctor 中的建议进行操作,如果不行,如下: h…...

如何使用Wireshark进行网络流量分析?

如何使用Wireshark进行网络流量分析。Wireshark是一款强大的网络协议分析工具,可以帮助我们深入了解网络通信和数据流动。 1. 什么是Wireshark? Wireshark是一个开源的网络协议分析工具,它可以捕获并分析网络数据包,帮助用户深入…...

抖音web主页视频爬虫

需要抖音主页视频爬虫源码的发私信,小偿即可获得长期有效的采集程序。 比构造 s_v_web_id 验证滑块的方法更快,更稳定。...

常用的jar包【maven坐标格式】

文章目录 🐒个人主页🏅JavaEE系列专栏📖前言:🏨mysql加载启动项jar包🦓mybatis加载启动项jar包 🐒个人主页 🏅JavaEE系列专栏 📖前言: 本篇博客主要以介绍常…...

【分布式】VMware FT概要

讨论了1primary 1backup的情况,比较好理解, 6.824中以该论文为例,介绍了分布式系统中复制的概念,复制的方式。以下简要讲述一些关键点,来源于MIT6.824课程,翻译版本 https://mit-public-courses-cn-transl…...

江西南昌电气机械三维测量仪机械零件3d扫描-CASAIM中科广电

精密机械零部件是指机械设备中起到特定功能的零件,其制造精度要求非常高。这些零部件通常由金属、塑料或陶瓷等材料制成,常见的精密机械零部件包括齿轮、轴承、螺丝、活塞、阀门等。精密机械零部件的制造需要高精度的加工设备和工艺,以确保其…...

MySQL三大日志(binlog、redo log和undo log)详解

1.redo log redo log是InnoDB存储引擎层的日志,又称重做日志文件。 用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来 redo log包括两部分:一个是内存中的日志缓冲(redo log buffer),另…...

七大排序算法详解

1.概念 1.排序的稳定性 常见的稳定的排序有三种:直接插入排序,冒泡排序,归并排序 对于一组数据元素排列,使用某种排序算法对它进行排序,若相同数据之间的前后位置排序后和未排序之前是相同的,我们就成这种…...

[docker][WARNING]: Empty continuation line found in:

报警内容: 下面展示一些 内联代码片。 //执行 sudo docker build ubuntu:v1.00 . [WARNING]: Empty continuation line found in:出现上述错误原因为18行多了一个 " \" 符号,去除即可...

探工业互联网的下一站!腾讯云助力智造升级

引言 数字化浪潮正深刻影响着传统工业形态。作为第四次工业革命的重要基石,工业互联网凭借其独特的价值快速崛起,引领和推动着产业变革方向。面对数字化时代给产业带来的机遇与挑战,如何推动工业互联网的规模化落地,加速数字经济…...

SpringBoot上传文件的实现与优化

一、什么是文件上传? 文件上传是指客户端将本地的文件通过HTTP协议发送到服务器端的过程。文件上传是Web开发中常见的功能之一,例如用户可以上传头像、照片、视频、文档等各种类型的文件。文件上传涉及到客户端和服务器端的交互,需要考虑文件…...

学习python可以做什么?有前景么

Python被热门领域广泛应用 学习者就业优势明显! 说到Python的优势,就不得不提这句玩笑话:Python除了不会生孩子,其他的都会。 Web开发、网络爬虫、数据分析、人工智能、自动化、云计算、网络编程、游戏开发等领域,统…...

还不知道怎么提示LLM?ChatGPT提示入门

文章目录 简介:什么是人工智能?什么是提示过程?为什么会出现这样的差异? 为什么需要提示过程?1) 文章摘要2) 数学问题求解 如何进行提示过程?角色提示:多范例提示:无范例提示单范例提…...

反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)

// 举例01 public class Reflect{ // 静态性 public Person getInstance(){return new Person(); }// 动态性 public T<T> getInstance(String className) throws Exception{Calss clzz Class.forName(className);Constructor con class.getDeclaredConstructor();con…...

uniapp离线打包apk - Android Studio

uniapp 离线打包 基于uni-app的andiord 离线打包 开发工具及所需要的jar包​1.将下载的App离线SDK解压打开&#xff0c;找到HBuilder-Integrate-AS &#xff0c;在Android Studio打开2.打开HBuilder X&#xff0c;发行->原生app本地打包->生成本地打包app资源3.在“HBuil…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...