自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

为之,则难者亦易矣;不为,则易者亦难矣。

It always seems impossible until it’s done.

  • 博客(89)
  • 资源 (2)
  • 收藏
  • 关注

原创 支付宝AR扫福背后的故事

马上要到二零二一年的农历新年了,在这里首先祝小伙伴们新年快乐。与往年除夕一样,支付宝提供了集五福、分红包的活动,以庆祝新年的到来。其中,AR扫福的部分是与计算机视觉技术紧密相关的,而它背后的技术也十分令人感兴趣。本文在这里对AR扫福相关的信息和技术进行了汇总,以期望对其他部署于移动端的深度学习系统的落地实践起到借鉴意义。本文的部分内容转载于网络,其版权归原作者所有。

2021-02-10 22:19:11 2381

原创 使用图神经网络(Graph Neural Network)学习特征表达

在现实世界的许多应用当中,很多数据集都天然的带有某种图结构信息,例如社交网络、万维网、知识网络、蛋白质分子结构和论文互相引用形成的网络等等。在学习每个节点的特征时,传统的机器学习方法并不能很好地利用图结构信息直接进行训练,以捕捉每个节点的上下文信息(Context)或者对其他节点的依赖关系。最近,图神经网络(Graph Neural Network)提出了一种通用的、利用图结构信息训练神经网络的方法,这里对其核心的思想进行一下总结。

2021-02-10 02:28:15 1093

原创 使用Contrastive Loss和Triplet Loss学习特征表达

在某些实际应用当中(例如人脸识别/鉴别、信息检索、行人重识别、内容推荐等等),我们也可以利用不同样本之间的关系,提升模型学习特征的能力。例如,我们可能希望相同类别样本的特征向量在某种度量空间(Metric Space)中是相近的,而不同类别样本的特征向量在该空间中尽可能远离。这里,我们可以使用对比误差(Contrastive Loss)或者三元组误差(Triplet Loss)来达到这一目的。

2021-02-10 01:43:59 899

原创 利用Transformer模型进行电影评论分类

Transformer模型可以理解为RNN模型中的“变形金刚”,在许多应用场景(例如机器翻译、自然语言处理)中都取得了很好的效果, 成为了目前研究领域的新主流。但不管当前研究人员的观点如何以及是否偏颇,我们作为普通的吃瓜群众而言,对于优秀的东西都是要不断学习的。本文会以电影评论分类的代码为例子,对其进行简要的探讨与总结。

2021-02-05 00:55:10 1579 5

原创 可训练的神经三维网格渲染器(Neural 3D Mesh Renderer)

如果说计算机视觉是将三维世界的视觉信息“编码”为机器可以理解的参数的过程,那么计算机图形学则是将参数化的三维模型“解码”为人类可以感知的三维世界的过程。从某种意义上来讲,如果不考虑转换过程中信息的损失,这似乎是一个可逆的过程;而如果能使用某种方式把计算机视觉的操作与计算机图形学的操作结合在一起,是不是能够像自动编码器(Autoencoder)一样而实现某种无监督学习的应用呢?

2021-01-29 08:34:32 4516 3

原创 利用生成式对抗网络(GAN)进行艺术创作

人类的创作过程,可以在某种意义上理解为“从无到有”(Creating)的过程或者“举一反三”(Translation)的过程。那么对于机器而言,我们可不可以使用某种模型来模拟这种过程呢?答案是肯定的。生成式对抗网络(Generative Adversarial Networks)是近年来计算机科学当中比较有趣的想法之一,本文将以创作数字图像为应用场景来对该模型进行介绍。

2021-01-22 08:59:28 1451 3

原创 使用自动编码器(Autoencoder)及其变体进行特征学习

自动编码器(Autoencoder)是一类无监督学习的特征提取方法,它由编码器(Encoder)和解码器(Decoder)两个部分组成。其工作的原理是,首先通过编码器将初始的特征映射到一个潜在的特征空间(通常该空间的维度远小于原始空间),再使用解码器将其重新映射到原始的特征空间当中。编码器和解码器通常使用神经网络结构来实现,在训练模型参数时会定义某种距离函数,来衡量输出数据与预期目标的误差。它主要的应用有数据压缩、数据去噪以及数据生成等等,这里给出一些示例代码以方便学习。

2021-01-18 23:38:25 5223 2

原创 使用协同过滤(Collaborative Filtering)模型实现内容推荐系统

