Christiaan Prins, Gerente de produtos

Se você está desenvolvendo ou planejando desenvolver um aplicativo visual, você curtirá a nova detecção de contorno do ML Kit. Com esse kit, você pode aproveitar muitos casos de uso de aprendizado de máquina (ML), como detectar rostos usando a visão computacional. Não sabe a posição na qual colocar o chapéu na cabeça? Quer colocar óculos? Ou talvez um monóculo no olho esquerdo. Tudo isso é possível com o reconhecimento facial doML Kit. Nesta postagem, falaremos sobre o novo recurso de contorno de face que permite criar aplicativos visuais mais interessantes para Android e iOS.

Detectar contornos de face

Com apenas algumas opções de configuração, você agora pode detectar contornos detalhados de um rosto. Os contornos são um conjunto de mais de 100 pontos, que esboçam a face e os traços comuns, como os olhos, o nariz e a boca. Veja um exemplo na imagem abaixo. Conforme a pessoa eleva as sobrancelhas, os pontos de contorno se movem para espelhar os traços. Aplicativos avançados de câmera usam esses pontos para aplicar filtros criativos e lentes artísticas ao rosto de um usuário.

Leva só algumas linhas de código para configurar o detector facial para identificar esses pontos.
lazy var vision = Vision.vision()
let options = VisionFaceDetectorOptions()
options.contourMode = .all
let faceDetector = vision.faceDetector(options: options)
Os pontos de contorno também podem atualizar em tempo real. Por padrão, o detector facial é configurado com o modo fast para oferecer uma taxa de quadro ideal.
Quando estiver pronto para detectar pontos faciais, envie uma imagem ou um buffer para o ML Kit processar.
faceDetector.process(visionImage) { faces, error in
  guard error == nil, let faces = faces, !faces.isEmpty else { return }
  for face in faces {
    if let faceContour = face.contour(ofType: .face) {
      for point in faceContour.points {
        print(point.x) // the x coordinate
        print(point.y) // the y coordinate
      }
   }
}      
Em seguida, o ML Kit fornecerá uma matriz dos pontos, que são as coordenadas x e y dos contornos na mesma escala da imagem.

Detectar o local dos traços faciais

O detector facial também pode identificar traços característicos de rostos. Um traço característico é um termo geral para traços faciais, como o nariz, os olhos, as orelhas e a boca. Melhoramos drasticamente seu desempenho desde o lançamento do ML Kit no I/O!
Para detectar traços característicos, configure o detector facial com a opção landmarkMode:
lazy var vision = Vision.vision()
let options = VisionFaceDetectorOptions()
options.landmarkMode = .all
let faceDetector = vision.faceDetector(options: options)
Em seguida, passe a imagem para o detector a fim de receber e processar as coordenadas dos traços característicos identificados.
faceDetector.process(visionImage) { faces, error in
  guard error == nil, let faces = faces, !faces.isEmpty else { return }
  for face in faces {
    // check for the presence of a left eye
    if let leftEye = face.landmark(ofType: .leftEye) {
      // TODO: put a monocle over the eye [monocle emoji]
      print(leftEye.position.x) // the x coordinate
      print(leftEye.position.y) // the y coordinate
    }
  }
}

Estamos ansiosos para ver o que você criará com o ML Kit

Esperamos que esses novos recursos capacitem você para criar com facilidade recursos mais inteligentes para aplicativos visuais. Confira nossas documentações para iOS ou Android para saber tudo sobre o reconhecimento facial do ML Kit. Agora é só partir para a diversão e começar a programar!