面部识别是如何内置到 Core ML 视觉框架中的

How is facial recognition built into Core ML vision framework

这个框架里面人脸识别具体是怎么做的?文档声明它是框架的一部分

Face Detection and Recognition

但是,尚不清楚哪个 classes/methods 允许我们这样做。我发现的最接近的是 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)
})

这将 return 你可以看到在 WWDC 视频中链接在一起的一些要点:

您可能想观看 WWDC video,直到他们改进文档。否则 Xcode 自动完成是你最好的朋友。

Core ML 是另一回事。它不是专门针对面部的。您可以使用自己的模型并预测任何您想要的。因此,如果您有人脸识别模型,那就去吧!视觉框架通过 VNCoreMLModel

对 CoreML 模型提供了一些支持