内容推荐系统在音乐、电影、软件、交友及电子商务网站上有着很广泛的应用,它极大的方便了用户对感兴趣内容的探索,并一定程度提高了网站内容的流量。随着人们对该话题研究的深入,也出现了很多成熟的实现方法,它们大致可以分为三类:1)基于人工设计特征的过滤方法;2)基于协同过滤的方法;3)基于深度神经网络学习特征的过滤方法。本文主要对协同过滤模型进行介绍。

2021-01-03 03:22:36 795

原创 const int * p, int const * p和int * const p的区别

1)const不与p直接相邻,则p指向的内容的值不可更改;2)const与p直接相邻,则指针p的值不可更改。

2021-01-03 01:02:53 1453

原创 如何使用廉价GPU运行基于MatConvNet的CNN程序

MatConvNet是一个基于MATLAB的工具箱。针对计算机视觉相关的应用,它实现了卷积神经网络(CNN)的各种基本功能。相对于Caffe或Tensor Flow等基于C/C++底层实现的CNN函数库来说,它具有便于学习、易于修改以及适合跨平台编程等特点,适合CNN的初学者来学习。 然而,因为某种原因,它对NVIDIA系列早期型号的显卡支持并不好。以现在Amazon上白菜价都能买到

2017-02-28 15:19:28 3444

原创 关于多元一次方程组更多的故事

稀疏编码(Sparse Coding)是前些年信号研究领域比较热门的技术,常用于对信号进行压缩编码,人们也经常称这种技术为压缩感知(Compressive Sensing)。而近些年也被引入到了机器学习、模式识别、计算机视觉等各个领域的研究当中,在各种应用当中也取得了比较好的实验结果。当然,这种技术从数学建模上来讲,实际上是某种求解多元一次(线性)方程组的方法,下面也分享一下这个关于求解方程组的一

2013-08-25 11:22:19 3765

原创 局部二值模式(LBP)中间过程的可视化

局部二值模式(Local Binary Pattern - LBP)是广泛用于图像分类的一种图像特征,它的特点是,在图像发生光照变化时,提取的特征仍然能够不发生大的改变。提取LBP的过程首先是将原始图像转换为LBP图,然后统计LBP图的LBP直方图,并以这个向量形式的直方图来表示原始的图像。目前不少开源的LBP实现代码没有给出中间过程的可视化步骤,这里给出了由原始图转换为LBP图的C++代码。

2013-08-03 09:58:25 4736 2

原创 将椭圆形图像归一化为圆形图像

很多图像中的Interested Detector得到的图像都是椭圆形的,为了能够方便提取图像特征,首先通常会将这个椭圆形的区域归一化为圆形区域,也可以理解为一个正方形区域。下面给出了这个功能的Matlab代码实现。 getEllipseImage.mfunction [ imageEllipse, imageCircle ] = getEllipseImage( image,

2013-08-01 10:56:25 7966 11

原创 Visual Studio属性配置中使用宏

在学习C语言的时候,我们曾经遇到过一个宏的概念。宏的作用机理本质上是宏的展开,C语言中的宏的用法也有很多种(水其实很深...),不过从感觉上来讲,人们大致上会在以下的场景中,利用宏来解决一些窘境:一是为了避免重复书写同样性质代码时,会使用到宏;二是为了定义一些常量参数时,会使用到宏。另外,宏的意义也在于,当我们修改某个宏的定义时,便修改了所有引用宏的地方所展开的代码,这无疑节省了我们修改代码的工作

2013-06-30 22:45:05 10791

原创 基于学习的索引算法

如果我们想进行数据的查找,最直接的方法就是将待查询的数据与数据库中的数据逐个比对一遍(顺序查找),当然这种方法查找的时间复杂度也是最高的,只能用于数据库容量较小的应用场景,因此我们需要想一些办法来降低查找的时间复杂度。为了进行快速的查找,通常的思路是:1)对数据库中的数据进行预处理,建立某种便于快速查找的数据结构。2)使用多个线程、进程或是机器来并行的查找。

2013-06-30 04:06:27 3677

原创 分治的算法设计思想

分治(Divide and Conquer)是递归程序设计当中,一种非常重要的算法设计思路。利用它我们可以设计出许多高效的算法,例如排序、查找、大数乘积、矩阵乘法以及语法分析等等。它的核心思想是将一个复杂的问题分解成类型相同且相互独立的小问题,然后将小问题的解汇总,最终解决大问题。      分治法的一般步骤      使用分治法进行算法设计的一般步骤如下:      1. 将问题分为

2013-06-20 17:18:05 4424 3

原创 利用Shape Context进行形状识别

什么是Shape Context      Shape Context是一个用于形状识别的,非常经典的特征(一串便于计算机处理的数字)提取方法,它由Serge Belongie和Jitendra Malik 于2002年在他们的文章“Shape matching and object recognition using shape contexts”中提出。这种特征提取方法使得计算机能够衡

2013-06-09 01:31:09 20717 11

原创 如何正确理解深度学习(Deep Learning)的概念

现在深度学习在机器学习领域是一个很热的概念,不过经过各种媒体的转载播报,这个概念也逐渐变得有些神话的感觉:例如,人们可能认为,深度学习是一种能够模拟出人脑的神经结构的机器学习方式,从而能够让计算机具有人一样的智慧;而这样一种技术在将来无疑是前景无限的。那么深度学习本质上又是一种什么样的技术呢?      深度学习是什么      深度学习是机器学习领域中对模式(声音、图像等等)进行建模的一

2013-05-31 23:50:38 11926 12

原创 Visual Studio下C++第三方库的配置方法总结

对于任何一种编程语言来说,其提供的标准库以及第三方库都是一个值得我们关注的内容,因为这样可以使我们站在巨人的肩膀上做事,从而更方便快捷地完成我们想要做的事情。对于C++这种语言来说,标准库在引用正确的头文件后,便可以使用其提供的相关功能了;而对于第三方库来讲,可能还需要花一点点时间做一些配置,才能正常的使用这些库。下面对于在Visual Studio平台下的第三方库的配置方法进行一些总结。

2013-05-31 15:17:44 11331

原创 Visual Studio中进行64位平台的编程

目前很多电脑在买来的时候都默认装了64位的操作系统,这说明64位的计算机平台已经越来越走向普及化。因此,对于我们来讲,了解64位程序的配置或编写方法也是非常重要的。在这篇文章中,我对Visual Studio 2010中进行64位平台编程的配置方法做了一个简单的探索与总结。      创建解决方案和工程文件      要进行编程,我们首先要做的第一步是创建一个解决方案和一个工程文件,这里假

2013-05-22 11:34:36 4943 2

原创 一段旅程的结束,一段旅程的开始

今天是五四青年节,C++理论部分培训的最后一节课也正好是在这一天,好像上天冥冥之中有某种安排一样。     "The main purpose of this orientation is to give the new graduates some basic concepts on programming, debugging and software project, to keep

2013-05-04 23:49:45 4878 2

原创 【CPPTraining】Techniques towards Less Coding (Cont.) PA

培训内容简要回顾      1)组成与继承            a)宏观上的认识            b)类的概念的回顾            c)构造函数的初始化列表            d)组成对象            e)继承对象      2)多态与虚函数            a)宏观上的认识            b)多态概念的引出

2013-04-30 09:48:13 2038

原创 【CPPTraining】Techniques towards Less Coding PA

培训内容简要回顾      1)函数与函数的重载            a)什么是函数            b)函数的声明            c)函数的默认参数            d)函数的重载      2)从宏到常量与内联函数            a)宏            b)C++中的常量            c)C++中的内联函数

2013-04-16 20:06:11 1767 4

原创 【CPP Training】Data Abstraction and Hiding the Implementation PA

培训内容简要回顾      1)数据类型            a)什么是数据类型            b)C语言数据类型的回顾            c)引用类型      2)类与对象            a)类的概念            b)类的定义            c)类的属性            d)类的方法            e

2013-04-13 03:06:40 2892 4

原创 【CPP Training】Getting Started with C++ PA

培训内容简要回顾      1)学习C++之前需要思考的内容            a)什么是编程            b)有效的学习方式(思考、阅读、试验)      2)C++的诞生与特点      http://www.research.att.com/~bs/      3)C++程序的基本结构            a)最基本的代码

2013-04-13 02:43:46 1629

原创 Matlab与C/C++混合编程调用OpenCV

好久没写博客了,今天一个师兄问到了一个关于在Matlab与C/C++混合编程时,使用OpenCV库的编译问题,所以借此机会总结成文字分享一下过程。      在使用Matlab编译包含OpenCV库的代码之前,首先假设下面的几项工作已经完成。      1)下载并解压某个版本的OpenCV至硬盘的某个目录上,并将其运行时库添加到环境变量中。      2)安装了某个版本的VC编

2013-04-10 22:16:34 8726 10

原创 期待新的一年

又到了一年年末时自己也又经历了一年的成长做了许多自己想做的事当然也有一些未能完成的想法不过无论如何都不失为一种不留遗憾的经历这里也祝福自己在新的一年放飞更多de梦想期待二零一二

2011-12-31 23:46:30 2603

原创 利用PCA来做人脸识别

