Eureka! An Accidental Improvement
Courtesy of the Matlab Help Menu

Eureka! An Accidental Improvement

In early 2013, my manager at Digital Signal Corp (DSC) asked me to investigate using Gabor filters to improve our 3D face recognition. Gabor filters were successfully used for iris recognition and 2D face recognition. However, nobody had used 3D Face images. I did a lot of research, and I determined the only way to move forward was to use 2.5D images. A 2.5D image is a regular image but the pixel intensity represents depth. 

I happened to use the function griddata in Matlab to do this conversion while I was doing the research. I was working on FRGC data collected by a Minolta scanner. This had 100k points per face with a high accuracy. The development went well, and I found some performance improvement. The next step was using data from DSC’s sensor which was 10k points per face, a lower accuracy, and for some faces, the point distribution on the face could be very uneven. 

In the processing of using DSC’s data, I found the performance improvement was huge, but not of the Gabor filters. I found by just using the data after upsampling, the performance improved significantly. This helped fill holes that caused issues with the face registration process, and it allowed some surface smoothing using local neighbors. I got to work implementing it in C++, and it turned out to be a larger task. I wasted some time trying to match algorithms in Matlab, but it took me a bit to make sure I knew which griddata version I was using. 

I had quite a few learnings from there, but the main result was 2 fold: I improved recognition and somehow, I shaved off 25% of the computing time. Part of this happened because of triangulation. When I upsampled, I made some initial triangulation, and then I efficiently upsampled using interpolation on each triangle face by scanning through the triangle list and determining what XY points on the grid were found in a given triangle. This caused the entire snippet to be super fast.

Each face had a reference model deformed into it, and the result was our standardized 3D face for PCA/LDA. This process was point to triangle. I improved it and made it point to surface using this upsampled data and some surface parameters generated by the 8 nearest neighbors. All of this added to more accuracy in the face registration process which improved the PCA/LDA results.

In the end, this change resulted in a ~70% error reduction of false rejects (while holding the false accepts constant), and it decreased the processing time by 25%. It was quite a win, but the time from initial development to full implementation was close to a year. Other projects were going on, but even still, this project took much longer than I originally planned. To top it off, the method also functioned in a way to replace a 3D correct 2D color image process we had been using to improve 2D recognition performance. 

Dr. Unsal Gokdag

Machine Learning Engineer, Transformers and Einstein Summation Expert

6 年

A very good read, On the uosamplinh phase you said that you are using nearest neighbors, did you thought standard image feutre extractor like SIFT or HOG? They could prove useful for giving youths size and orientation of individual parts of the face. Another thing that came to my mind is Facebook used SIFT+PCA+Fisher vectors for their face detection pipeline before the deep network era and I also experienced that fisher vectors can come handy in feature extraction by simulating the feature space like a GMM and giving you the first and second norms from each cluster. This is a very nice article and hope to see new articles like this.

回复

要查看或添加评论,请登录

Dr. Robert McKeon Aloe的更多文章

  • Ph.D. Interviews

    Ph.D. Interviews

    I have interviewed mostly Ph.D.

  • How to break into Data Science the easy way

    How to break into Data Science the easy way

    Scratch that; there’s not an easy way. Data science has become a hot topic the past few years along side machine…

    5 条评论
  • ML: Examining the Test Set

    ML: Examining the Test Set

    I recently saw a post where someone said “Never touch your test set.” The theory was that you (as the algorithm…

    8 条评论
  • Privacy in Machine Learning: PII

    Privacy in Machine Learning: PII

    Privacy is not a value explicitly written into the US Constitution, but the essentials are there. As a democratic…

    1 条评论
  • Mastering LinkedIn

    Mastering LinkedIn

    Account Creation I never had a LinkedIn account until I was searching for a job, and then I only paid attention to it…

    1 条评论
  • Withdrawing a Conference Paper

    Withdrawing a Conference Paper

    In graduate school, I tried all sorts of optimizations aimed at making my face matcher work better and faster. I found…

    1 条评论
  • Thoughts on Leaving

    Thoughts on Leaving

    Relax, I’m not leaving my current job right now. I’ve been writing about many different aspects of my work experience…

  • Crashing the Student Computer Lab

    Crashing the Student Computer Lab

    In my last year of graduate school at Notre Dame, I used over 1,000,000 computer hours or just over 114 years of…

    3 条评论
  • Presentation Essentials

    Presentation Essentials

    I have fallen asleep in my fair share of presentations, and I’ve worked hard at making sure my presentations are not…

  • Design of Experiment: Data Collection

    Design of Experiment: Data Collection

    Anyone can collect data; some people can collect good data. The key theme to any good data collection is data…

社区洞察

其他会员也浏览了