Digest on the book of ‘Facebook Effect’

周末下午,读完了《Facebook Effect》,一本讲述Facebook如何由Harvard宿舍几个20岁的年轻人开发的校内花名册的网站,一步步的成长为如今的社交巨头的书。短短七年时间,Facebook由常春藤高校,扩展到大学校园,然后到高中群体,进一步扩展到全球大部分地区的成年人,成为了如今拥有7.5亿注册用户,而且用户停留时间超过google的互联网巨头,其创始人兼CEO,如今27岁的马科-扎克伯格亦成为最年轻的亿万富翁。这样的发展无疑是硅谷的一个传奇,该书通过采访扎克伯格以及众多在Facebook的发展历程中产生了举足轻重作用的人,如Peter Thiel,Marc Anderson,Don Grauham 等等,以详尽的视角再现了这个社交帝国的成长历程,读来收益匪浅。

关于如今的互联网创业,有了一下一些启示:

1. 创业的时机非常重要

Facebook不是第一个提出社交网络概念的公司,之前的六维网就基于人际之间的六度分离理论创建了类似的公司,但由于当时的互联网技术和PC等其他数码支持设备不够先进,导致公司的发展在短暂的轰动之后趋于平淡。比如,后来在facebook上产生轰动的照片tagging功能就由于当时数码摄像设备的缺乏在六维网上就很难起到太大的作用。所以说,真正的创新,不一定要史无前例,而是在最适合的时机,以最好的方式开发出了迎合了时代的需求的产品。

2.如何在公司的快速发展阶段保证公司的有效运转

   Facebook发展初期,由于注册人数的急剧上升,服务器经常出于超负荷状态。为了防止因服务器宕机导致的产品服务质量下降,Facebook采取了非常稳健的阶梯式发展策略:每隔一段时间,增加开放学校的许可请求,同时加紧升级服务器和数据中心等设施。然后在候选学校中调查,确保每次新增的开放学校都是waiting list上需求最迫切的学校,如此,facebook能确保每次跨上一个新的阶梯后能带来数量可观的用户增长预期。

3.如何处理风投VC或者其他投资资金的关系

随着用户的快速发展,维护整个网站运行的成本也将会飞速发展,加之由于扎克伯格对于用户体验的狂热执着,任何影响用户体验的方式,不管有多少的盈利能力,都是和其长期目标相违背的。因此,如何寻找有效的资金支持成为了其面临的重要问题。但是由于其早期总裁CEO曾有被VC夺取公司控制权的经历,对于VC,Faceboo一一直特别谨慎。为此Sean Parker为扎克伯格设计的董事会结构确保了扎克伯格对于facebook的牢固控制不受来自VC的董事会成员的过分左右,从而使得扎克伯格能继续专注于公司的增长和产品的提升,而不会背负太多和公司长期愿景相违背的盈利压力。

 4.增长和盈利之间的平衡

如何在快速增长和盈利之间实现平衡,是任何一个快速发展中的公司所面临的重大问题。作为商业公司,盈利以维持其运转是必须的,但是在公司的快速发展阶段,主要侧重点仍然应该放在公司的核心价值,对于facebook这样的社交网络公司来说,那就是用户增长。因为社交网络有着很强的用户粘性,是一个很明显的winner-take-all的市场。假设你的朋友都在facebook上,你还会选择其他的网络服务么?

  5. 和用户产生良性的互动,即时迭代调整

在facebook的历程中,每次对网站架构的重大改进,都面临着很多忠实用户的反对, 以诚恳的态度和用户对话,成为了facebook最宝贵的危机公关经验。如news feeds的引进,使得用户感觉其隐私受到了莫大的侵害。于是,扎克伯格迅速的召开发布会,向用户解释其用意是符合facebook的长期发展目标,即使人们能以真实的身份更便捷的分享信息,从而使整个世界透明化。就像在一个小镇上,任何居民都能知道镇上其他居民发生的事。同时,facebook迅速开发出了一套有效的隐私控制功能,使得用户得以自由选择分享的权限。之后,news feeds为facebook带来了巨大的流量增加则是其公关策略的正面回馈。还有后来邀请用户设计不同语言的翻译版本和新的隐私保护条例等等都属于此类成功的例子。

6. 如何创造新的盈利模式:满足需求 vs 创造需求 

广告市场这个有着上千亿美元的诱人蛋糕,已经大有从传统媒体往在线载体转移的趋势。位于google右边栏的相关性广告每年为google带来数百亿的收入,那么对于手握几亿用户的真实信息,包括其朋友,喜好等等私人信息的facebook如何从中分一杯羹呢?Google的广告策略是基于用户的搜索关键字来找到相关的广告推荐,基本上是一种在用户确定了其需求后以海量的搜索计算资源在线推荐来满足其需求的广告投放策略;于此相反,facebook则是利用用户的真实身份和喜好来创造这种需求,以更加精准的方式来投放广告。因为,来自朋友的推荐比单纯由page rank算法的推荐更愿意让人相信。

7.平台称霸,渠道为王

单纯的依靠创造需求增加广告收入只是能成就一个盈利强劲的商业公司而已,而把facebook创造成一个互联网的信息平台则使得facebook成为新兴霸主。就像Microsoft的windows平台,苹果的itunes和app store平台,以及google的android和作为互联网信息的门户的搜索引等等都是平台称霸,渠道为王的典范。facebook当然也不落人后,通过和外在网站的链接和无处不在的like分享按钮,facebook变成了互联网上另一个信息中心,一个读google的搜索引擎绝对屏蔽的信息中心。这个中心拥有7亿用户和数万相互链接的外部网站,facebook的账户成了互联网的一个passport,大有一统互联网的态势。同时,通过开放一定的API,鼓励其他软件公司为其开发各式的app,就像后来的app store和android app一样,在大大的增强了facebook和广大互联网开发者联系的同时,巩固了其作为平台和中枢的重要地位,还能从中收取部分的提成。

当一个产品成为行业的平台时,它想不赚钱那都是困难的。

  最后一点,创业者一定要有一个远大的愿景,及你创业不是单纯了为了一家盈利的商业公司,一个可以让你做大后转手卖掉或者吸引vc一夜暴富的踏板,而应该是一件你坚信可以改变世界的伟大修行。微软的愿景是让每人的桌子上都有一台pc;google是让所有人都可以自由找到他想要的信息;facebook是让所有人可以更有效,更便捷的分享信息,使世界更透明!你的呢?

  Dream big! Do from small!

Advertisements
Posted in Technology and Entrepreneurship | Tagged , | Leave a comment

Digest on《Havard Happiness》 –1

Preface

    During my undergraduate years, one of my friends recommended me a book named ”How to be happier?” by Prof. Ben Tal-Shahar, Harvard University. The book provideded a brand new perspecitive towards our knowledge of well-being and happiness, from which I gained a lot a inspiration . Luckily enough, a few weeks ago, I came across the online open course presented by Prof. Tal-Shahar. After watching several lectures and combining with the materials from the book that I have read before, I tended to come up with some thoughts toward these abstract concepts, which indeed are intrinsically correlated with our lives. Therefore, I decided to write down those occationally shining sparks within our minds.

Chapter 1. Introduction of Positive Psychology and Happiness

  Currently popular self-help movement are always over promising and under delivering, while acdemic research are rigrous and systematic, yet sometimes too professional and not well received. On average, a journal artical is only read by 7 people.

  The goal of Positive Psychology is to build a bridge between academia and self-help movements, to deliver science that works.

 

   Some study tips to gain better understanding of happiness:

  •  Take active notes and engage in the material
  • Time-ins to introspect into your inner mind, cause silence and reflection can help to retain the memory and gain the deepest thoughts.

  

  Positive Psychology is descendented from humanistic psychology and psychoanalysis, related more to humanistic view, which focus on spirit and soul that assign more dignity and value to human, than behavoristic view which studies the response of human to outside simulation.  It’s more about kindness, goodness, and optimism, focus on health and salutogenesis (the origin of health).

 

