矩阵变换

Python 进行目标检测

守給你的承諾、 提交于 2020-02-15 23:54:46
一、前言    从学单片机开始鼓捣C语言,到现在为了学CV鼓捣Python,期间在CSDN、简书、博客园和github这些地方得到了很多帮助,所以也想把自己做的一些小东西分享给大家,希望能帮助到别人。记录人生的第一篇博客,mark。 二、图像检测步骤 1. 读取两张图片 第一张是需要检测的小物体,第二章图片是小物体放置在大场景中。代码与输出结果如下所示: import numpy as np import matplotlib.pyplot as plt import cv2 def my_show(img): plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)) return # 读取图片 img_small=cv2.imread('small.jpg',1) img_big=cv2.imread('big.jpg',1) # 显示图片 plt.figure(figsize=(10,10)) plt.subplot(121) my_show(img_small) plt.subplot(122) my_show(img_big) 2. 提取图片中的特征点 这一步就像我们在区分不同的人的时候,一眼看到外貌就知道此人是谁,而外貌就是这个人的特征。我们希望提取该物体的特征点,以便在不同的场景中识别出来。图片是由像素点构成

CS224n学习笔记(一)

旧巷老猫 提交于 2020-02-14 04:30:40
How do we have usable meaning in a computer? Represents the words as discrete symbols, (离散型变量) Use the one-hot vector to represent the word in sentence, (Traditional way, we can use Distributional semantics) Distributional semantics : A word's meaning is giving by words that frequently appear close-by. when a word w appear in a text, its context words is the set of words that appears nearby. We can use many contexts of w to build up a representation of w . Word Vector :We build a dense(稠密的) vector for each word, chosen so that it's similar to vector of words that appear in similar contexts, it

数据降维方法小结

帅比萌擦擦* 提交于 2020-02-10 08:40:01
原文:http://blog.csdn.net/yujianmin1990/article/details/48223001  数据的形式是多种多样的,维度也是各不相同的,当实际问题中遇到很高的维度时,如何给他降到较低的维度上?前文提到进行属性选择,当然这是一种很好的方法,这里另外提供一种 从高维特征空间向低纬特征空间映射 的思路。 数据降维的目的   数据降维,直观地好处是维度降低了,便于计算和可视化,其 更深层次的意义在于有效信息的提取综合及无用信息的摈弃 。 数据降维的方法   主要的方法是线性映射和非线性映射方法两大类。 线性映射    线性映射方法的代表方法有:PCA(Principal Component Analysis),LDA(Discriminant Analysis) PCA方法简介   主成分分析的 思想 ,就是线性代数里面的K-L变换,就是 在均方误差准则下失真最小的一种变换 。是将原空间变换到特征向量空间内,数学表示为 A x = λ x 。   特征向量和特征值的意义:分别表示不同频率及其幅度。    特征向量和特征值的直白理解: 想在特征空间内找到某个向量 x ,使得其满足 A x = λ x 。这个式子可以这样理解, A 是空间内的运动, x 经过运动 A 后,保持方向不变(仍是 x 的方向),只是大小伸缩了 λ 倍。这样我们找到了 k

数论初步

泪湿孤枕 提交于 2020-02-09 12:39:08
PS:以下部分定理没有证明,如果有读者想要了解定理的具体证明,请自行百度,本文限于篇幅 (只是因为笔者自己不会) ,对部分定理的证明不作讨论。 本文讲啥 本文主要讲的是ACM中的数论基础内容 (以后可能会再写一篇ACM的数论进阶内容) ,侧重应用,证明都是瞎证的,严谨的证明请观众姥爷自行百度 线性筛筛素数 埃氏筛 埃氏筛用每个素数来筛掉它的倍数,剩下的就是素数,时间复杂度是 \(O(nloglogn)\) 为啥能正确地筛? 每一个合数,都可以被质因数分解,且根据 唯一分解定理 ,这个分解是唯一的,所以只要拿每个素数把它的倍数都筛掉,就能所有合数筛掉 板子 bool check[maxn]; std::vector<ll> prime; for (ll i = 2; i <= n; ++i) if (!check[i]) { prime.push_back(i); for (ll j = i * i; j <= n; j += i) check[j] = 1; } 为啥 \(j\) 从 \(i^2\) 开始? 上面的板子中第二层循环就是用素数筛掉它的倍数的过程, \(j\) 从 \(2i\) 开始循环,那为什么板子里是从 \(i^2\) 开始呢?实际上,这是一个小小的优化,因为在用素数 \(i\) 来筛它的倍数时,区间 \([2, i-1]\) 中的所有素数已经将它的倍数都筛过了

