これまでVisionでは顔の検出はできても、マスクをつけた顔は検知できなかった。
僕はそれを逆手にとって、マスク未着用検知をしたりしました(Visionが反応するということはマスクをつけていない)。
2021年のiOS15バージョンから、マスクをつけた顔も検出できるようになった。
顔を検出する最小構成は以下。
let faceDetectionRequest = VNDetectFaceRectanglesRequest()
let handler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, orientation: .leftMirrored, options: [:])
do {
try handler.perform([faceDetectionRequest])
guard let faceObservations = faceDetectionRequest.results as? [VNFaceObservation] else { return }
} catch {
print("Vision error: \(error.localizedDescription)")
}
マスクをつけた顔が検出できるのは、VNDetectFaceRectanglesRequestRevision3から。
let faceDetectionRequest = VNDetectFaceRectanglesRequest()
if #available(iOS 15.0, *) {
faceDetectionRequest.revision = VNDetectFaceRectanglesRequestRevision3
} else {
// Fallback on earlier versions
}