CVPR 2012 酱油记

没有文章,老板还是很nice的给了一次去参加CVPR的机会。虽然只是去酱油一把,但是可以到CV三会之一的CVPR看看,还是很高兴的。 提前一天到了罗德岛,这里貌似是美国最小的一个州。风景不错,但是也不觉得有什么很特别的地方。按照会议进程,头两天是Workshop和Tutorial。Tutorial是集中时间讲一个话题,比如这次有Deep Learning, Gaussian Process这种,这里列出了所有的Tutorial,有很多很吸引人的题目。Workshop是做一个小领域的人们讨论这个方向的文章。一趟下来感觉,除了很偏工程的Tutorial,没有事先看看相关的东西就去听还是比较吃力的。相对来说,Workshop比较容易懂。主要是因为Workshop里的文章多,总有一篇适合你… 两天的Workshop和Tutorial覆盖了各个方向,虽然还没有开始主会,已经感觉是码农进了大观园。感叹各种听不懂… 这两天比较有印象的是Perceptual Organization和Biometric Workshop的几篇文章和Vision Industry & Entrepreneur Workshop的两场演讲,Boaz Super列了很多最近的利用CV技术创业的公司,然后用一大堆数据告诉大家,CV是很有前途地。虽然也听了两次Deep Learning相关的Tutorial,唯一有印象的就是Kai Yu的Sparse Coding那场,他的SC相关的文章回头还得找出来看看。 三天主会还是比较紧的。主会时间是早上8点半开始第一场Posters,一天两场Oral,三场Posters,如果Poster很相关的话,基本上一整天都在那些海报前面走来走去。 我感兴趣的Image Classification相关的文章主要是在第二天和第三天。收获确实不小,看到了很多不熟悉的名词,还有些之前没想到的东西。不过也可能是因为自己比较土鳖,看啥都新鲜…可以和作者讨论是比较理想的状态,而且也很有意思,只是文章读得还是少了,能去讨论的情况不多。今年有好几篇讨论Fine-Grained Classification的文章,做这个的可能会越来越多吧。还有就是知道了Transfer Learning这个方向,和Classification也很相关的。训练样本和测试样本不是同一个环境下得到的,这个本身就是比较实际的问题。Object Recognition这块,还是很多文章在讨论BoW之上的改进,有几篇都是在讨论如何加入空间信息,不知道什么时候会有完全不一样的一套模型出来。然后比较有印象的就是各种Simultaneously,比如把分割,分类,标注等等在一个框架下一块儿做完。Oral里面对于Transfer Learning的两篇印象较深,有一篇是Boqing师兄的,讲得很清楚。 这几天,除了看各种文章,就是看到了各位大牛小牛,认识了一些朋友,不过因为没有文章,也不是很容易讨论起来…还有就是遇到了很多科大的师兄,还有同一级的同学,我科的各位一如既往的给力而且Nice,相当高兴。 有一天吃晚饭的时候因为没有找到地方,和三个外国朋友一桌。有一位是开公司的,不住的抱怨现在CVPR里能用的东西太少,算法太慢。想来也是,现在在做的分类算法就根本不能放在机器人上去用。不过技术总是厚积薄发的,总是很多人做了很久,然后忽然一个突破。虽然取得突破的方法可能看起来全新,之前做的那么多东西都没用上,但是前面的积累想来也是必要的吧。XD 2012.6.20 在回程的大巴上

PCA的实现

PCA,全称是Principal component analysis,中文叫做主成分分析,是一种常用的数据处理手段。 直观的说,PCA是一种降维的手法。比如现在我们有1000个数据点,每个数据点是一个128维的向量,存储上可以是一个1000×128维的数组。经过PCA处理,我们仍然得到1000个数据点,但是每个数据点是一个小于128维的向量,比如我们用PCA将128维的数据降到64维。 PCA可以保证,在降维之后,数据表示的信息损失最小。 “损失最小”具体怎么定义? 还是以1000个128维的点为例,这1000个点,也就是1000个向量在一个128维的空间中。从在任何一维,也就是一个方向上来看,如果在这个方向上,各个向量大小差异很大,那么这个方向是很重要的。 也就是,反过来看,如果在某个方向上,每一个向量大小都很接近,那么如果不考虑这个方向,也就是去掉这一维的数据,对我们分析这1000个点并没有多大的影响。所以,“损失最小”对应着“差异最小”。 那么具体怎么做呢? 这里是两种常用的方法: SVD分解和EIG分解(特征值分解)。 共同点在于先从数据得到一个矩阵M,M的特征值个数对应着数据的维度,特征值越大那么对应的这一维越重要,也就是“差异越大”。 SVD分解, matlab sub_input_data = (input_data – repmat(mean(input_data),count,1))/sqrt(count-1); [U,S,V] = svd(sub_input_data); % First out_dim columns as PCA bases pcaV = V(:,1:out_dim); output_data = input_data * pcaV; EIG分解, matlab mean_input_data = mean(input_data); sub_input_data = input_data – repmat(mean_input_data, count,1); mean_mat = sub_input_data’ * sub_input_data ./ (count […]