不久前做《数据挖据》课程作业的时候,研究了下利用PCA做人脸识别的算法,并进行了一些实验,这里分享一下自己对该算法的理解。而由于算法推导过程中涉及许多公式,不方便以文字的形式展示,所以文章中的部分内容是以贴图的形式展现。      实验结果

2011-12-31 21:31:14 3140 4

原创 安装Ubuntu后Windows蓝屏问题的解决

前几天在已经安装了WIN7的机器上,又安装了Ubuntu 11.10操作系统。安装成功后,可以正常进入Ubuntu操作系统,但是每次启动WIN7时,在徽标出现的开始系统就出现了蓝屏(Blue Screen Of Death)现象,然后系统就重启了,于是再也没能有机会进入Windows了。      进入Ubuntu查看Windows相关的文件系统,发现Windows相关的系统文件并没有缺少,觉

2011-10-31 23:12:55 9289 4

原创 Matlab中保持原来数值顺序的unique函数实现

在matlab中使用unique函数获取某向量中不重复数值的集合时,默认会对这个集合中的元素排序。在某些应用场合当中,这种排序会带来某种不方便,这里实现了一个保持原来数值顺序的unique函数。      程序代码function uniVecUnsorted = uni

2011-10-11 10:12:44 7375

原创 OpenCV中矩阵深度类型转换

在OpenCV中,cv::Mat类提供了一个名为converTo的方法来进行矩阵类型转换。当然使用时需要注意的是,该函数只能进行矩阵深度类型的转换,而不能进行矩阵通道数的转换。若需要进行矩阵通道数的转换,可能需要采取进行其他的方法来变通实现。下面对该函数进行测试。

2011-08-15 21:32:29 4889 3

原创 用Free来释放New出来的东西会发生什么

用C语言中的free函数来释放C++中的new运算符分配的内存,会发生什么呢? 开始做实验。

2011-07-21 20:16:40 2974

原创 离散余弦变换 - Discrete Cosine Transform

离散余弦变换(DCT)最近可能要用,不过之前上课学的内容有点忘记了,这里复习一下。      离散余弦变换的定义      与傅里叶变换的思想相似,离散余弦变换(Discrete CosineTransform - DCT)将函数表达为许多不同幅度和频率的余弦

2011-07-06 15:13:29 6922 4

原创 类前置声明的使用

在书写C++代码的过程当中,人们有时会用到一个叫类前置声明的东西。那么使用这个类前置声明对于程序员来讲有什么好处呢,我们什么时候可以利用这个类前置声明呢?下面就用一个具体的例子来解释类前置声明的用法。

2011-05-19 10:49:00 6702

原创 什么是超图(Hypergraph)?

最近看了篇Paper,里面出现了一个超图(Hypergraph)的概念,论文里的解释不是很清楚,所以不是很懂,这里研究下子。

2011-05-18 16:29:00 49978 7

原创 数组名与数组名的地址

今天某学弟问了我一个C语言的问题,为什么二维数组名的值和二维数组名地址的值是相同的。我说不可能吧……结果做了下实验,居然真的是这个样子的,感觉很诡异。之后我感觉不可能二维数组这么特殊,又做了一维数组的实验,发现一维数组名的值和一维数组名地址的值也是相同的。实验代码与运行结果如下所示。

2011-05-10 16:21:00 2769 7

原创 Visual Studio 2010 C++ 快捷键

Visual Studio 2010 C++ 快捷键 poster。点我下载。

2011-04-27 09:59:00 2437

原创 Windows下Mex程序的调试

写一下在Windows下调试Matlab与C/C++混合编程程序的方法。

2011-04-12 09:54:00 7149 13

原创 在Matlab中使用mex函数进行C/C++混合编程

最近写了个Matlab程序,好慢呐……所以开始学习Matlab与C/C++混合编程。下面写了个测试代码,显示一个Double类型矩阵中的元素。在Matlab使用mex命令编译源文件时,要注意这样一个现象:源文件名后缀为.c时,所有变量声明必须一次性完成,且放在最前面, 否则mex编译错误;而源文件名后缀为.cpp时,就没有上面的问题,...- -||。

2011-04-01 22:19:00 12847 1

原创 Debug与Release版本程序运行速度的比较

在使用Visual Studio编译器编译源代码时,会有Debug与Release两种编译模式。Debug版本通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 版本称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。      下面来看一下这两种模式在不同情况下运行速度的差异。      Visual S

2011-03-21 12:51:00 16480 4

Huffman字节编解码类

Huffman字节编解码类,实现了任意数量字节数据的编码与解码,带有权重表与编码表。

2011-01-04

数字图像处理VC演示程序

数字图像处理VC演示程序,包含了数字图像处理相关算法的VC实现。

2010-04-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除