矩阵变换

使用Python一步步实现PCA算法

拥有回忆 提交于 2019-11-30 16:57:45
使用Python一步步实现PCA算法 标签: PCA Python 本文原地址为: http://sebastianraschka.com/Articles/2014_pca_step_by_step.html Implementing a Principal Component Analysis (PCA) – in Python, step by step Apr 13, 2014 by Sebastian Raschka 此篇为翻译作品,仅作为学习用途。 简介 主成分分析(PCA)的主要目的是通过分析发现数据的模式进行维度的缩减,这个过程的原则是信息损失最小化。 我们希望得到的结果,把初始特征空间映射到一个相对低维度的子空间,同时保证这个低维度空间也能够很好的表达数据的有效信息。在模式分类中,我们希望通过降维操作抽取能够最佳表达数据的特征子集来降低运算时间花费,减少参数估计的误差。 主成分分析(PCA) vs 多元判别式分析(MDA) PCA和MDA都是线性变换的方法,二者关系密切。在PCA中,我们寻找数据集中最大化方差的成分,在MDA中,我们对类间最大散布的方向更感兴趣。 一句话,通过PCA,我们将整个数据集(不带类别标签)映射到一个子空间中,在MDA中,我们致力于找到一个能够最好区分各类的最佳子集。粗略来讲,PCA是通过寻找方差最大的轴(在一类中

Python-数据分析工具1-numpy

怎甘沉沦 提交于 2019-11-29 19:30:46
目录 1 ndarray数组 (0)ndarray数组属性 (1)创建基本数组 (2)创建特殊数组 (3)数组变换 (4)Numpy随机数函数 2 数组索引和切片 (0)数组切片:数组切片可以实现连续多元素选择 (1)数组索引 (2)布尔型索引 (3)花式索引 3 数组的运算 (0) 数组和标量间的运算(数组可以直接和标量进行算术、关系等运算) (1)通用函数运算(一种可以对数组间执行元素级运算的函数) (2)统计函数运算(对整个数组内或按指定轴向的数据进行统计) (3)集合函数运算 (4)条件逻辑运算 (5)布尔型数组运算 4 数组的存取 5 图像变换 1 ndarray数组 (0)ndarray数组属性 (1)创建基本数组 1.首先导入numpy库 import numpy as np 2.然后使用构造函数:np.array(arg),参数arg可以是列表或者元组 3.可以通过列表或元组创建一维、二维或多维数组 4.获得dtype(元素类型)和shape(数组维度)属性:arr.dtype和arr.shape 5.创建数组时显示说明类型:np.array(list, dtype=“type”) (2)创建特殊数组 1.创建全0数组函数 np.zeros((5,6)):创建指定长度或形状的全0数组。 np.zeros_like(a):创建与a对象相同尺寸的全0数组。a可以是列表

浅析相机相关坐标系的相互转换(世界坐标系、相机坐标系、图像坐标系、像素坐标系、内参矩阵、外参矩阵、扭转因子)【相机标定&计算机视觉】

末鹿安然 提交于 2019-11-29 19:24:06
最近在网上看到了很多关于坐标系转换的帖子,但是其内容很多都是相互转载(甚至还有一部分是错误的),同时大部分的文章内容都是告诉你四种坐标系间的相互转化的数学公式,看完之后很多时候还是不知所云,本文意在深入浅出的围绕这四种坐标系的坐标系的建立、为什么要涉及这种坐标系、四种坐标系间的转换关系来展开,我们会在讲解的过程中通过问题的方式以及引入概念的方式来辅助读者更好的理解这四种坐标系的意义。 引入概念1:相机成像模型 引入这个概念有助于后面我们更好的理解四种坐标系的建立以及其存在的意义,各位读者应该对此部分内容有所理解: 引入概念二:参考坐标系的关系 这里,我们终于迎来了我们需要说明的四个坐标系的定义,分别是: 1、图像像素坐标系:表示场景中三维点在图像平面上的投影,其坐标原点在CCD图像平面的左上角,u轴平行于CCD平面水平向右,v轴垂直于u轴向下,坐标使用(u,v)来表示。 注:这里的(u,v)表示的是该像素在数组中的列数和行数 2、图像物理坐标系:其坐标原点在CCD图像平面的中心,x,y轴分别平行于图像像素坐标系的坐标轴,坐标用(x,y)表示。 3、相机坐标系:以相机的光心为坐标系原点,X,Y轴平行于图像坐标系的X,Y轴,相机的光轴为Z轴,坐标系满足右手法则。 注:这里所指的相机的光心可以简单的理解为相机透镜的几何中心 4、世界坐标系:也称为绝对坐标系,用于表示场景点的绝对坐标