5 essential elements of being happy:

  • Physically and mentally healthy
  • Loving social relationships
  • A self-concordant life goal
  • Grateful attitude to the take-for-granted, resillience to unavoidable negative emotions
  • External material conditions to cover basic needs, like food and shetlter 

  Happiness is more concerned with our state of mind, instead of the status of bank account. It’s diffcult to decide whether you are happy or not right now, but it’s possible your level of happiness increases gradually through the time. That’s why we are asking “how to become happier”.

    Concerned with cultural difference in pursuing happiness, we were focusing too much on difference, while ignoring the more similarity between them, there are much in common across cultures.

   Our brain is just like a container, when information is drawn from outside and filled in, the form of our brain decides the shape of the world we perceive. To different minds, the same information can have different interpretations, such interpretation is in fact a kind of transformation of our minds. So in order to change the perceived world, we need to reshape the form of our brain.

    The sole grows more by subtraction than addition. Chip away the limitations, and our potentials emerge.

    The biggest mistakes in the process of pursuing happiness is not asking the right questions, but always seeking the right answers.

    Charateristic of successful and happy people:

  • Deep faith in themselves
  • Always asking new questions, strong curiosity
Posted in Life Retrospect | Leave a comment

Online Reresourses for Pattern Recognition

Standard/Open databases for performance benchmarking of algorithms ans systems

–Face Recognition: http://www.face-rec.org/

– Yale Face Database: http://vision.ucsd.edu/~leekc/ExtYaleDatabase/

–Handwritten Digits: http://yann.lecun.com/exdb/mnist/
–Objects and Scenes: http://web.mit.edu/torralba/www/database.html

–Content-based Image Retrieval: http://www.cs.washington.edu/research/imagedatabase/

–Cross Language Image Retrieval: http://imageclef.org/
–UC Irvine Machine Learning Repository:http://archive.ics.uci.edu/ml/

Posted in Research Links | Leave a comment

Project-Lazy Snapping

1.     Introduction

“Lazy snapping” is an interactive image segmentation technique. It separates coarse and fine scale processing, making object specification and detailed adjustment easy. Moreover, Lazy Snapping provides instant visual feedback, snapping the cutout contour to the true object boundary efficiently despite the presence of ambiguous or low contrast edges. Instant feedback is made possible by a novel image segmentation algorithm which combines graph cut with pre-computed over-segmentation. In this project, we will implement this algorithm and evaluate its performance.

2.     Project Objective

Understand the graph cut algorithm as an efficient minimization tool.

Be able to segment the foreground of an image through Lazy Snapping technique.

In this project, we are provided with several example pictures each with some given foreground pixels (marked in red) and background pixels (marked in blue). Our program is required to compute the precise segmentation boundary of the foreground object.

3.    Algorithm and Implementation Details

In the Lazy Snapping paper, the image is initially segmented using a watershed algorithm. In my implementation, I’ve simplified this by merely downsampling the image using Matlab’s imresize function. After scaling down the image (I settled on a scale of 1/8), it is passed into the following graph cutting algorithm.

We use the max-flow min-cut algorithm, like in the previous graph cut project. However, the values plugged in are changed significantly. Ultimately, we are trying to solve the following minimization problem:

 

E(X)=\sum_{i\in V}E_1(x_i)+\lambda \sum_{(i,j)\in E}E_2(x_i,x_j)

In this project, we used the MATLAB wrapper of the GMEX graph cut library, and implement our algorithm by MATLAB.

Our algorithm is as follows:

1)      Extract the marked foreground and background pixels

2)      Cluster the foreground and background into several clusters by K-Mean algorithm

3)      Use a Gaussian model to fit every cluster, and build a Gaussian Mixture model to represent the foreground and background, respectively.

4)      Calculate the probability of the pixels belonging to foreground and background.

5)      Calculate the parameters of  data cost and smooth cost, which are ‘class’, ‘unary’,’pairwise’ and ‘labelcost’.

6)      Segment the graph using graph cut function

7)      [labels , E, Eafter] = GCMex(double(class’), single(unary), pairwise, single(labelcost),0)

CLASS: An 1xN vector which specifies the initial labels of each of the N nodes in the graph

UNARY: A CxN matrix specifying the potentials (data term) for each of the C possible classes at each of the N nodes.

PAIRWISE:: An NxN sparse matrix specifying the graph structure and cost

for each link between nodes in the graph.

LABELCOST:: A CxC matrix specifying the fixed label cost for the labels of each adjacent node in the graph.

EXPANSION:: A 0-1 flag which determines if the swap or expansion method is used to solve the minimization. 0 == swap, 1 == expansion. If omitted, defaults to swap.

8)      Segment the image according to the labels. Label  is 0 for the foreground and 1 for the background.

4.    Experiments

 

The following figures are the results of our implementation. For each example set, in the first column are the original images with corresponding stokes on them, in the second column are the results.

From the figures we could see that our algorithm works best for dog and dance and relatively worse for Van Gogh and Mona Lisa, while medium for the lady set, since for the first two sets, the difference between the foreground and background is relatively larger than the latter two.

In the dance, lady and Mona Lisa sets, the results of the first row are much better than the second row, since the first row has more strokes for both the foreground and background, than those of the second row, which as a consequence leading to a more accurate Gaussian mixture model to approximate the probability of the image pixels belonging to foreground and background.

In the dog set, the hair of a person at the upper right corner of the image is mistakenly segmented as the foreground, because it’s great similarity in color and texture with the dog region. It can also be observed in other sets that background regions that are similar to the foreground in color and texture are quite possible classified as foreground.

The performance on Mona Lisa and Van Gogh sets are much worse, since the great similarity between much of the background regions and the foreground, especially the lower part.

In conclusion, what really matter in the lazy snapping procedures is the size of the samples and the distinction of foreground in both color and textures. In order to get good  performance, we must make sure that our strokes are rich enough, inclusive of different color patches in foreground and background. For those images with low contrast between foreground and background, we need to draw more strokes.

Since the initial node weights are based on color, segmentation is very easy on subjects that are a very different color from the background, like the dog picture. It is also helpful when the fore- or background is a solid color. When there is a lot of discontinuous color, it means more lines will be needed to correctly segment the image.

In addition, in the MATLAB implementation, the pairwise matrix, denoting the graph structure of the image with corresponding link or edge costs, is an N by N sparse matrix, where N is the number of pixels in the images, usually thousands of thousands. The calculation of this matrix slows down the whole lazy snapping process, taking about two minutes on average for each segmentation task, which is far away from the real time segmentation proposed by Microsoft. 

5.    Conclusions and Possible Improvements

 In this project, we learnt how to segment a picture using lazy snapping, a very efficient and interesting technique. However, based on the implementation, I think there are several parts need to be improved.

Since our algorithm is sensitive to the color discontinuity, while the edge cost is based on the color difference. This leads to many noisy discontinuity and noise holes in the result. Therefore, in the future, we could add some spatial distance in the distance vector only based on color, because the further a pixel is to a marked foreground or background, the less likely they belong to the same group. By combining the color and space distance, we could get better results.

The segmentation in our algorithm is coarse, so in order to get smooth boundary, we may do some edge editing after lazy snapping.

As for the speed, we should come up with some more efficient ways to calculate that huge sparse matrix, or simply re-implement the whole algorithm with C\C++, directly calling the library functions rather than the MATLAB wrappers.

 



 

