【发布时间】:2021-05-27 18:43:39
【问题描述】:
有两种不同的请求可用于使用 iOS 视觉框架执行人脸检测任务:VNDetectFaceLandmarksRequest 和 VNDetectFaceRectanglesRequest。它们都返回一个VNFaceObservation 的数组,每个检测到的人脸一个。 VNFaceObservation 有多种可选属性,包括boundingBox 和landmarks。然后,landmarks 对象还包括可选属性,例如 nose、innerLips、leftEye 等。
这两种不同的视觉请求在执行人脸检测方面是否有所不同?
似乎VNDetectFaceRectanglesRequest 只找到了一个边界框(可能还有一些其他属性),但没有找到任何地标。另一方面,VNDetectFaceLandmarksRequest 似乎找到了边界框和地标。
是否存在一种请求类型会找到面孔而另一种不会找到面孔的情况? VNDetectFaceLandmarksRequest 优于 VNDetectFaceRectanglesRequest,还是后者可能在性能或可靠性方面有优势?
下面是如何使用这两个 Vision 请求的示例代码:
let faceLandmarkRequest = VNDetectFaceLandmarksRequest()
let faceRectangleRequest = VNDetectFaceRectanglesRequest()
let requestHandler = VNImageRequestHandler(ciImage: image, options: [:])
try requestHandler.perform([faceRectangleRequest, faceLandmarkRequest])
if let rectangleResults = faceRectangleRequest.results as? [VNFaceObservation] {
let boundingBox1 = rectangleResults.first?.boundingBox //this is an optional type
}
if let landmarkResults = faceLandmarkRequest.results as? [VNFaceObservation] {
let boundingBox2 = landmarkResults.first?.boundingBox //this is an optional type
let landmarks = landmarkResults.first?.landmarks //this is an optional type
}
【问题讨论】:
标签: ios swift machine-learning face-detection vision