VNDetectFaceRectanglesRequest 总是为偏航/俯仰/滚动返回 0

Jon*_*ett 5 swift swift4

我正在尝试使用 Vision 框架获取图像中人脸的俯仰/偏航/滚动,但始终为所有值获取 0。图像应该很容易处理(主要是前瞻性肖像)。

我通过对它们使用 Amazon Rekognition 成功获得了这些值,因此图像本身不是问题。(我需要做一批大约 70,000 个,因此对它们使用 rekogniton 会变得昂贵且缓慢。)

这是请求代码:

let faceLandmarksRequest = VNDetectFaceRectanglesRequest(completionHandler: handleRectangles)

let requestHandler = VNImageRequestHandler(cgImage: cgImage!, orientation: CGImagePropertyOrientation.right ,options: [:])

do {
    try requestHandler.perform([faceLandmarksRequest])
} catch {
    print(error)
}
Run Code Online (Sandbox Code Playgroud)

这是处理程序代码:

func handleRectangles(request: VNRequest, errror: Error?) {

    guard let observations = request.results as? [VNFaceObservation] else {
        fatalError("unexpected result type!")
    }

    for face in observations {

        print("\(face.yaw))") // always zero

    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏:)

Pau*_*l B 2

实际上滚动和偏航是有效的,但目前它们还很粗糙。你总是得到零,因为滚动和偏航(截至 2019 年)是一组 6 或 7 个值的离散值,而不是具有精确面部方向的连续值范围。

尝试“旋转更多”的脸。