Posted in My research | 6 Comments

Matrix decomposition and Compressive sensing

Here is a nice portal for the matrix decomposition problem: http://perception.csl.uiuc.edu/matrix-rank/home.html

In particular, if you click on the “Sample Code” link, you will see Matlab implementation of 4 algorithms that do the decomposition. As you can see, all you have to do is to pass in the data matrix, and a weighting factor. These functions will return you the low rank and sparse matrices. We can discuss more about the weighting factor when we meet up next time.

As part of your education in optimization, you can refer to Boyd’s lecture, slides and pdf book on optimization. These resources are useful for you to learn CVX, as a handy tool for solving small optimization problems.

http://www.stanford.edu/class/ee364a/

As part of your background reading on compressive sensing, the following papers are nice, gentle introductions:

http://dsp.rice.edu/files/cs/baraniukCSlecture07.pdf

http://dsp.rice.edu/files/cs/CSintro.pdf

Even though we are looking at rank minimization, there are many shared concepts with L1 minimization. You can get a good intuition of rank minimization by first looking at L1 minimization.

Posted in Research Links | 1 Comment

Resourse links

Video talks on mathematical background & general vision topics

 

Stephen Boyd, Lieven Vandenberghe: Convex Optimization, Cambridge University Press, Cambridge, 2004.  (you can view the video lecture from YouTube)

 

If you need some background for graph cut and level set, the following website may be of help

http://www.cs.washington.edu/education/courses/577/04sp/contents.html#BP containing videos of talks by:

1.        R. Zabih : A Selective Overview of Graph Cut Energy Minimization Algorithms

2.        G Sapiro; Level Sets and Partial Differential Equations in Image Sciences

 

If you want to know more about BP (belief propagation):

  1. Chapter 8 Graphical Models from Bishop’s Book: Machine Learning and Pattern Recognition http://research.microsoft.com/en-us/um/people/cmbishop/PRML/Bishop-PRML-sample.pdf (more detailed coverage of the basics)
  2. Understanding Belief Propagation and its. Generalizations. Jonathan S. Yedidia, William T. Freeman, and Yair Weiss. MERL TR-2001-22. www.merl.com/papers/docs/TR2001-22.pdf
  3. Efficient belief propagation for higher-order cliques using linear constraint nodes, CVIU(112), No. 1, October 2008, pp. 39-54.

 

If you want to know more about spectral clustering (upon which the Normalized-Cut technique is based):

  1. A tutorial on spectral clustering, Statistics and Computing. Volume 17, Issue 4 (December 2007). Pages: 395 – 416

 

Finally, this website at Mathematical Sciences Research Institute hosts many video talks by experts in the field of computer vision:

http://www.msri.org/calendar/workshops/WorkshopInfo/298/show_workshop

http://www.msri.org/calendar/workshops/WorkshopInfo/270/show_workshop

http://www.msri.org/calendar/workshops/WorkshopInfo/273/show_workshop

 

Maths & SoC Seminars

http://ww1.math.nus.edu.sg/seminars.aspx 

http://www.comp.nus.edu.sg/cs/csseminar.html

 

Resources

 

Gary Bradski, Adrian Kaehler. Learning OpenCV: Computer Vision with the OpenCV Library. 2008.

This book would be most useful to someone who already has a fundamental understanding of computer vision and image processing and wants to see how the open source OpenCV will make their programming tasks easier.

 

OpenCV Library (General purpose and opensource, currently actively maintained and provides C, C++, Python, and Octave interfaces)

Piotr’s Image and Video Toolbox for Matlab

Peter’s Matlab Functions for Computer Vision

 

There is matlab code available for computing optical flow:

http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=17500&objectType=File

 

It is based on the work of Weickert’s group: High Accuracy Optical Flow Estimation Based on a Theory for Warping 

