视觉框架(iOS):VNDetectFaceLandmarksRequest 和 VNDetectFaceRectanglesRequest 有什么不同?

问题描述 投票:0回答:1

您可以使用两种不同的请求通过 iOS 视觉框架执行人脸检测任务:

VNDetectFaceLandmarksRequest
VNDetectFaceRectanglesRequest
。它们都返回一组
VNFaceObservation
,每个检测到的人脸对应一个。
VNFaceObservation
有多种可选属性,包括
boundingBox
landmarks
。然后,地标对象还包括可选属性,如
nose
innerLips
leftEye
等。

两种不同的 Vision 请求执行人脸检测的方式是否有所不同?

看起来

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 apple-vision
1个回答
2
投票
  • VNDetectFaceRectanglesRequest
    是一种更轻量级的查找面部矩形的操作
  • VNDetectFaceLandmarksRequest
    是一个较重的操作,也可以帮助定位脸部的标志点
© www.soinside.com 2019 - 2024. All rights reserved.