Android OpenGL 学习笔记 --开始篇

孤人 提交于 2020-02-06 13:45:34
1、什么是 OpenGL?    OpenGL 是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库。 OpenGL 的前身是 SGI 公司为其图形工作站开的 IRIS GL。IRIS GL 是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是 SGI 公司便在 IRIS GL 的基础上开发 OpenGL 。具体详细的介绍请 点击这里 。 2、OpenGL 的发展历程   1992年7月 发布了 OpenGL 1.0 版本,并与微软共同推出 Windows NT 版本的 OpenGL 。   1995年 OpenGL 1.1 版本面市,加入了新功能,并引入了纹理特性等等。   一直到 2009年8月Khronos小组发布了 OpenGL 3.2,这是一年以来 OpenGL 进行的第三次重要升级。 具体特点及功能、 OpenGL 现状、发展历程、 OpenGL 规范、编程入门请 点击这里 。 3、OpenGL ES 简介 Android 3D 引擎采用的是 OpenGL ES 。 OpenGL ES 是一套为手持和嵌入式系统设计的 3D 引擎 API ,由 Khronos 公司维护。在 PC 领域,一直有两种标准的 3D API 进行竞争, OpenGL 和 DirectX 。一般主流的游戏和显卡都支持这两种渲染方式, DirectX 在 Windows

4.1线性方程组

南笙酒味 提交于 2020-02-05 05:50:27
线性方程组 解决一些实际问题的时候需要用到方程组,比如说鸡兔同笼问题。解方程组的时候一般会有三种操作:交换两个方程组、一个方程组乘上一个数、某个方程组乘上一个数加到另一个方程上,这三种操作正号对应了 矩阵的初等行变换 。 把方程组写成矩阵形式会更加方便 参考 以上图片均摘自宋浩老师视频,以方便以后自己查阅,感谢宋老师。 视频 传送门 来源: CSDN 作者: PythonFCG 链接: https://blog.csdn.net/renweiyi1487/article/details/103898640

WebGL&Three.js工作原理

拥有回忆 提交于 2020-02-05 04:15:49
一、我们讲什么? 我们讲两个东西: 1、WebGL背后的工作原理是什么? 2、以Three.js为例,讲述框架在背后扮演什么样的角色? 二、我们为什么要了解原理? 我们假定你对WebGL已经有一定了解,或者用Three.js做过了一些东西,这个时候,你可能碰到了这样一些问题: 1、很多东西还是做不出来,甚至没有任何思路; 2、碰到bug无法解决,甚至没有方向; 3、性能出现问题,完全不知道如何去优化。 这个时候,我们需要了解更多。 三、先了解一个基础概念 1、什么是矩阵? 简单说来,矩阵用于坐标变换,如下图: 2、那它具体是怎么变换的呢,如下图: 3、举个实例,将坐标平移2,如下图: 如果这时候,你还是没有理解,没有关系,你只需要知道,矩阵用于坐标变换。 四、WebGL的工作原理 4.1、WebGL API 在了解一门新技术前,我们都会先看看它的开发文档或者API。 查看Canvas的绘图API,我们会发现它能画直线、矩形、圆、弧线、贝塞尔曲线。 于是,我们看了看WebGL绘图API,发现: 它只能会点、线、三角形?一定是我看错了。 没有,你没看错。 就算是这样一个复杂的模型,也是一个个三角形画出来的。 4.2、WebGL绘制流程 简单说来,WebGL绘制过程包括以下三步: 1、获取顶点坐标 2、图元装配(即画出一个个三角形) 3、光栅化(生成片元,即一个个像素点) 接下来

