demi的博客

Javascript如何实现GPU加速?

一、什么是Javascript实现GPU加速?

CPU与GPU设计目标不同,导致它们之间内部结构差异很大。
CPU需要应对通用场景,内部结构非常复杂。
而GPU往往面向数据类型统一,且相互无依赖的计算。
所以,我们在Web上实现3D场景时,通常使用WebGL利用GPU运算(大量顶点)。
但是,如果只是通用的计算场景呢?比如处理图片中大量像素信息,我们有办法使用GPU资源吗?这正是本文要讲的,GPU通用计算,简称GPGPU。

二、实例演示:色块识别。

如下图所示,我们识别图片中彩虹糖色块,给糖果添加表情。

人脸识别 介绍

人脸识别

人脸识别技术是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,
并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,通常也叫做人像识别、面部识别

1、人脸识别流程

人脸识别技术流程主要包括四个组成部分,分别为:人脸图像采集及检测、人脸图像预处理、人脸图像特征提取以及匹配与识别

人脸图像采集

人脸图像采集方式分为两种,分别为批量人脸图像导入及现场视频人脸采集。

批量导入是指系统在用户指定的目录下面自动寻找图像文件进行人脸图像批量导入。现场视频人脸图像采集是指客户端的采集功能被打开后,会调用本地的摄像头并打开。当客户在采集设备的拍摄有效范围内,采集设备会自动搜索客户的人脸图像,当采集域上出现红色矩形时,采集设备已经搜索到客户的人脸图像,然后客户端进行自动采集图像。

人脸图像质量择优

图像处理基础(5):双边滤波器

双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。

双边滤波器之所以能够做到在平滑去噪的同时还能够很好的保存边缘(Edge Preserve),是由于其滤波器的核由两个函数生成:
  •   一个函数由像素欧式距离决定滤波器模板的系数
  •   另一个函数由像素的灰度差值决定滤波器的系数

其综合了高斯滤波器(Gaussian Filter)和 α-截尾均值滤波器(Alpha-Trimmed mean Filter)的特点。高斯滤波器只考虑像素间的欧式距离,其使用的模板系数随着和窗口中心的距离增大而减小;Alpha截尾均值滤波器则只考虑了像素灰度值之间的差值,去掉 α% 的最小值和最大值后再计算均值。

双边滤波器使用二维高斯函数生成距离模板,使用一维高斯函数生成值域模板。

距离模板系数的生成公式如下:

【人工神经网络基础】为什么神经网络选择了“深度”?

现在提到“神经网络”和“深度神经网络”,会觉得两者没有什么区别,神经网络还能不是“深度”(deep)的吗?我们常用的 Logistic regression 就可以认为是一个不含隐含层的输出层激活函数用 sigmoid(logistic) 的神经网络,显然 Logistic regression 就不是 deep 的。不过,现在神经网络基本都是 deep 的,即包含多个隐含层。Why?

1. universality approximation theorem(通用近似定理)

任何连续的函数 f : RN→RM 都可以用只有一个隐含层的神经网络表示。(隐含层神经元足够多)

【通俗易懂】10幅图解释机器学习中的基本概念

作者:Maybe2030
来源:http://lib.csdn.net/article/machinelearning/49601

以下的几幅图是我认为在解释机器学习基本概念时最有启发性的条目列表。

1. Test and training error: 为什么低训练误差并不总是一件好的事情呢:以模型复杂度为变量的测试及训练错误函数。

【通俗易懂】10幅图解释机器学习中的基本概念

2. Under and overfitting: 低度拟合或者过度拟合的例子。多项式曲线有各种各样的命令M,以红色曲线表示,由绿色曲线适应数据集后生成。

深度学习优化函数详解(3)——mini-batch SGD 小批量随机梯度下降

本文延续该系列的上一篇 深度学习优化函数详解(2)– SGD 随机梯度下降

上一篇我们说到了SGD随机梯度下降法对经典的梯度下降法有了极大速度的提升。但有一个问题就是由于过于自由 导致训练的loss波动很大。那么如何可以兼顾经典GD的稳定下降同时又保有SGD的随机特性呢?于是小批量梯度下降法, mini-batch gradient descent 便被提了出来。其主要思想就是每次只拿总训练集的一小部分来训练,比如一共有5000个样本,每次拿100个样本来计算loss,更新参数。50次后完成整个样本集的训练,为一轮(epoch)。由于每次更新用了多个样本来计算loss,就使得loss的计算和参数的更新更加具有代表性。不像原始SGD很容易被某一个样本给带偏 。loss的下降更加稳定,同时小批量的计算,也减少了计算资源的占用。

公式推导

我们再来回顾一下参数更新公式。每一次迭代按照一定的学习率 α 沿梯度的反方向更新参数,直至收敛

语言处理想突破,三座大山必须过

大数据文摘出品
编译:李佳、汤圆、钱天培

“我的飞机什么时候到?”

把这个问题抛给智能机器人助手。几乎可以肯定,机器立马就懵逼了。

“我”是谁?“飞机”是航班还是淘宝上订的模型玩具呢?“到”又是到哪呢?

如果是人类来回答这个问题,即使在情景不明确的情况下也能在快速澄清后给出回答,但对机器来说,除非依赖大量人为制定的规则,回答这样的问题难度堪比“哥德巴赫猜想”。

面对自然语言处理发展(NLP)存在的诸多难题,该领域的大牛、Salesforce的首席科学家Richard Socher在近日指出:NLP领域的发展要过三座大山。

困扰NLP领域的这三座大山究竟是什么?一起来听大佬说。

语言处理想突破,三座大山必须过

一直以来,语言都被认为是人类的独特能力,是智慧的表现。但最近,自然语言处理技术的发展似乎也将语言能力赋予给了机器。

深度学习篇——CNN和RNN结合与对比,实例讲解

一、前述

CNN和RNN几乎占据着深度学习的半壁江山,所以本文将着重讲解CNN+RNN的各种组合方式,以及CNN和RNN的对比。

二、CNN与RNN对比

1、CNN卷积神经网络与RNN递归神经网络直观图

深度学习篇——CNN和RNN结合与对比,实例讲解

2、相同点:

2.1. 传统神经网络的扩展。
2.2. 前向计算产生结果,反向计算模型更新。
2.3. 每层神经网络横向可以多个神经元共存,纵向可以有多层神经网络连接。

3、不同点

CNN误差反传时旋转卷积核的简明分析

CNN(卷积神经网络)的误差反传(error back propagation)中有一个非常关键的的步骤就是将某个卷积(Convolve)层的误差传到前一层的池化(Pool)层上,因为在CNN中是2D反传,与传统神经网络中的1D反传有点细节上的不同,下面通过一个简单的例子来详细分解一下这个反传步骤。

假设在一个CNN网络中,P代表某个池化层,K代表卷积核,C代表卷基层,首先来看一下前向(feed forward)计算,从一个池化层经过与卷积核(Kernel)的运算得到卷积层:

CNN误差反传时旋转卷积核的简明分析

将前向计算的步骤进行分解,可以得到以下公式: