存档

2010年5月 的存档

zz:流形学习2

2010年5月31日 11 条评论

这一篇是狐狸推荐的。哥是晕菜了。一块放上来吧。来自已经死掉的prfan。

dodo: ( learning)

dodo

流形学习是个很广泛的概念。这里我主要谈的是自从2000年以后形成的流形学习概念和其主要代表方法。自从2000年以后,流形学习被认为属于非线性降维的一个分支。众所周知,引导这一领域迅速发展的是2000年Science杂志上的两篇文章:  and  (Locally Linear Embedding)。

1. 流形学习的基本概念

那流形学习是什莫呢?为了好懂,我尽可能应用少的数学概念来解释这个东西。所谓流形(manifold)就是一般的几何对象的总称。比如人,有中国人、美国人等等;流形就包括各种维数的曲线曲面等。和一般的降维分析一样,流形学习把一组在高维空间中的数据在低维空间中重新表示。和以往方法不同的是,在流形学习中有一个假设,就是所处理的数据采样于一个潜在的流形上,或是说对于这组数据存在一个潜在的流形。 对于不同的方法,对于流形性质的要求各不相同,这也就产生了在流形假设下的各种不同性质的假设,比如在Laplacian Eigenmaps中要假设这个流形是紧致黎曼流形等。对于描述流形上的点,我们要用坐标,而流形上本身是没有坐标的,所以为了表示流形上的点,必须把流形放入外围空间(ambient space)中,那末流形上的点就可以用外围空间的坐标来表示。比如R^3中的球面是个2维的曲面,因为球面上只有两个自由度,但是球面上的点一般是用外围R^3空间中的坐标表示的,所以我们看到的R^3中球面上的点有3个数来表示的。当然球面还有柱坐标球坐标等表示。对于R^3中的球面来说,那末流形学习可以粗略的概括为给出R^3中的表示,在保持球面上点某些几何性质的条件下,找出找到一组对应的内蕴坐标(intrinsic coordinate)表示,显然这个表示应该是两维的,因为球面的维数是两维的。这个过程也叫参数化(parameterization)。直观上来说,就是把这个球面尽量好的展开在通过原点的平面上。在PAMI中,这样的低维表示也叫内蕴特征(intrinsic feature)。一般外围空间的维数也叫观察维数,其表示也叫自然坐标(外围空间是欧式空间)表示,在统计中一般叫observation。

了解了流形学习的这个基础,那末流形学习中的一些是非也就很自然了,这个下面穿插来说。由此,如果你想学好流形学习里的方法,你至少要了解一些微分流形和黎曼几何的基本知识。

阅读全文…

zz:流形学习1

2010年5月31日 3 条评论

完全不懂的领域。转过来,同好们讨论一下。来源

总觉得即使是“浅谈”两个字,还是让这个标题有些过大了,更何况我自己也才刚刚接触这么一个领域。不过懒得想其他标题了,想起来要扯一下这个话题,也是因为和朋友聊起我自己最近在做的方向。 Learning 或者仅仅 本身通常就听起来颇有些深奥的感觉,不过如果并不是想要进行严格的理论推导的话,也可以从许多直观的例子得到一些感性的认识,正好我也就借这个机会来简单地谈一下这个话题吧,或者说至少是我到目前为止对这它的认识。

阅读全文…

Google Prediction API

2010年5月29日 没有评论

Diagram showing French language prediction

这个好玩啊。google开放了可以让用户使用google的有监督学习算法(不单是算法,而且是直接在google的服务器上帮你跑)的API。

The Prediction API enables access to Google’s algorithms to analyze your historic data and predict likely future outcomes. Upload your data to Google Storage for Developers, then use the Prediction API to make real-time decisions in your applications. The Prediction API implements supervised learning algorithms as a RESTful web service(这是什么?不懂啊。。) to let you leverage patterns in your data, providing more relevant information to your users. Run your predictions on Google’s infrastructure and scale effortlessly as your data grows in size and complexity.

看起来是个黑盒子。开发者只用把数据提交到Google Storage for Developers,然后通过Google App Engine, Apps Script (Google Spreadsheets), web & desktop apps, and command line来调用这个prediction api,google会自动选择合适的算法来解决你的问题。

google建议可以用做一下几个用途,主要是从网站开发者的角度出发的。

  • Customer sentiment analysis
  • Product recommendations & upsell opportunities
  • Message routing decisions
  • Diagnostics
  • Document and email classification
  • Suspicious activity identification
  • Churn analysis(这是什么??)

貌似很不错啊,正适合做混搭(mashup).。

Gradient Shop

2010年5月29日 没有评论

一个开源库,正如其名,主要用来做梯度域上的图像处理的,比如说著名的fattal的在梯度域的tonemapping算法

这个库还在siggraph 2010上发了篇文章,见这里:http://grail.cs.washington.edu/projects/gradientshop/demos/gs_paper_TechReport_2008.pdf

所谓的gradient manipulation就是把图像分解成两张梯度图像Gx Gy,然后对这两个梯度图像做上滤波,拷贝等等操作,然后再从梯度图像重建出灰度图像。这一步是通过解一个泊松方程完成。这里有个很好的tutorial,来自iccv2007,推荐阅读。

下面贴几个Gradient Shop的处理结果。

阅读全文…

SLAM和MonoSLAM

2010年5月28日 12 条评论

MonoSLAM的概念来自于SLAM(wiki),是Robotics中的一种定位算法,全称是Simultaneous Localization and Mapping。

让机器人知道自己在那里(Localization),可以用GPS,但是误差有点大(5米左右?),而且还必须在室外。怎么才能让机器人在室内,或者更精确地知道自己的位置呢?SLAM就是一种方法。

基本的想法是,如果我是一个机器人,我知道两个定点1:(x1,y1)和定点2:(x2,y2),我现在可以看见定点1,测量一下,离它5米,把头向右转过30度角后,可以看见离定点2,测量一下,离它10米。然后解一个三角形,我就知道自己在那里了(Localization),位置准确度和测量精度有关(转角,距离),通常可以控制在很小。

但是问题又来了,每次我走几步,就得回头看看定点1和定点2,才知道自己在哪里。这一步三回头的走法,真是一件非常二的事情。于是聪明勤劳勇敢的博士生们想出来一个方法,在第一步的时候,一旦我知道自己在哪里,我就添加几个定点:定点3,定点4,定点5……。因为知道自己的坐标,我可以测量出这些新定点离我多远,加上自己的坐标,就知道这些定点在哪里(Mapping)。以后的定位(Localization)就可以用这些新定点。多了这些定点后,以后再走路,哇身边都是定点,腰不酸腿不疼,知道自己在哪里了。

所以SLAM就是指,同时(Simultaneous)知道自己的位置(Localization)和(And…) 新的定点的位置((feature) Mapping)。因为不管是测量距离,还是计算自己的转角,或记录行走的距离(利用Odometer)都会有noise,而直接计算SLAM,noise会叠加。所以一般SLAM要有一个Kalman Filter的过程。ICRA 10的一篇文章就讨论了为什么需要Filter. (ICRA 10: Why Filter?) .如果对SLAM还有兴趣,可以看看这个Oxford的Summer School

而MonoSLAM,是Andrew Davison提出来的利用一个摄像头来做SLAM的方法,也叫Real-Time Structure From Motion。在这里,定点变成了visual feature,测量定点的位置转变为match feature, then triangulate. 一个2004年的demo 。当摄像头在空间里忘乎所以地移动时,MonoSLAM都可以利用feature matching,知道摄像头的位置,和那些feature的位置。demo中的右图的黄线,是camera的trajectory。而椭圆表示对于新加的feature的不确定性。paper

可以看到在demo中,虽然知道摄像头的位置,但是mapping的feature很少很稀疏,这样不好不强大。经过了6年,随着CPU,GPU越来越可怕,人民生活越来越幸福,Andrew Davison这个组终于在CVPR 10搞出了dense live :利用GPU计算PTAM,然后Mesh成Surfeace。请看demo。有点长,请耐心,最后的小车的激情一跃很精彩。project page

SLAM和MonoSLAM在网上都有很多现成的code。像MRPT (跨平台),Andrew Davison的SceneLib (Linux),还有C#版本的。

公司介绍11: luxand

2010年5月27日 2 条评论

又一个提供人脸检测,识别,,人像美化等等API的公司,成立于2005年。

下面是官方介绍。

, Inc. is a private hi-tech company formed in 2005. research activities began with Artificial Intelligence and biometric identification technologies, allowing the company to develop a complete set of tools and libraries to perform fully automatic recognition of human faces and facial features. Today, the company provides a broad range of facial feature recognition solutions to online entertainment industry. technologies are used at online entertainment portals, chat rooms and movie Web sites around the globe.

感觉没有这个公司没有太大特色(那还介绍什么啊。。。真是纠结),这里是产品介绍,有人脸检测,美化,剪切,合成,等等(感觉人脸美化的性能看起来还不错)。有几个网站用了luxand的产品,比如:

http://www.pictreat.com/ , 就是把人像美化做成了网站应用,如下图:

还有一个模拟衰老()的网站(那个变态会想看自己老的样子啊,估计也就是做做恶作剧,博人一笑吧):

http://www.in20years.com/

官方网站应用程序及SDK下载媒体报道

BarToo:开源条形码识别

2010年5月27日 2 条评论

来自ETHZ,这总该是有质量保证的吧。

目前只能识别条形码,支持EAN-13,(什么是EAN-13)QR码是没有滴。。看起来效果很好啊。下面这些都能搞定。

目前提供两个版本J2ME和symbian的c++版本。前者是基于静态图像的,后者是基于视频的。

请到主页围观。

online random forest

2010年5月26日 44 条评论

一直忽悠cvchina,心有歉意。第一次发文,简单写点online learning的东西。

传统的SVM和adaboost都是batch mode learning. 所谓的batch mode learning, 简单说,就是所有的训练数据都是available的(或则说所有训练数据都已经在内存中)。这种方法主要有2个缺点:

1)  有时候数据量太大,在内存中放不下,处理起来不方便

2)  由于应用环境限制,有时候无法在训练之前得到所有训练数据

而Online learning, 他的数据是come in sequence,也就是说traning sample 是一个一个来,或则是几个几个来,然后classifer 根据新来的samples进行更新。Online learning是比较困难的,主要原因是你无法知道将来的训练数据是如何的。显然adaboost和svm是行不通的。最近几年也有一些人做online learning的研究,主要方法还是集中在online boosting这一块。推荐2篇不错的文章:

1)  online adaboost [1], 并把他用在object tracking等方面。这篇文章发表于CVPR2006引用率蛮高。这几年的cvpr上的几篇做tracking的文章以这个idea为基础。tracking的方法是用最近比较流行的tracking-by-detection的方法。简答的说就是在tracking的时候,observation model这一块是用一个在线训练的分类器。tracking的过程如下图所示(图中还有一步是用跟踪的结果作为训练器的新的输入):

这篇文章online 训练的时候,用tracking 的结果作为online classifier的positive samples。显然这种数据是有噪声的,最后tracking会drift掉。而且需要指出的是,这种方法没有严格证明,只是模仿batch mode adaboost. 我把这个算法用在uci的训练数据上,效果不是很好。作者的主页是:http://www.vision.ee.ethz.ch/~hegrabne/. 这个是他用online learning 做tracking的项目主页:http://www.vision.ee.ethz.ch/boostingTrackers/。 有现成代码和demo。

2)  去年的一篇论文是关于online random forest[2]。网上有现成的代码。我跑了一下,挺牛逼的,效果没比offline mode差不多。如果你需要做online learning的话十分推荐。

[1].On-line Boosting and Vision. 06CVPR.

[2]. . 09 workshop on online .

PS:code的原始链接失效了,我传了一份到everbox。下载链接
如果不能下载,请通过该链接注册后下载。

 

 

工业相机传输接口介绍

2010年5月25日 1 条评论
几种工业相机数据传输接口介绍,包括camera link, , , , Vision, Network。很有用的信息。全文转过来收藏。来源在此

公司介绍10:Face.com

2010年5月25日 5 条评论

Face.com - is that you?

这是一个以色列的公司,专做人脸识别。不久前刚刚开放了API,这意味这你可以直接通过简单的API调用,使用Face.com的先进人脸识别技术。快去申请API key吧。

这里有几个用face.com提供的API做的网络应用。

阅读全文…