Home Choosing LBP sampling points and radius for good facial features
Reply: 0

Choosing LBP sampling points and radius for good facial features

user42032 Published in September 20, 2018, 10:22 pm

I am trying to do some feature engineering on facial images using Python and OpenCV. The idea is to use those features for unsupervised learning to group images of the same person together. The pipeline is as follows:

  1. Choose one of several OpenCV face detectors (a couple of LBP and a couple of HAAR face cascades)
  2. Use OpenCV to
    2.1 Convolve images with a 5-by-5 Gaussian function for low-band filtering to reduce noise
    2.2 Convert images to grayscale
    2.3 Extract facial images from pictures
    2.4 Resize faces to a common shape (300 by 300, for example)
  3. Use scikit-image.feature.local_binary_pattern to get local binary patterns of faces
  4. Use numpy to produce histograms of those LBPs
  5. Use histograms as features for scikit-learn's NearestNeighbors unsupervised learning algorithm to look for clusters of images that may indicate them belonging to the same person

The problem is that clustering doesn't really work well. When I look at my data reduced to two dimensions for visualization, it doesn't even look like there are any discernable clusters, despite me knowing that my test images contain pictures of several different persons.

I suspect that it is related to scikit-image's LBP parameters: sampling points number and sampling radius. I tried playing around with several values for those hoping to see a good separation between images of different persons, but so far haven't had much luck, see results here. (Different colors indicate different people for visualization purposes.) So here is my question of the post:

Is there a good rubric or a rule for selecting the number of sampling points and the sampling radius of LBP based perhaps on images' nature or some property of theirs? If you have other ideas on how to get good features, please, also let me know.

share|improve this question

active oldest votes

Your Answer

StackExchange.ifUsing("editor", function () { StackExchange.using("externalEditor", function () { StackExchange.using("snippets", function () { StackExchange.snippets.init(); }); }); }, "code-snippets"); StackExchange.ready(function() { var channelOptions = { tags: "".split(" "), id: "1" }; initTagRenderer("".split(" "), "".split(" "), channelOptions); StackExchange.using("externalEditor", function() { // Have to fire editor after snippets, if snippets enabled if (StackExchange.settings.snippets.snippetsEnabled) { StackExchange.using("snippets", function() { createEditor(); }); } else { createEditor(); } }); function createEditor() { StackExchange.prepareEditor({ heartbeatType: 'answer', convertImagesToLinks: true, noModals: false, showLowRepImageUploadWarning: true, reputationToPostImages: 10, bindNavPrevention: true, postfix: "", onDemand: true, discardSelector: ".discard-answer" ,immediatelyShowMarkdownHelp:true }); } });
StackExchange.ready( function () { StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f48779870%2fchoosing-lbp-sampling-points-and-radius-for-good-facial-features%23new-answer', 'question_page'); } );

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged python opencv scikits lbph-algorithm facial-identification or ask your own question.

StackExchange.ready(function () { StackExchange.responsiveness.addSwitcher(); }) (function(i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function() { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m); })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga'); StackExchange.ready(function () { StackExchange.ga.init({ sendTitles: true, tracker: window.ga, trackingCodes: [ 'UA-108242619-1' ] }); StackExchange.ga.setDimension('dimension2', '|python|opencv|scikits|lbph-algorithm|facial-identification|'); StackExchange.ga.setDimension('dimension3', 'Questions/Show'); StackExchange.ga.trackPageView(); }); /**/ var _qevents = _qevents || [], _comscore = _comscore || []; (function() { var ssl = 'https:' == document.location.protocol, s = document.getElementsByTagName('script')[0], qc = document.createElement('script'); qc.async = true; qc.src = (ssl ? 'https://secure' : 'http://edge') + '.quantserve.com/quant.js'; s.parentNode.insertBefore(qc, s); _qevents.push({ qacct: "p-c1rF4kxgLUzNc" }); /**/ var sc = document.createElement('script'); sc.async = true; sc.src = (ssl ? 'https://sb' : 'http://b') + '.scorecardresearch.com/beacon.js'; s.parentNode.insertBefore(sc, s); _comscore.push({ c1: "2", c2: "17440561" }); })();
You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.34903 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO