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

Possible future enhancement NPD #11

Open
inspirit opened this issue Oct 23, 2015 · 7 comments
Open

Possible future enhancement NPD #11

inspirit opened this issue Oct 23, 2015 · 7 comments

Comments

@inspirit
Copy link

i think you can try to use recently introduced Normalised Pixel Difference features instead of existing.
You can read more here: http://www.cbsr.ia.ac.cn/users/scliao/papers/Liao-PAMI15-NPD.pdf
I'm currently doing some tests using NPD for facial landmarks alignment and it clearly outperforms classical pixel difference features.

@luoyetx
Copy link
Owner

luoyetx commented Oct 23, 2015

Thanks a lot!

@prayshe
Copy link

prayshe commented Oct 29, 2015

@inspirit
Hi, I'm studying face alignment now. I have replaced conventional pixel difference by normalized pixel difference. However, it seems that NPD made no contribution to accuracy. Is there any part I need to modify to match the new feature? Thanks!

@inspirit
Copy link
Author

this is not that easy as just using NPD instead of pixel diffs. you should take into account that response values will be different so you should select threshold more careful. please refer to the paper i mentioned above

@prayshe
Copy link

prayshe commented Oct 29, 2015

Actually, I have selected threshold from -0.25 to 0.25 when using NPD, while -64 to 64 when using PD. But I made no improvement. Anyway, thanks!

@inspirit
Copy link
Author

in my implementation i'm generating random splits with 2 thresholds one negative and one positive.
threshold values are in range -127 to 127. so for each split i try 10 random thresholds * 30 random pixel positions, and then select the one that reduce the error better than others.
the split check against 2 thresholds is:

const float npd = response(feature_responses);
// thresh1 is negative, thresh2 is positive in [0,127) range
return npd < thresh1 || npd > thresh2;

@prayshe
Copy link

prayshe commented Oct 29, 2015

Thank you very much, I have read the paper. Originally I thought that double thresholds were only used in duadratic tree. Now I figure it out. Thanks!

@lieff
Copy link

lieff commented Feb 16, 2018

I have some questions too..:
const float npd = response(feature_responses);
Do you used response (f1-f2)/ (f1+f2) or more complicated function?

// thresh1 is negative, thresh2 is positive in [0,127) range
return npd < thresh1 || npd > thresh2;
What scale is used for npd weighing?

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