Kinect face recognition for Child RRS feed

  • Question

  • Hi,

    I learned that the Kinect SDK build-in face recognition technique detected the skeleton first, then it used this piece of information to locate and detect the face (correct me if I am wrong). I am currently working on the face detection of child (12~18 month old), I am wondering how well Kinect could do (to detect skeleton, and then face)? I understand this may be an obscure question since there are many unknown parameters that affect it, but I'd appreciate any suggestions.

    I'd like to try out myself but we don't currently have any child participants for now.


    • Edited by seanlawson Wednesday, July 10, 2013 7:36 PM
    Wednesday, July 10, 2013 7:33 PM


All replies

  • FaceTracking does not require skeletal tracking, but may have better results if it is enabled.

    In general, Kinect is not able to do skeletal tracking on anyone below 1 meter or 40 inches.

    Carmine Si - MSFT

    Wednesday, July 10, 2013 11:48 PM
  • Thanks! That explains a lot and is very helpful.
    Thursday, July 11, 2013 2:13 AM
  • But what about multi-face tracking? Does it require skeleton or not? I tested the sample project - FaceTrackingVisualization, it turns out the single face tracking works even if my arm doesn't shown, but the multi-face tracking doesn't, only if my upper torso shows up in the camera it starts to find my face.
    Thursday, July 11, 2013 7:39 PM
  • For the sample, just removing the "hint" value may not be all that is required. The sample may still be using skeletal to trigger getting the redraw to occur for the second avatar to update. Try with 2 users that can get ST to work to determine if the FaceTracking is not working for you.

    I was able to make this work making the following changes to the ChecCameraInput() function in the FTHelper2.cpp file. Keep in mind, that FTHelper.cpp is only for the SingleFace project.

    void FTHelper2::CheckCameraInput()
        if (m_UserContext[i].m_LastTrackSucceeded)
            hrFT = m_UserContext[i].m_pFaceTracker->ContinueTracking(&sensorData, NULL, m_UserContext[i].m_pFTResult);
            hrFT = m_UserContext[i].m_pFaceTracker->StartTracking(&sensorData, NULL, NULL, m_UserContext[i].m_pFTResult);

    Carmine Si - MSFT

    Thursday, July 11, 2013 8:14 PM
  • If I understand you correctly (and please point out if I am wrong.), you were suggesting the multi-face tracking does use skeleton information, right? I tried the same modification as you suggested to FTHelper2::CheckCameraInput() function, it seems that nothing changed in terms of the face tracking, i.e., it still requires the 2 persons to have at least upper body visible to the camera. 

    My concern there is because in my scenario, there would be a parent holding a child (1~1.5 year old), and I need to detect the child's face, if multiple face detection requires skeleton information, and Kinect couldn't detect anyone shorter than 1m/40inches, this may be a problem for me. Do you have any suggestions on this issue?

    Thank you

    Thursday, July 11, 2013 9:23 PM
  • Remember, the Kinect has a limit to where the depth can be detected. You cannot be within 800mm in normal mode, or 400mm in near mode.

    Coordinate Spaces

    To enable near mode in the sample

    // MultiFace.cpp
    // change the class propert m_bNearMode to TRUE
    MultiFace::MultiFace(): m_hInst(NULL), 

    Even at this distance, detecting an infants facial features may be difficult give the resolution and size of the infants face. If you are using a Kinect for Xbox device, that will hinder things as well, since you have half the depth resolution than Kinect for Windows. You will have to experiment and see if it will fit your needs.

    Carmine Si - MSFT

    Friday, July 12, 2013 9:39 PM