这个框架中的人脸识别是如何完成的?文档指出它是框架的一部分。
人脸检测和识别
然而,目前并不清楚有哪些类/方法可以让我们实现人脸识别。我找到的最相关的东西是VNFaceObservation
,但它缺乏重要细节。
这更像是一个手动过程,我们必须以某种方式包含我们自己学习到的模型吗?如果是这样,怎么做?
虽然从WWDC视频中可以看出他们似乎在使用深度学习,但视觉框架的技术细节目前尚不清楚。
以下是一些用于在图像中定位眼睛的示例代码:
let request = VNDetectFaceLandmarksRequest()
let handler = VNImageRequestHandler(cvPixelBuffer: buffer, orientation: orientation)
try! handler.perform([request])
guard let face = request.results?.first as? VNFaceObservation,
let leftEye = face.landmarks?.leftEye else { return }
let box = face.boundingBox
let points = (0..<landmark.pointCount).map({ i in
let point = landmark.point(at: i)
let x = box.minX + box.width * CGFloat(point.x)
let y = 1 - (box.minY + box.height * CGFloat(point.y))
return CGPoint(x: x, y: y)
})
这将会给你返回一些点,你可以在WWDC视频中看到它们链接在一起,如下所示:
如果文档还没有更新,您可能需要观看WWDC视频,否则Xcode自动完成将是您最好的朋友。
Core ML是一个不同的东西。它并不专门针对面部。您可以使用自己的模型并预测任何您想要的内容。因此,如果您有一个人脸识别模型,请使用它!Vision框架通过VNCoreMLModel支持CoreML模型。