从模型到应用,一文读懂因子分解机

拈花ヽ惹草 提交于 2019-11-29 07:49:19
作者丨gongyouliu 编辑丨Zandy 来源 | 大数据与人工智能(ID: ai-big-data) 作者在上篇文章中讲解了《 矩阵分解推荐算法 》,我们知道了矩阵分解是一类高效的嵌入算法,通过将用户和标的物嵌入低维空间,再利用用户和标的物嵌入向量的内积来预测用户对标的物的偏好得分。本篇文章我们会讲解一类新的算法: 因子分解机 ( Factorization Machine ,简称 FM ,为了后面书写简单起见,中文简称为 分解机 ),该算法的核心思路来源于矩阵分解算法,矩阵分解算法可以看成是分解机的特例 (我们在第三节1中会详细说明) 。分解机自从2010年被提出后,由于易于整合交叉特征、可以处理高度稀疏数据,并且效果不错,在推荐系统及广告CTR预估等领域得到了大规模使用,国内很多大厂(如美团、头条等)都用它来做推荐及CTR预估。 本篇文章我们会从 分解机简单介绍、分解机的参数估计与模型价值、分解机与其他模型的关系、分解机的工程实现、分解机的拓展、近实时分解机、分解机在推荐上的应用、分解机的优势 等8个方面来讲解分解机相关的知识点。期望本文的梳理可以让读者更好地了解分解机的原理和应用价值,并且尝试将分解机算法应用到自己的业务中。 一、分解机简单介绍 分解机 最早由Steffen Rendle于2010年在ICDM会议(Industrial Conference on

Faster RCNN(tensorflow)代码详解

不羁的心 提交于 2019-11-28 22:22:38
本文结合CVPR 2018论文 "Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships" ,详细解析Faster RCNN(tensorflow版本)代码,以及该论文中的一些操作步骤。 Faster RCNN整个的流程就是使用VGG等网络提取全图的feature map以及使用RPN网络预测一些object proposal(物体bbox的形式),使用ROI Pooling操作,提取出每个物体的特征图,然后输入到两层全连接神经网络进行物体类别以及bbox坐标的预测,抽象版的流程图可以看下面两幅图。 为了更清楚的体现代码中的结构,按照代码中的流程绘制了下面这张图:(图太大截图不好看,可使用链接下载。) 下面分析代码是根据一次典型的实验的执行顺序来分析的,这样比较方便理解。首先贴出跑一次Faster RCNN的典型参数配置: 'DEDUP_BOXES': 0.0625, 'EPS': 1e-14, 'EXP_DIR': 'faster_rcnn_end2end', 'GPU_ID': 0, 'IS_MULTISCALE': False, 'MATLAB': 'matlab', 'MODELS_DIR': 'XXX/SIN/models

opencv 入门

本秂侑毒 提交于 2019-11-28 14:58:02
转载于 https://bolebook.com/201907/yousanai/yousanai20190703.html#【AI白身境】搞计算机视觉必备的OpenCV入门基础 01、什么是OpenCV? 它是一款由Intel公司俄罗斯团队发起并参与和维护的一个计算机视觉处理开源软件库。 作为一款优秀的计算机视觉库,在诸多方面都有着卓越的表现: 1.编程语言 多数模块基于C++实现,少部分基于C语言实现,同时提供了Python、Ruby、MATLAB等语言的接口。 2.跨平台 可自由地运行在 Linux、Windows和Mac OS 等桌面平台, Android、 IOS、BlackBerray 等移动平台。 3.活跃的开发团队 目前已更新至OpenCV4.0 4.丰富的API 完善的传统计算机视觉算法,涵盖主流传统机器学习算法,同时添加了对深度学习的支持。 OpenCV可以完成几乎所有的图像处理任务,下面是一个简要list。 视频分析(Video analysis) 3D重建(3D reconstruction) 特征提取(Feature extraction) 目标检测(Object detection) 机器学习(Machine learning) 计算摄影(Computational photography) 形状分析(Shape analysis) 光流算法

Unity Shader内置矩阵之美

≡放荡痞女 提交于 2019-11-28 00:47:59
mul函数 mul函数,Z = mul(M, V)是表示矩阵M和向量V进行点乘,得到一个向量Z,这个向量Z就是对向量V进行矩阵变换后得到的值。 特别需要注意的是,例如normal是float3类型的,点乘的矩阵也要转换成float3x3。 float3 normal=mul((float3x3)UNITY_MATRIX_IT_MV,v.normal); 矩阵 内置的矩阵(float4x4): 1、这里要特别说明一下UnityObjectToClipPos(v.vertex)) 方法,官方网站上说明,编写着色器脚本时,请始终使用UnityObjectToClipPos(v.vertex)而不是mul(UNITY_MATRIX_MVP,v.vertex),因为所有内建的矩阵名字在Instanced Shader中都是被重定义过的,如果直接使用UNITY_MATRIX_MVP,会引入一个额外的矩阵乘法运算,所以推荐使用UnityObjectToClipPos / UnityObjectToViewPos函数,它们会把这一次额外的矩阵乘法优化为向量-矩阵乘法。 2、UNITY_MATRIX_IT_MV的使用场景,专门针对法线进行变换。但是为什么法线的变换和顶点不一样呢? 之所以法线不能直接使用UNITY_MATRIX_MV进行变换,是因为法线是向量,具有方向,在进行空间变换的时候

