Saturday, October 15, 2011

Why I would buy an iPhone 4S (Or any Apple products)

As a gadget lover, I started using smartphone since the days of Windows Mobile with a Sony Ericcson XPERIA X1. It was certainly a very capable smartphone and it is largely usable (well, of course it does). Needless to say, I was utterly blown away when I first gave Android a try. The fact that you can do away with desktop sync, the way you can do away with worrying about needing to copy your old contacts information from old phone to new phone manually is simply magnificent. At that time, I thought no other phones came close, not even the mighty iPhone.


However, one might ask, why is Android the way it is? People who follows the history of iPhone and Android will tell you that they are both introduced on the same year (2007). Well, to be precise, iPhone is first introduced on January 2007, while Android is announced on the same year somewhere in November. If you wanted to know how Android look at that time (2007), this link would shed some light. Now, you would say it doesn't look much like anything like the Android we are used to nowadays. But that was how Android look at that time.


Naturally, the question of whether Android copied iOS or the reverse is debatable. The reality is that both copies stuff from one another. An example of iPhone (as in iOS) copies Android would be the notification center in iOS 5 (the favorite example by Android loyalist). However somewhere in the year 2008/9, Android makes a radical change, abandoning most of the UI before that and fully embrace touch screen, well, just like iOS. By now, I guess it is fair to say that Android borrows quite a lot of concept from iOS. Without iOS, Android *might* have looked different from what it is today.


That is not to say that Android is just like iOS. In fact, Android quite differ from iOS in many ways. For one, the Android provides more flexibility (thus, more fragmented), which many argued that iOS is basically a walled garden system (for better or worse). Apple did this to control the quality of the apps and prevent vendor/telcos from fragmenting the platform by implementing their own UI spin (think HTC Sense UI, etc). Without going into the whole Android vs iOS debate, I guess most readers would recognize their differences and came to the conclusion that comparing them is like comparing Apples and Oranges (Even though both of them are basically fruits and they are very good for you).


However, I have a confession to made. I have respect for people who chooses Android. After all, I did it myself by going with Samsung Galaxy S. The problem is that there is a faction of die-hard Android loyalist that chooses Android because it made them look geekier/nerdier or the fact that it might make them appear smarter than the rest of iPhone-rs (which is most of the people you saw on the streets). While it might be true that they are sort of smarter (or financially poorer, depending on how you look), I believe there is a faction of people who chooses Apple because they appreciate it for what it is. It may be that they are a designer themselves and therefore have better taste, or they knows how to appreciate good UI/UX, or it may be that they just wanted a really good phone. This is something Android loyalist just can't understand. They think that it only attributes to Steve Jobs's reality distortion field or the fact that he's a really good sales man (Even though, that is undoubtedly true).


Personally, as a designer/coder, I have always thought that I had some good design sense. I can appreciate good UI/UX (User eXperience) when I see one. And I strive to design good UI/UX as much as I can. From my experience with using Android and iOS, iOS has slightly better overall UX than Android. Even though both are better than Windows Mobile (I reserved my judgement on Windows Phone 7 until I have used it myself). As such, I certainly can envision myself using both iPhone and Android - most people nowadays carry 2 phones anyway.


In conclusion, there will always be people buying an Apple products just because they wanted to look cool or they simply wanted to brag about it (read: people on Facebook who tells everyone about his cool new phone). However, I have no more respect for people who wanted an Android to look smarter. In the end, the smartest people buys and use whichever phones/gadgets that does what they wanted. There is no need to compare whose balls are bigger - they are all balls.


TL/DR: It's just a fucking phone. Get over it.

Sunday, August 14, 2011

Table of results for COIL-100 dataset

This is a table documenting some of the best results some paper obtained in COIL-100 dataset.
  1. Nearest Prime Simplicial Complex for Object Recognition (2011)
    Cited 0 times. 97.19%
  2. Multiple-View Object Recognition in Smart Camera Networks (2011)
    Cited 0 times. 95%
  3. Deep Learning from Temporal Coherence in Video (2009)
    Cited 17 times. 92.5%

Friday, July 15, 2011

The Internet is its biggest enemy

We lived in a new, unprecedented era. An era where Internet is considered by some the most powerful weapon against an oppressive regime. Like Wael Ghonim said, "If you want to free a society, just give them Internet access". If you wanted examples of this, you need only to look at what happened in Egypt, Libya and Syria. But why, you ask. After all, the Internet is merely a communication tool. We've had communication tools for centuries. True. However, you have to remember that communication in the olden days are slow and unreliable. Today we communicate almost at the speed of light and while traditional media like newspaper, magazines and news program can be censored, on the Internet, the more you try to censor something, the more it could backfire, provided the situation is right. This phenomenon is otherwise known as the "streisand effect".


Today, many scandals are being exposed because of Internet. And as companies like Sony, Apple and Microsoft knows all too well, once a bad story turns up on the Internet, there is no going back. You can't take something down on the Internet. Took down one web page and a thousand sprung up. Once an image is tainted, it is really difficult to repair. Of course, this is mostly good for consumers.


In this day and age, it is getting harder to keep secrets. Especially so for secrets that has a profound impact for citizens of a country or consumers. The rise of whistleblower sites like wikileaks would not have been possible without the Internet and an anonymous communication tool such as Tor that allows you to surf the Internet anonymously. Additionally tool like Tor disable an oppressive regime's ability to censor anything on the Internet, not unless the Internet is shut down completely. Even so, the U.S. is working on what they call "Internet in a box" as a way to counter that.


Hence, by now, you must be tempted to think that this is a great era. A great era for freedom. A great era for society that wants to be just and fair for all. However, as great and wonderful the Internet is, it turns out to be its own biggest enemy. Because of availability of anonymity on the Internet, the Internet is filled with rumors, lies and propaganda propagated by irresponsible parties. It is becoming more and more difficult to believe something you read on the Internet and harder still to separate the truths from the half-truths. It is for this reason that most people (older generation perhaps) these days tend to believe what they read on newspaper and/or TV rather than something being forwarded by E-mail, for example.


To give an example, if a particular news that negatively portrays the leader of a particular country has surfaced on the Internet, even if it's the truth, could be rendered (mostly) useless if the people was made to believe that the it was artificially made up by the opposition with ill intentions. The situation is made more futile if no one claims responsibility for spreading the news in the first place. When there is anonymity, there would be no accountability. And the truth is there are people out there that would do all sorts of crazy/illegal things if total anonymity is guaranteed - that is, he/she would not be able to be held accountable, for whatever he/she did. However, in this case, anonymity is the reason the news surfaced at all, because if you know something that could potentially threaten some very powerful people, it is very likely that you would preferred to be anonymous for obvious reasons.


Henceforth we are faced with a difficult situation: we can keep the Internet anonymous and lose accountability, or destroy anonymity of the Internet and lose freedom on the Internet. It would seems that we just can't have it all.

Sunday, February 27, 2011

Table of results for CIFAR-10 dataset

This is a table documenting some of the best results some paper obtained in CIFAR-10 dataset.
  1. Selecting Receptive Fields in Deep Networks (NIPS 2011)
    Cited 0 times. 82%
  2. The Importance of Encoding Versus Training with Sparse Coding and Vector Quantization (ICML 2011)
    Cited 1 time. 81.5%
  3. High-Performance Neural Networks for Visual Object Classification (2011)
    Cited 3 times. 80.49%
  4. Object Recognition with Hierarchical Kernel Descriptors (CVPR 2011)
    Cited 2 times. 80%
  5. An Analysis of Single-Layer Networks in Unsupervised Feature Learning (NIPS Workshop 2010)
    Cited 18 times. 79.6%
    Additional info: K-means (Triangle, 4000 features)
    Homepage: Link
  6. Convolutional Deep Belief Networks on CIFAR-10 (2010)
    Cited 7 times. 78.9%
    Additional info: 2 layers
  7. Semiparametric Latent Variable Models for Guided Representation (2011)
    Cited 0 times. 77.9%
  8. Kernel Descriptors for Visual Recognition (NIPS 2010)
    Cited 6 times. 76%
    Additional info: KDES-A
  9. Image Descriptor Learning Using Deep Networks (2010)
    Cited 0 times. 75.18%
  10. Improved Local Coordinate Coding using Local Tangents (ICML 2010)
    Cited 8 times. 74.5%
    Additional info: Linear SVM with improved LCC
  11. Tiled convolutional neural networks (NIPS 2010)
    Cited 4 times. 73.1%
    Additional info: Deep Tiled CNNs (s=4, with finetuning)
  12. Semiparametric Latent Variable Models for Guided Representation (2011)
    Cited 0 times. 72.28%
    Additional info: Alpha = 0.01
  13. Modelling Pixel Means and Covariances Using Factorized Third-Order Boltzmann Machines (CVPR 2010)
    Cited 14 times. 71%
    Additional info: mcRBM-DBN (11025-8192-8192), 3 layers, PCA’d images
  14. On Autoencoders and Score Matching for Energy Based Models (ICML 2011)
    Cited 0 times. 65.5%
  15. Factored 3-Way Restricted Boltzmann Machines For Modeling Natural Images (JMLR 2010)
    Cited 14 times. 65.3%
    Additional info: 4,096 3-Way, 3 layer, ZCA’d images
  16. Learning invariant features through local space contraction (2011)
    Cited 0 times. 52.14%

Wednesday, January 05, 2011

My predictions for the year 2011

Well, everyone is posting their predictions for 2011. So for the first time, why not I do one just for the sake of it.


  1. 2011 will be the year certain U.S. companies (Facebook?) enters China. Or if not China, maybe some other country in Asia (Japan?). (Sorry, my vision is cloudy for this one)
  2. 2011 will be the year Google do social.
  3. 2011 will be a bad year for many countries. Many European countries will be entering (or show signs of) economic recession.
  4. 2011 will be the year of tablets. Many new models will be launched, as this is the year of Android's new tablet-ready OS Honeycomb. Thus, Android will be gaining ground on the tablet market share, but will not displace iPad as the king of Tablet.
  5. 2011 will be the year of the whistle blower. More new alternatives to wikileaks will be launched and make the news, including new shocking leaks.
  6. 2011 will be year of peace. There will not be war but more peace talks. There will probably be peace talk: China-US and South Korea-North Korea.
So, to sum it up, keywords to watch out for: China, Social, Tablet, Recession, Wikileaks, Peace.

Friday, July 23, 2010

How to set up OpenCV version 2.2

If you have been using OpenCV all the time by getting the code straight out of the SVN, you may or may not know that it has reach version 2.2 recently. There has been some big changes to version 2.2 and most of your code is likely won't be able to compile. But, fret not, as I'm going to show you how to get back up again.

First of all, if you used to be doing this:
#include <cv.h>
#include <highgui.h>

just change it to:
#include <opencv2/opencv.hpp>


Secondly, if you used to link against:
cv.lib cxcore.lib highgui.lib
or
cv{version}.lib cxcore{version}.lib or highgui{version}.lib


