| 1. | | Ask HN: Math for hackers. |
| 102 points by RiderOfGiraffes on June 24, 2009 | 56 comments |
|
| |
|
|
| 3. | | Website Performance Tutorials (code.google.com) |
| 79 points by champion on June 24, 2009 | 14 comments |
|
| 4. | | Erik Naggum, R.I.P. (salon.com) |
| 76 points by imgabe on June 24, 2009 | 41 comments |
|
| 5. | | HTC Hero - Full Flash, Skype over 3G, custom Android UI, multitouch. (htc.com) |
| 70 points by nailer on June 24, 2009 | 51 comments |
|
| 6. | | Startup Law 101 - What it means to own x% of a company (grellas.com) |
| 68 points by grellas on June 24, 2009 | 2 comments |
|
| 7. | | Posterous Acquires Fellow Y Combinator Alum Slinkset (techcrunch.com) |
| 68 points by ed on June 24, 2009 | 24 comments |
|
| 8. | | Encrypt-then-MAC (daemonology.net) |
| 65 points by cperciva on June 24, 2009 | 49 comments |
|
| 9. | | The Billion Dollar HTML Tag (datacenterknowledge.com) |
| 61 points by 1SockChuck on June 24, 2009 | 29 comments |
|
| |
|
|
| 11. | | Outlook’s broken—Let’s fix it (fixoutlook.org) |
| 58 points by tortilla on June 24, 2009 | 42 comments |
|
| 12. | | Chris Anderson's Free Contains Apparent Plagiarism (vqronline.org) |
| 55 points by razorburn on June 24, 2009 | 36 comments |
|
| 13. | | Should You Go Beyond Relational Databases? (thinkvitamin.com) |
| 52 points by olegp on June 24, 2009 | 30 comments |
|
| 14. | | Ask PG: Any plans to make the YC talks public? |
| 49 points by trickjarrett on June 24, 2009 | 16 comments |
|
| |
|
|
| 16. | | Buffett: Apple Withheld "Material Fact" On Steve Jobs Health (cnbc.com) |
| 47 points by jakarta on June 24, 2009 | 47 comments |
|
| |
|
|
| 18. | | Bruce Schneier: Fixing Airport Security (schneier.com) |
| 44 points by lamnk on June 24, 2009 | 19 comments |
|
| 19. | | $100 Laptop Becomes $5 PC (technologyreview.com) |
| 41 points by razorburn on June 24, 2009 | 9 comments |
|
| 20. | | You can now share files on FriendFeed (friendfeed.com) |
| 40 points by zeedotme on June 24, 2009 | 14 comments |
|
| 21. | | Anecdote Driven Development, or Why I Don't Do TDD (perl.org) |
| 39 points by 10ren on June 24, 2009 | 11 comments |
|
| |
|
|
| 23. | | The eternal optimism of the Clear mind (joelonsoftware.com) |
| 35 points by twampss on June 24, 2009 | 18 comments |
|
| 24. | | ZeniMax Media Acquires id Software (idsoftware.com) |
| 35 points by jrbedard on June 24, 2009 | 12 comments |
|
| 25. | | Test-Driven Design: not for the early stages of development (tbray.org) |
| 35 points by yungchin on June 24, 2009 | 11 comments |
|
| |
|
|
| 27. | | PyPy: JIT progress, 50% faster baseline than CPython (morepypy.blogspot.com) |
| 35 points by empone on June 24, 2009 | 4 comments |
|
| 28. | | Is a Proof a Proof If No One Can Check It? (nytimes.com) |
| 32 points by kqr2 on June 24, 2009 | 29 comments |
|
| 29. | | The Ultimate Modern Desert House (jetsongreen.com) |
| 32 points by shard on June 24, 2009 | 12 comments |
|
| 30. | | Army Exoskeleton Suit Gives Man Superhuman Strength (singularityhub.com) |
| 31 points by kkleiner on June 24, 2009 | 22 comments |
|
|
| More |
1, the algorithm use something called haar filters, its simply box filters with a "White" and "black" area - for each region of the image, you take the sum of the pixels in the "White" area and minus the sum of the pixels in the "black" area. Thus the filters output a simple single number;
- First you generate a gazillion of these filters for different regions of the image with different shapes. such as a 2 horizontal rectangle or 2 vertical ones ( one black and one white ).
- You take the result of the output of the filter to find the threshold which differentiate the faces and non-faces in your training images the best.
- Using all the filters and outputs you have, feed it into an machine learning algorithm called "Adaboost", which attempts to minimize an exponential loss function of the error of classification. These different filters are then assembled with different weights.
- The final structure of the detector is a "detection chain", which is a degenerate decision tree (like a chain) with nodes consisting of the aforementioned filters assembled together. This is how the algorithm achieves its speed, by rejecting non faces early in the detection process. Only when a image region passes all the nodes in the detection chain that its labeld as a "hit";
- After that you scan all regions of the image at all sizes ( brute force ) and then assemble the detection results.
To be honest, the first time that I saw the description of the algorithm, it seemed a little "magical". The underlying reason why these "box filters" work so well is because the human face is well-defined by "boxy" feature such as our eyes, nose, eyebrows, lips..etc. Its a wonderful wonderful application of Machine learning to a specific domain.
This is also why this algorithm has MUCH lower detection rates for cascades trained to detect side view faces, because these "boxy features" that are so well detected by these filters are simply not as prominent in the side view
For more, refer to the Viola and Jones paper , of all the versions out there, I find this the best:
http://lear.inrialpes.fr/people/triggs/student/vj/viola-ijcv...
to be perfectly honest, this detector sucks.... Although its fairly illumination invariant, its not rotation invariant and sucks for side-view faces detection. I've been trying for the longest time to implement the histogram based detector outlined in this paper: http://www.cs.cmu.edu/afs/cs.cmu.edu/user/hws/www/CVPR00.ps
which is also what pittpatt uses for their detector and IMO its a much better detector. However the lack of training images and time has been impeding my progress. It'll be opensourced when I'm done.