图像识别技术初探(2014/2/17)

断了今生、忘了曾经 提交于 2019-11-27 23:04:35
目录 1 前言. 1 1.1 植物的发展史. 1 1.1.1 植物界的类群及多样性. 1 1.1.2 植物的分类等级. 2 1.2植物的识别方法. 3 1.2.1 花与种子的特性. 3 1.2.2 叶子的特征. 3 1.3 什么是数字图像处理. 5 1.3.1 数字图像处理概念及其意义. 5 1.3.2 数字图像处理中的基本图像类型. 6 1.3.3 图像格式分析. 7 1.4 什么是模式识别. 8 1.4.1 模式识别的概念. 8 1.4.2 模式识别研究方向. 9 1.4.3 模式识别在实际中的应用. 10 2 预处理与算法研究. 10 2.1 图像的预处理. 10 2.2 数字图像处理方法. 11 2.2.1 二值处理. 11 2.2.2 模糊模式识别算法. 12 2.2.3 边缘检测与轮廓提取. 12 3.2.4 信息存储. 14 3 算法实现. 14 3.1 分析实际工作过程. 14 3.2 算法实现过程. 15 3.2.1 掏空内部点算法的基本思想. 15 3.2.2 边界跟踪算法的基本思想. 15 3.2.3 部分实现代码. 18 4 小结分析. 25 5 参考文献. 26 6 致谢. 27 1 前言 1.1 植物的发展史 1.1.1 植物界的类群及多样性 植物界的发生和发展经历了漫长的历史,随着地球历史的发展,由原始生物不断演化,其间大约经历了30亿年

Python数据分析-Numpy

放肆的年华 提交于 2019-11-27 15:19:47
Numpy特点 Numpy作为使用Python进行科学计算的常用库,有着如下特点: 提供了N维数组(矩阵),快速高效,矢量数学运算; 高效的Index,不需要循环,因为底层实现采用了C语言开发。 常见的数组和矩阵的方法 数组和矩阵的创建与维度信息 numpy.array() ## 数组的创建 vector = numpy.array([1,2,3,4]) ## 矩阵的创建 matrix = numpy.array([ [1,2,3], [4,5,6], [7,8,9] ]) shape ## 打印数组的维度信息 vector.shape() ——》(4,) # 数组中存在4个元素 ## 打印矩阵的维度信息 matrix.shape()——》(3,3) #三行三列 reshape eg: a = np.arange(15).reshape(3, 5) #随机创建3行5列的矩阵 Out: [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] a.ndim # 返回其维数 即 2 注意: reshape可以创建一个改变了尺寸的新数组,但是原始数组的shape是不会发生变化的。 reshape(-1) :数组新的shape属性应该要与原来的配套,如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值。 eg: z = np

CSS3 Transform变形(3D转换)

和自甴很熟 提交于 2019-11-27 13:16:27
CSS3 3D 转换 三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换的功能相当类似。CSS3中的3D变换主要包括以下几种功能函数: 3D位移:CSS3中的3D位移主要包括translateZ()和translate3d()两个功能函数; 3D旋转:CSS3中的3D旋转主要包括rotateX()、rotateY()、rotateZ()和rotate3d()四个功能函数; 3D缩放:CSS3中的3D缩放主要包括scaleZ()和scale3d()两个功能函数; 3D矩阵:CSS3中3D变形中和2D变形一样也有一个3D矩阵功能函数matrix3d()。 1.3D位移 在CSS3中3D位移主要包括两种函数translateZ()和translate3d()。translate3d()函数使一个元素在三维空间移动。这种变形的特点是,使用三维向量的坐标定义元素在每个方向移动多少。 随着px的增加,直观效果上: X:从左向右移动 Y:从上向下移动 Z:以方框中心为原点,变大 从上图的效果可以看出,当z轴值越大时,元素也离观看者更近,从视觉上元素就变得更大;反之其值越小时,元素也离观看者更远,从视觉上元素就变得更小。 例子: height: 300px; float: left; margin: 15px; position: relative;