Merle314 / FacePoseEstimation

Estimat 3 degrees of freedom face angle
24 stars 5 forks source link

通过识别人脸角度对人脸图片进行筛选 #4

Closed SuperMisswei closed 5 years ago

SuperMisswei commented 6 years ago

您好,我想使用您的代码进行图片中人脸角度的识别,通过识别人脸角度来筛选自己需要的图片制作数据集。由于对代码不是很懂,因此在使用代码的过程中遇到一些问题:函数poseEstimation输出的三个参数是什么意思(我百度似乎是欧拉角),我在测试过程中发现它们在人脸垂直旋转时会发生较大差异,在水平旋转时几乎不变,我想知道您得到的角度是什么意思。如果您看到信息的话希望您能够帮助我一下,为我讲解一下您的代码。我的邮箱地址:weishaojie1995.com@qq.com。谢谢,因为看到中文的注释和明星图片,默认您是个Chinese boy。 @Merle314

Merle314 commented 6 years ago

你好,输出的是人脸三个自由度的角度。这个识别程序的原理就是使用dlib的人脸landmark检测器检测人脸68关键点,然后再根据标准关键的位置计算人脸三个自由的的角度。由于dlib库的这个检测器鲁棒性不是特别好,所以旋转角度太大的时候容易检测不到人脸,或者landmark坐标检测误差较大。你可以试一试选择角度小一点。

SuperMisswei commented 6 years ago

我有遇到过侧脸检测,检测不到人脸,我使用了你注释掉的这个代码后可以得出角度,但是他们两个得到的角度是不一样的,我不知道有什么区别。

------------------ 原始邮件 ------------------ 发件人: "Merle"notifications@github.com; 发送时间: 2018年8月7日(星期二) 下午3:25 收件人: "Merle314/FacePoseEstimation"FacePoseEstimation@noreply.github.com; 抄送: "风掠无影wsj"weishaojie1995.com@qq.com; "Author"author@noreply.github.com; 主题: Re: [Merle314/FacePoseEstimation] 通过识别人脸角度对人脸图片进行筛选 (#4)

你好,输出的是人脸三个自由度的角度。这个识别程序的原理就是使用dlib的人脸landmark检测器检测人脸68关键点,然后再根据标准关键的位置计算人脸三个自由的的角度。由于dlib库的这个检测器鲁棒性不是特别好,所以旋转角度太大的时候容易检测不到人脸,或者landmark坐标检测误差较大。你可以试一试选择角度小一点。

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

SuperMisswei commented 6 years ago

dets, scores, idx = detector.run(img, 1)

dets = [dlib.rectangle(left=0, top=0, right=img.shape[1], bottom=img.shape[0])]

就是这两行代码,有什么区别,得到的角度是不同的

Merle314 commented 6 years ago

第一个是先检测人脸,然后根据检测到的人脸位置再进行landmark检测;第二个就是不进行人脸检测,直接认为人脸位置是图像的左上角和右下角,然后根据这个坐标进行landmark检测。显然第二种方法会有比较大的误差。 @SuperMisswei