uricamic / clandmark

Open Source Landmarking Library
http://cmp.felk.cvut.cz/~uricamic/clandmark
GNU General Public License v3.0
199 stars 111 forks source link

Running Clandmark webcam example #67

Open sarmadm opened 7 years ago

sarmadm commented 7 years ago

Hi

I installed clandmark on Ubuntu , now I want to run the facial landmark detection using web cam .

What is the procedure to run the code ?

Thanks for help

uricamic commented 7 years ago

Hi,

you should decide which model is appropriate for you. The options are 8 landmarks, suitable for near-frontal faces for face alignment; up to 21 landmarks multi-view faces (up to profiles), also mainly for face alignment; 68 landmarks near-frontal, suitable for some other tasks.

Code snippets for these are available on the project webpage.

There is also a code example using opencv, which is taking frames from a webcam, detecting faces (opencv haarcascade) and then running the clandmark detector.

sarmadm commented 7 years ago

Hi, I want to use 68 landmarks , but I don't know how to compile it and get it run

uricamic commented 7 years ago

Hi,

have you compiled clandmark library already? If yes, you can just turn on BUILD_CPP_EXAMPLES option in CMake, which will compile the enclosed examples.

I will add the tutorial on external examples soon.

sarmadm commented 7 years ago

Hi

Yes , I have compiled the clandmark library, Now I just want to run the facial landmark detection

using my web cam , What should I do ?

Thanks for help

sarmadm commented 7 years ago

I have used tofi@tofi:~/clandmark/build/examples$ ./video_input and this message is displayed

Usage: video_input { cam | vid } [ filename | cam_id ] [ output_filename ]

what are the parameters of video_input ? I'm I on the right way to run the clandmark using my webcam ?

uricamic commented 7 years ago

Hi,

the parameters are listed there and quite self-explanatory. 1) either "cam" or "vid", which determines whether the input from webcamera or a videofile will be used. 2) Depending on the previous parameter either the camera id, or the path to a video file is expected here. 3) optional argument, if specified the output will be saved under a specified filename.

Please, note that video_input.cpp is using the old style of computing features, so the only compatible model is the flandmark_model.xml. If you want to use the new models (including the 68 landmarks CDPM and FDPM), you need to modify the code as is shown in static_input.cpp.

sarmadm commented 7 years ago

I'm using these parameters but it is not working , could you please show me where I'm wrong ?

tofi@tofi:~/clandmark/build/examples$ ./video_input haarcascade_frontalface_alt.xml flandmark_model.xml { cam } [ output | 0 ] [ output_file ]

Couldn't load the haar cascade. Exiting... 0: command not found

uricamic commented 7 years ago

Instead of haarcascade_frontalface_alt.xml, use the path to a folder containing this file and end the path by "/" (so for example if the haarcascade_frontalface_alt.xml is in the current folder, use "./".

don't use brackets for the last few arguments. It should look like this (if the haarcascade_frontalface_alt.xml is in the current folder):

./video_input ./ cam 0 output_file.avi

ghost commented 7 years ago

I have a similar problem: I compiled the static_input in the Release mode and have the static_input.exe in the Build\examples\Release folder. This folder also has the haarcascade_frontalface_alt.xml and flandmark_model.xml as well as the face.jpg that comes with the download. I am trying to execute but it is not accepting the inputs and keeps saying Usage: static_input [] I am on a Windows 7 machine Here is what I enter: ~\Build\example\Release>static_input flandmark_model.xml face.jpg outputface.jpg Don't understand what I am doing wrong? Help is appreciated. Thanks

uricamic commented 7 years ago

Hi @PVNathan,

it seems there is a wrong usage printout in the static_input.cpp. The correct usage is as follows: Usage: static_input <path_to_haarcascade> <flandmark_model.xml> <input_image> [<output_image>] That is, you should just add the path to the folder (ending by a slash) containing the haarcascade_frontalface_alt.xml as the fisrt argument, the rest should be just fine: ~\Build\example\Release>static_input .\ flandmark_model.xml face.jpg outputface.jpg

ghost commented 7 years ago

Hey thanks, it works! I tested the video_input with webcam and its a nice model. Thanks for sharing it as open source. I do have a question about cases where I tilt my head at an angle or when one side is more in the picture than the other, basically when its not absolutely frontal anymore. Clandmark stops detecting at those locations. I have some idea that this is because of how it was trained. Is that true? How can I train a detector to get most of the faces i.e. should I retrain with all kinds of faces (frontal, profile etc.) or should i have separate models where if the frontal model doesn't find a face we apply a profile model? Is that a doable thing with clandmark? Thanks really appreciate your response.

uricamic commented 7 years ago

Hi @PVNathan,

actually that's because that example is using only the frontal face detector, as is available in OpenCV. We were learning the full yaw range (i.e. negative profiles to profiles) using a commercial face detector, which was detecting faces in this full range.

It is possible to use OpenCV profile cascades and combine two face detectors to provide an input for the CLandmark library. However, I did not find time to implement this yet.

ghost commented 7 years ago

Got it. Thanks.

sarmadm commented 7 years ago

Could you please share the video_input with webcam command . I did it like this but it is not working where is my error ?

tofi@tofi:~/clandmark/build/examples$ ./video_input .\ flandmark_model.xml cam 0
DEBUG Couldn't load the haar cascade. Exiting...

uricamic commented 7 years ago

Hi @sarmadm,

seems like the Haarcascade (haarcscade_frontalface_alt.xml, to be more precise) was not found in the specified folder .\. Please check that you have it there.

I am also not sure if the combined slashes in path will work. Maybe you should try rather this call: tofi@tofi:~/clandmark/build/examples$ ./video_input ./ flandmark_model.xml cam 0