图解WebGL&Three.js工作原理

我怕爱的太早我们不能终老 提交于 2020-02-05 04:12:42
“哥,你又来啦?” “是啊,我随便逛逛。” “别介啊……给我20分钟,成不?” “5分钟吧,我很忙的。” “不行, 20分钟,不然我真很难跟你讲清楚。” “好吧……” “行,那进来吧,咱好好聊聊” 一、我们讲什么? 我们讲两个东西: 1、WebGL背后的工作原理是什么? 2、以Three.js为例,讲述框架在背后扮演什么样的角色? 二、我们为什么要了解原理? 我们假定你对WebGL已经有一定了解,或者用Three.js做过了一些东西,这个时候,你可能碰到了这样一些问题: 1、很多东西还是做不出来,甚至没有任何思路; 2、碰到bug无法解决,甚至没有方向; 3、性能出现问题,完全不知道如何去优化。 这个时候,我们需要了解更多。 三、先了解一个基础概念 1、什么是矩阵? 简单说来,矩阵用于坐标变换,如下图: 2、那它具体是怎么变换的呢,如下图: 3、举个实例,将坐标平移2,如下图: 如果这时候,你还是没有理解,没有关系,你只需要知道,矩阵用于坐标变换。 四、WebGL的工作原理 4.1、WebGL API 在了解一门新技术前,我们都会先看看它的开发文档或者API。 查看Canvas的绘图API,我们会发现它能画直线、矩形、圆、弧线、贝塞尔曲线。 于是,我们看了看WebGL绘图API,发现: 它只能会点、线、三角形?一定是我看错了。 没有,你没看错。 就算是这样一个复杂的模型

【深度学习基础】从零开始的炼丹生活07——深度模型中的优化

喜夏-厌秋 提交于 2020-02-04 07:09:35
往期回顾: 04——从传统机器学习走向深度学习 05——深度前馈网络、神经网络概述 06——深度学习中的正则化 介绍了神经网络的基本构件和正则化策略之后,学习一下深度模型中的优化。先说一说传统的纯优化与机器学习中的优化的异同,再介绍一下神经网络中优化的挑战,最后说说基本的优化算法。(参考《深度学习》第8章) 一、机器学习中的优化 传统的优化方法是纯优化最小化目标 J 本身,而机器学习的优化是间接作用的。在机器学习问题中,我们关注某些性能度量 P ,其定义于测试集上并且是不可解的。因此机器学习希望通过降低代价函数 J(θ)来间接提高 P 。 1. 经验风险最小化 机器学习算法的目标是降低期望泛化误差 J ∗ ( θ ) = E ( x , y ) ∼ p d a t a L ( f ( x ; θ ) , y ) J^*(\theta)=\mathbb E_{(\bold {x,y})\sim p_{data}}L(f(x;\theta),y) J ∗ ( θ ) = E ( x , y ) ∼ p d a t a ​ ​ L ( f ( x ; θ ) , y ) 这被称为 风险 。此时数据取自真实的潜在分布,然而,我们遇到的问题通常并不清楚真实分布,只知道训练集中的样本。 我们将机器学习中的优化转换回一个优化问题的最简单方法就是最小化训练集上的期望损失,以训练集上的经验分布 p

android 游戏导引(2. 游戏的基础设置)

北慕城南 提交于 2020-01-31 05:59:13
/*--> */ /*--> */ android 游戏导引(2. 游戏的基础设置) 上一节已经学习了一个基本的 OpenGL 框架了,今天这一节就进一步设置一下 2D 游戏相关的东西了。对 2D 游戏的喜爱甚于 3D。 相信大多数人也是吧。 Table of Contents 1 游戏全屏显示 2 设置 OpenGL 的 2D 环境 2.1 onSurfaceCreated 2.2 onSurfaceChanged 2.3 onDrawFrame 3 三角形-测试 1 游戏全屏显示 2行代码搞定,一个让应用去掉自己的标题栏,一个设置全屏,放在应用的创建函数 OnCreate 中: public class GlGame extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,