Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The details in Training #10

Open
wg1989john opened this issue Nov 17, 2015 · 5 comments
Open

The details in Training #10

wg1989john opened this issue Nov 17, 2015 · 5 comments

Comments

@wg1989john
Copy link

I've read your paper, and run your code. It's really great and fast.

But I have some questions here.

  1. It seems like that you train the decision tree using the grey level image. However, because of the different skin color, comparison on grey level may be not the good idea? Have you tried trained on the gradient image(e.g. processed by sobel operator, ignore the gradient angle)?
  2. In each internal node, you randomly do 256 binary tests. Why not just calculated the weighted average face of samples, and compare the max to min. If you want to introduced randomness, you can randomly pick a pair from top N maxs and top N mins.

The idea is great.

@nenadmarkus
Copy link
Owner

  1. Yes, I've tried gradient images. However, these do not work well with pico due to aliasing problems (binary tests "miss" a lot of edges). You can try to learn your own detector using gradients: modify genki.py and background.py to generate a dataset processed with a gradient operator.
  2. Could you explain your proposal in more detail?

@wg1989john
Copy link
Author

Now, in each internal node, you just try 256 pixel pairs, and find the best with least WMSE(Weighted Mean Square Error, Equation 2 in paper). Our goal here is to find a pair of pixels which can divide the training samples into two groups separately. My proposal is

  1. Get the average image of all face samples of current internal node (i.e the first pixel of average image is the average of the first pixel of all face samples of current internal node)
  2. Pick the maximum pixel and minimum pixel of the average image as the pixel pair for this internal node.
  3. It will work because average image of the nonface should be uniform, while most face image have bigger pixel value at location of maximum of average image and less pixel value at location of minimum of average image.

By the way, I found that your face detector is not good for people with cap and girls with bangs.

@YangUSTC
Copy link

Hi wg1989john
"2.Pick the maximum pixel and minimum pixel of the average image as the pixel pair for this internal node." Do you mean that you want to change the way to select pixel pairs ? maybe it works. but how about the detection speed?

@wg1989john
Copy link
Author

Hi YangUSTC
It only affects training, not detection.

@symisc
Copy link

symisc commented Jun 5, 2017

@wg1989john

Your idea is cool. But while building the tree and we get only nonface images in a subtree (pure subtree). Instead of calculating average image what should we use?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants