Estoy tratando de obtener el cabeceo / guiñada / balanceo de una cara en una imagen usando el marco Vision, pero siempre obtengo 0 para todos los valores. Las imágenes deben ser muy fáciles de procesar (principalmente retratos prospectivos).
Obtuve con éxito estos valores usando Amazon Rekognition en ellos, por lo que las imágenes en sí no son el problema. (Necesito hacer un lote de aproximadamente 70,000, por lo que usar rekogniton para todos será costoso y lento).
Este es el código de la solicitud:
let faceLandmarksRequest = VNDetectFaceRectanglesRequest(completionHandler: handleRectangles) let requestHandler = VNImageRequestHandler(cgImage: cgImage!, orientation: CGImagePropertyOrientation.right ,options: [:]) do { try requestHandler.perform([faceLandmarksRequest]) } catch { print(error) }Y aquí está el código del controlador:
func handleRectangles(request: VNRequest, errror: Error?) { guard let observations = request.results as? [VNFaceObservation] else { fatalError("unexpected result type!") } for face in observations { print("\(face.yaw))") // always zero } }Cualquier ayuda apreciada :)
En realidad, el alabeo y la guiñada funcionan, pero por ahora son muy toscos. Siempre obtiene cero porque el balanceo y la guiñada (a partir de 2019) son un conjunto discreto de 6 o 7 valores en lugar de un rango continuo de valores con la orientación exacta de la cara.
Pruebe con una cara "más girada".