Thomas Brox, Andres Bruhn, Nils Papenberg, and Joachim Weickert

Which is essentially the same as the IJCV2005 paper (When Lucas & Kanade meets Horn &Schunck)

 

The optical flow codes from MIT is also available:

Peter Sand, Seth Teller, “Particle Video: Long-Range Motion Estimation using Point Trajectories,” cvpr, pp. 2195-2202, 2006

http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=17500&objectType=File

 

http://phototour.cs.washington.edu/bundler/

Bundler takes a set of images, image features, and image matches as input, and produces a 3D reconstruction of camera and (sparse) scene geometry as output. The system reconstructs the scene incrementally, a few images at a time, using a modified version of the Sparse Bundle Adjustment package of Lourakis and Argyros as the underlying optimization engine. Bundler has been successfully run on many Internet photo collections, as well as more structured collections.

 

Here are the links that provide numerous motion sequences, some of which have ground truth.

 

http://vasc.ri.cmu.edu/idb/html/motion/index.html

http://www.robots.ox.ac.uk/~vgg/data.html

http://www-cvr.ai.uiuc.edu/ponce_grp/data/

http://vis-www.cs.umass.edu/~vislib/Motion/

http://research.microsoft.com/en-us/um/people/zhang/Calib/

 

CODES

 

For region segmentation:

http://www.cis.upenn.edu/~jshi/software/ Normalized cut using intervening contours (earliest version as well as a multiscale CVPR2005 version)

http://www.cs.berkeley.edu/~fowlkes/BSE/BSE-1.2/ & http://www.cs.berkeley.edu/~fowlkes/BSE/BSE-1.2/util/  codes for PAMI 2004 paper: D. Martin, C. Fowlkes, J. Malik. “Learning to Detect Natural Image Boundaries Using Local Brightness, Color and Texture Cues”, TPAMI 26 (5) p.530-549

http://www.eecs.berkeley.edu/Research/Projects/CS/vision/stellayu/code.html various normalized codes from the same group (including constrained ncut)

http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/segbench/ edge detection based on brightness/color/texture .

 

http://www.caip.rutgers.edu/riul/research/code.html mean-shift segmentation

 

For C/C++ codes on sparse bundle adjustment, refer to http://www.ics.forth.gr/~lourakis/sba/ by Manolis Lourakis and Antonis Argyros

 

Graph cut optimization: http://www.csd.uwo.ca/faculty/olga/code.html

 

Various Computer vision codes:

http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/

Andrew Zisserman’s MATLAB Functions for Multiple View Geometry

Jean-Yves Bouguet’s MATLAB Calibration Software

Peter Corke’s Machine Vision Toolbox he also has a well regarded Robotics Toolbox.

Libor Masek’s Iris Recognition Code

Epipolar Geometry Toolbox by Gian Luca Mariottini and Domenico Prattichizzo.

MathWorks’ links to sites containing MATLAB vision functions

 

Feature Extraction

  • VLFeat (SIFT, MSER, plus fast kmeans, hierarchical kmeans … )
  • SIFT Demo by David Lowe (closed-source)
  • SURF (Speeded Up Robust Features, original implementation, closed-source)
  • OpenSURF (An opensource implementation of SURF)

Machine Learning Algorithms

  • LIBSVM (A Library for Support Vector Machines)
  • SVMlight (Another popular implementation of SVM)
  • shogun (A large-scale ML toolbox, specialized in SVM. It provides unified interface for several popular SVM implementations, and features supports for Multiple Kernel Learning. )

Sparse Coding / Representation

  • Sparse modeling software package (General-purpose package for various sparsity-related problems, include Lasso, elastic-net, and sparse dictionary learning. Closed-source)

 

 

Posted in Research Links | Leave a comment

Some theoretic links

Dedicated research websites of interest

Events/Workshops/Tutorials of interest

Wonderful reference books that are online

Posted in Research Links | Leave a comment