...
some modifications ... (IMPORTANT: cascade structure slightly changed)
Update README.md
Update picolrn.c

adding comment for generate_binary_test.
randomly generate two points/pixels. the point is in the radius of 128 from the origin.
the distance of the two points is smaller than 64.
The training sample is transformed to dim[-128-127]*[-128-127]
The generated two pixels are used to become a binary comparison feature, so there will be many binary features.
The training sets/samples are estimated the WMSE by each of the comparison feature with the two pixel comparison.
After each of the features is evaluated for its WMSE, a minimum WMSE can be found.
Update picolrn.c

How to calculate Weighted Mean Square Error, WMSE, to generate a decision tree?
Find the best attribute/feature to split the training set. Attribute/feature of an image is a two-pixel comparision.
So there are many possible splits of a training set by the any two-pixel pair, because there are many two-pixel pair in an image.
The training samples/set is divided into two classes/groups(+1,-1) by each feature generated from generate_binary_test()
the split is a "hypothesis" to face(+1) and non-face (-1), so it may be different to the ground-truth.
Each feature will be a root node of binary stump : http://en.wikipedia.org/wiki/Decision_stump
Each feature then splits the whole training set into two subtrees, then the Weighted Mean Sqaure Error can be calculated.
Then find the minimum WSME from all the calculated WSME for each node(feature).
The feature which has the minumum WMSE is the root node to split the training set.
This recursive iteration from tree top to the desired depth. It's not possible to use all possible features to generate the decision tree.
Merge branch 'master' of https://github.com/nenadmarkus/pico

Conflicts:
	learning/picolrn.c
Merge branch 'master' into 2.4.x

Conflicts:
	learning/picolrn.c