just change it to:
opencv_calib3d220.lib opencv_contrib220.lib opencv_core220.lib opencv_features2d220.lib opencv_ffmpeg220.lib opencv_flann220.lib opencv_gpu220.lib opencv_haartraining_engine.lib opencv_highgui220.lib opencv_imgproc220.lib opencv_legacy220.lib opencv_ml220.lib opencv_objdetect220.lib opencv_video220.lib
(Some of these libs may not be needed if you did not use the features, but I don't think you will get any linking errors if you put it anyway.)


NOTE: as of the latest in the svn, the version is 2.2. Hence the "220" in "opencv_calib3d220.lib". If the version number changes, you may have the update the number accordingly.


Thirdly, in your "Projects and Solutions" "VC++ Directories" Options diaglog box, add this for "Include files":
{Path to your OpenCV SVN root folder}\include
{Path to your OpenCV SVN root folder}\modules\calib3d\include
{Path to your OpenCV SVN root folder}\modules\contrib\include
{Path to your OpenCV SVN root folder}\modules\core\include
{Path to your OpenCV SVN root folder}\modules\features2d\include
{Path to your OpenCV SVN root folder}\modules\ffmpeg
{Path to your OpenCV SVN root folder}\modules\flann\include
{Path to your OpenCV SVN root folder}\modules\gpu\include
{Path to your OpenCV SVN root folder}\modules\haartraining
{Path to your OpenCV SVN root folder}\modules\highgui\include
{Path to your OpenCV SVN root folder}\modules\imgproc\include
{Path to your OpenCV SVN root folder}\modules\legacy\include
{Path to your OpenCV SVN root folder}\modules\ml\include
{Path to your OpenCV SVN root folder}\modules\objdetect\include
{Path to your OpenCV SVN root folder}\modules\python
{Path to your OpenCV SVN root folder}\modules\traincascade
{Path to your OpenCV SVN root folder}\modules\video\include


Thirdly, in your "Projects and Solutions" "VC++ Directories" Options diaglog box, add this for "Library files":
{Path to your OpenCV SVN root folder}\{The name of the folder you created when building with CMake}\lib\{Release or Debug}

That's all that is to it. Good luck!

Sunday, January 17, 2010

Table of results for MNIST

This is a table documenting some of the best results some paper obtained in MNIST dataset.

Results shown indicates the error obtained by training on all 60,000 samples and testing on 10,000 samples.
  1. Deep Big Simple Neural Nets Excel on Handwritten Digit Recognition (2010)
    Cited 1 time. 0.35%
    Additional info: 6-layer NN 784-2500-2000-1500-1000-500-10 (on GPU) [elastic distortions]
  2. Efficient Learning of Sparse Representations with an Energy-Based Model (2006)
    Cited 109 times. 0.39%
    Additional info: large conv. net, unsup pretraining [elastic distortions]
  3. Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis (2003)
    Cited 190 times. 0.4%
  4. What is the Best Multi-Stage Architecture for Object Recognition? (ICCV 2009)
    Cited 39 times. 0.53%
    Additional info: large conv. net, unsup pretraining [no distortions]
  5. Deformation Models for Image Recognition (PAMI 2007)
    Cited 46 times. 0.54%
    Additional info: K-NN with non-linear deformation (IDM) (Preprocessing: shiftable edges)
  6. A trainable feature extractor for handwritten digit recognition (2007)
    Cited 38 times. 0.54%
    Additional info: Trainable feature extractor + SVMs [affine distortions]
  7. Training Invariant Support Vector Machines (2002)
    Cited 281 times. 0.56%
    Additional info: Virtual SVM, deg-9 poly, 2-pixel jittered (Preprocessing: deskewing)
  8. Simple Methods for High-Performance Digit Recognition Based on Sparse Coding (TNN 2008)
    0.59%
    Additional info: unsupervised sparse features + SVM, [no distortions]
  9. Unsupervised learning of invariant feature hierarchies with applications to object recognition (CVPR 2007)
    Cited 119 times. 0.62%
    Additional info: large conv. net, unsup features [no distortions]
  10. Shape matching and object recognition using shape contexts (PAMI 2002)
    Cited 2089 times. 0.63%
    Additional info: K-NN, shape context matching (preprocessing: shape context feature extraction)
  11. Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations (2009)
    0.82%
  12. Large-Margin kNN Classification using a Deep Encoder Network (2009)
    0.94%
  13. Deep Boltzmann Machines (2009)
    0.95%
  14. CS81: Learning words with Deep Belief Networks (2008)
    1.12%
  15. Convolutional Neural Networks (2003)
    1.19%
    More info: The ConvNN is based on the paper "Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis".
  16. Reducing the dimensionality of data with neural networks (2006)
    1.2%
  17. Deep learning via semi-supervised embedding (2008)
    1.5%

Sunday, October 25, 2009

Table of results for Caltech 256

This is a table documenting some of the best results some paper obtained in Caltech-256 dataset.


Results shown here are all trained using 30 samples from each category.
  1. Learning Subcategory Relevances for Category Recognition (CVPR 2008)
    Cited 19 times. 49.5%
  2. On Feature Combination for Multiclass Object Detection (ICCV 2009)
    Cited 74 times. 48.9%
  3. Image Classification using Random Forests and Ferns (2007)
    Cited 130 times. 45.3%
  4. In Defense of Nearest-Neighbor Based Image Classification (CVPR 2008)
    Cited 139 times. 42%
    Additional Info: NBNN (5 descriptors)
  5. Locality-constrained Linear Coding for Image Classification (CVPR 2010)
    Cited 19 times. 41.19%
  6. Caltech-256 object categoriy dataset (2007)
    Cited 238 times. 34.1%
  7. Linear spatial pyramid matching using sparse coding for image classification (CVPR 2009)
    Cited 82 times. 34.02%
  8. Kernel codebooks for scene categorization (ECCV 2008)
    Cited 69 times. 27.17%

Friday, August 21, 2009

Table of results for Caltech 101

This is a table documenting some of the best results some paper obtained in Caltech-101 dataset.

Results shown here are all trained using 30 samples from each category.
  1. Group-Sensitive Multiple Kernel Learning for Object Categorization (ICCV 2009)
    Cited 17 times. 84.3%
    Additional Info: GS-MKL
  2. LP-Beta + Geometric blur + PHOW gray/color + Self-Similarity
    82.1% +- 0.3%
  3. Learning Subcategory Relevances for Category Recognition (CVPR 2008)
    Cited 19 times. 81.9%
    Poster: Link (PDF)
  4. Object Recognition as Ranking Holistic Figure-Ground Hypotheses (CVPR 2010)
    Cited 8 times. 81.9%
    Additional Info: Regression with Post-Processing.
  5. Image Classification using Random Forests and Ferns (2007)
    Cited 130 times. 81.3%
    Additional Info: Bosch Multi-way SVM
  6. In Defense of Nearest-Neighbor Based Image Classification (CVPR 2008)
    Cited 139 times. 79.23%
    Additional Info: NBNN (5 descriptors)
  7. Visual Geometric Group (VGG)'s implementation of Multiple Kernel Image Classifier trained on dense SIFT, self-similarity, and geometric blur features
    78.20% +- 0.4%
    Additional Info: Result of 77.8% is obtained by combining dense SIFT, self-similarity, and geometric blur features with the multiple kernel learning
  8. On Feature Combination for Multiclass Object Detection (ICCV 2009)
    Cited 74 times. 77.8% +- 0.4%
    Additional Info: Best results obtained by LP-Beta. Results above obtained from this page.
    Homepage: Link (Contains results + source code)
  9. Representing shape with a spatial pyramid kernel (CIVR 2007)
    Cited 210 times. 77.8%
    Additional Info: Result of 77.8% is obtained by combining all 4 cues (shape 180, shape 360, gray appearance and color appearance.
  10. The devil is in the details - an evaluation of recent feature encoding methods (2011)
    Cited 1 time. 77.78% +-0.56
    Dataset, code: Link
  11. Kernel Descriptors for Visual Recognition (NIPS 2010)
    Cited 1 time. 76.4% +- 0.7%
    Additional Info: KDES-A(M)
  12. Learning mid-level features for recognition (CVPR 2010)
    Cited 21 times. 75.7% +- 1.1%
    Additional Info: Sparse Codes, Intersection Kernel.
  13. Image classification with multiple feature (2011)
    Cited 0 times. 75% +- 0.8%
  14. Locality-constrained Linear Coding for Image Classification (CVPR 2010)
    Cited 19 times. 73.44%
    Project web site: Link to Project web site
    Source code: Link to MATLAB code (rar)
  15. Linear Spatial Pyramid Matching Using Sparse Coding for Image Classification (CVPR 2009)
    Cited 82 times. 73.2%
    Additional Info: Sparse coding, max pooling, linear SVM
    Project web site: Link to Project web site
    Source code: Link to MATLAB code (rar)
  16. High Dimensional Nonlinear Learning using Local Coordinate Coding (Technical Report 2009)
    Cited 0 times. 73.14%
    Additional Info: Local coordinate coding, max pooling, linear SVM
  17. Recognition using Regions (CVPR 2009)
    Cited 55 times. 73.1%
  18. The importance of Encoding Versus Training with Sparse Coding and Vector Quantization (ICML 2011)
    72.6%
  19. Learning Coupled Conditional Random Field for Image Decomposition with Application on Object Categorization (CVPR 2008)
    Cited 4 times. 70.38%
  20. Fast Image Search for Learned Metrics (CVPR 2008)
    Cited 42 times. 69.6%
    Additional info: ML+CORR
  21. A Multi-Scale Learning Framework for Visual Categorization (ACCV 2010)
    Cited 1 time. 68.5%
    Additional info: sparse coding (K = 900)
  22. Caltech-256 Object Category Dataset (2007)
    Cited 238 times. 67.6%
    Additional Info: Griffin's SPM
  23. Improved Spatial Pyramid Matching for Image Classification (ACCV 2010)
    Cited 0 times. 67.36% +- 0.17%
  24. Variable Sparsity Kernel Learning (JMLR 2011)
    Cited 0 times. 67.07%
  25. Similarity-based cross-layered hierarchical representations for object categorization (CVPR 2008)
    Cited 23 times. 66.5%
    Additional Info: Shapinals
  26. SVM-KNN - Discriminative Nearest Neighbor Classification for Visual Category Recognition (2006)
    Cited 295 times. 66.2% +- 0.5%
  27. The Hierarchical Beta Process for Convolutional Factor Analysis and Deep Learning (ICML 2011)
    Cited 0 times. 65.8% +- 0.6%
  28. Bag-of-Features Kernel Eigen Spaces for Classification (ICPR 2008)
    Cited 1 time. 65.5% +- 0.7%
  29. Image Retrieval and Classification using Local Distance Functions (NIPS 2006)
    Cited 76 times. 65.2%
  30. Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations (ICML 2009)
    Cited 91 times. 65.4% +- 0.5%
    Additional Info: CDBN (first+second layers)
  31. Beyond Bags of Features: Spatial Pyramid Matching for Recognizing Natural Scene Categories (CVPR 2006)
    Cited 1031 times. 64.6% +- 0.8%
    Additional Info: L=2, M=200, Pyramid
    S
    ource code: Link to MATLAB code (zip)
    Slides: Link
  32. Kernel Codebooks for Scene Categorization (ECCV 2008)
    Cited 69 times. 64.12%
  33. Visual Word Ambiguity (PAMI 2010)
    Cited 41 times. 64.1%
  34. Using dependent regions for object categorization in a generative framework (2006)
    Cited 54 times. 63%
  35. SIFTing the Relevant from the Irrelevant - Automatically Detecting Objects in Training Images (2009)
    61.45%
  36. Pyramid Match Kernels: Discriminative Classification with Sets of Image Features (2006)
    Cited 276 times. 58.2%
  37. Max-Margin Additive Classifiers for Detection (2009)
    56.49%
  38. Multiclass Object Recognition with Sparse, Localized Features (2006)
    Cited 248 times. 56%
  39. Efficiently Matching Sets of Features with Random Histograms (2008)
    Cited 2 times. 54.1%
  40. Unsupervised Learning of Invariant Feature Hierarchies with Applications to Object Recognition (2007)
    Cited 39 times. 54%
  41. Fast Inference in Sparse Coding Algorithms with Applications to Object Recognition (2008)
    Cited 7 times. 53%
  42. Classification using Intersection Kernel Support Vector Machines is Efficient (2008)
    Cited 109 times. 52%
    Project web site: Link
    Source code: Link to MATLAB/C code (tar.gz)
  43. Exploiting Unlabelled Data for Hybrid Object Classification (2005)
    Cited 10 times. 43%
  44. Object Recognition with Features Inspired by Visual Cortex (2006)
    Cited 191 times. 42%
  45. Exploiting Unlabelled Data for Hybrid Object Classification (2005)
    Cited 10 times. 17%