View my account

I have question about intelrealsense D435, how can i get depthmap only face to train model.

Comments

14 comments

  • MartyX Grover

    Hi Hvtrung  The link below provides details of how a face data-set called CASIA-SURF was created using a facial 3D reconstruction tool called PRNet.  Would this meet your needs, please?

    https://github.com/IntelRealSense/librealsense/issues/8472#issuecomment-788737796

     

    0
    Comment actions Permalink
  • Hvtrung

    Thank for your help, Solution use deep learning is the best, but other way to do it. Because i using D435, Camera intel realsense D435 can do it?

    0
    Comment actions Permalink
  • MartyX Grover

    I carefully considered your question.  If you want a depth-only plain face capture (no color texturing), you could certainly do so in the RealSense SDK with your D435.  The SDK's RealSense Viewer tool has a pre-made 3D point cloud mode that enables a minimum and maximum depth distance to be set so that you can isolate the face from the rest of the scene and then export the point cloud data as a .ply format file.

     

     

    Once a ply file has been obtained then it can be imported into a 3D modelling software package and converted into a solid mesh model that more closely resembles the plain face in the image that you provided.  The free software MeshLab can perform this conversion, as described in a tutorial in the link below.

    https://www.andreasjakl.com/capturing-3d-point-cloud-intel-realsense-converting-mesh-meshlab/  

    0
    Comment actions Permalink
  • Hvtrung

    Thank you very much for your help, please more question.

    1.How can i get only face with parameter that you show me, now i get result but, more detail not necessary as shoulder... picture below

    2. After get depthmap of face with this solution (intel d435). can i store data face with numpy to train model with PyTorch. my project us Facenet combine deptmap of face to improve accuracy.

    Sorry my English not good, am Viet Nam.


    0
    Comment actions Permalink
  • MartyG

    Your English is very good, so don't worry.

    It would be difficult to remove the shoulders from the image using the RealSense Viewer tool as they are the same distance from the camera as the face.  What I did was to simply position the camera at a height where the shoulders were not captured.

    If you are creating all of the images yourself from your own body then wearing a black shirt may remove depth detail below the neck.  This is because depth cameras have difficulty seeing black surfaces because they absorb light. 

    It would likely be possible to remove the shoulder detail from the image in real-time using filters in PCL but a simpler solution would be to export a ply file from the RealSense Viewer that includes the shoulders and then remove the unwanted detail in MeshLab when creating the final version of the image.

      https://en.m.wikiversity.org/wiki/MakerBot/Cleaning_Up_Point_Cloud_Meshes_in_Meshlab_For_3D_Printing

     

    If you need to store the facial depth data in numpy though, I wonder whether a Python script in the link below for saving the depth into an npy file would be suitable for your project.

    https://github.com/IntelRealSense/librealsense/issues/4934#issuecomment-537705225

    You may then be able to load the npy file into pytorch.

    https://towardsdatascience.com/beginners-guide-to-loading-image-data-with-pytorch-289c60b7afec

    0
    Comment actions Permalink
  • Hvtrung

    Im so happy when i recive answer from you. please for me two question.

     Now I got two result as picture below with two solution.

    PRN (https://github.com/IntelRealSense/librealsense/issues/8472#issuecomment-788737796 ) and IntelRealsense D435

    if i use D435, i feel depthmap of face lost many information, (1) how can i fill lost depth pixels as picture below(round yellow).

    (2) Which technology do you think is better, give me some advice.

    Thank you very much.

     

     

     

     

    0
    Comment actions Permalink
  • MartyX Grover

    1.  The D435 image may be losing some depth information around the marked points because of light reflections off the spectacles and areas of skin such as the forehead.  You could try capturing the image without spectacles to confirm this possibility if the depth detail around the eye improves.

    The area of black hair at the side of the head may be missing due to the camera having difficulty seeing black or dark grey colors due to the physics of light, as mentioned earlier.

    Putting a fine powder such as talcum powder on the face may dampen reflections and make the face more readable.  This technique works for dampening reflections when applying fine spray-on powders such as foot powder or baby powder to reflective surfaces that are being scanned.

    Glare from reflections on images can also be dampened by applying a physical optical filter product called a linear polarization filter over the lenses on the outside of the camera, though this may not be necessary for your particular application if you are creating all the images using your own face.

    You could also test whether enabling a post-processing filter called a Hole-Filling Filter in the RealSense SDK fills in the gaps.

     

     

    2.  The best method will be the one that is compatible with the workflow of your project.  For example, the PRNet image above may be better but this is not helpful if PRNet cannot be used to generate numpy information to transfer into pytorch.

    0
    Comment actions Permalink
  • Hvtrung

    Thank for your help. So many trouble for me. Because i have to collect picture about 500 people (20pic/person many directs different face) to train model. If i choose d435 you think posible for me.

    0
    Comment actions Permalink
  • MartyX Grover

    If the goal of your project is to develop an accurate face detection and recognition system then you may be able to save a lot of time and work if you use the new RealSense ID system and its RealSense F455 device instead of a D435 depth camera.

    https://www.intelrealsense.com/facial-authentication/

    0
    Comment actions Permalink
  • Hvtrung

    Thank for your help, But this my disserdation of master science. It have to more research in nature. So cannot buy device supported good funcion.

    I searched found paper about my problem  (https://www.researchgate.net/publication/342352744_Deep_Learning-based_Single_Image_Face_Depth_Data_Enhancement)  but can not see instruction or link code via github.

    Please for me question  if i use depthmap D435 with lost many depth pixel as myresult. This affect to accuracy of my recognition system or tool enhance depthmap face can you show me. Thank you very much

    0
    Comment actions Permalink
  • MartyX Grover

    The appendix at the bottom of the paper that you linked to provides a link to a GitHub article about depth enhancement.

    https://github.com/mdcnn/Depth-Image-Quality-Enhancement/

    The appendix also has a GitHub link for dealing with occlusions (when something is in front of the face, obscuring the facial features)

    https://github.com/anhttran/extreme_3d_faces/

    0
    Comment actions Permalink
  • Hvtrung

    Thank for your help.

    Now i found solution for my problem about depth face. Please for me question. how can i to detect face on stream with MTCNN that use intel D435 camera? when i use single image MTCNN word good but I use real time it not working.

    I using DLib and it ok picture as below, but i want use MTCNN to compare Dlib and MTCNN but it cannot word please help.

     

    0
    Comment actions Permalink
  • MartyX Grover

    In regard to comparing MTCNN and dlib, the link below may be helpful:

    https://stackoverflow.com/a/61173890

    0
    Comment actions Permalink
  • Hvtrung

    Thank you very much.

    0
    Comment actions Permalink

Please sign in to leave a comment.