한국의 개발자들을 위한 Google Developers 국문 블로그입니다.
더욱 스마트한 영상 처리 앱 개발을 위하여 ML Kit에 얼굴 윤곽 기능이 추가됩니다
Wednesday, January 16, 2019
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는
신정규(MachineLearning GDE)
님이 참여해 주셨습니다>
작성자
: Christiaan Prins,
제품 관리자
영상 처리 앱을 개발하는 중이거나 개발할 생각이라면, ML Kit의 새로운 얼굴 윤곽 인식 기능이 마음에 드실 겁니다. ML Kit를 사용하면 컴퓨터 비전을 사용한 얼굴 인식과 같이, 많은 일반적인 머신러닝(ML) 사용 사례를 이용할 수 있습니다. 사진 속 인물의 머리에 모자를 어디에 씌울지 알 필요가 있으세요? 눈에 안경을 씌우고 싶으세요? 아니면 왼쪽 눈에 단안경을 씌워야 할 수도 있겠군요. ML Kit의 얼굴 인식 기능을 사용하면 모두 가능합니다. 이 게시물에서는 Android나 iOS에서 모두 더 나은 영상 처리 앱을 빌드할 수 있게 해주는 새로운 얼굴 윤곽 인식 기능을 다루겠습니다.
얼굴 윤곽 인식
이제는 몇 가지 구성 옵션만으로도 얼굴의 세부적인 윤곽을 인식할 수 있습니다. 얼굴 윤곽은 얼굴과 눈, 코, 입과 같은 공통적인 특징의 외형을 나타내는 100여 개의 점으로 구성된 집합입니다. 아래 이미지에서 이를 보실 수 있습니다. 피험자가 눈썹을 위로 들어 올릴 때 윤곽 점들도 그에 맞춰 움직입니다. 이런 점들은 고급 카메라 앱이 사용자의 얼굴에 대해 크리에이티브 필터와 아티스틱 렌즈를 설정하는 방식을 보여줍니다.
코드 몇 줄만 작성하면 이러한 점을 인식하는 얼굴 인식기를 설정할 수 있습니다.
lazy var vision = Vision.vision()
let options = VisionFaceDetectorOptions()
options.contourMode = .all
let faceDetector = vision.faceDetector(options: options)
윤곽 점을 실시간으로 업데이트할 수도 있습니다. 이상적인 프레임 속도를 달성하기 위해 얼굴 인식기는 기본적으로 fast 모드로 구성됩니다.
얼굴의 점을 인식할 준비가 되면 이미지나 버퍼를 ML Kit로 보내어 처리하세요.
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
}
}
}
그러면 ML Kit가 이미지와 같은 배율로 윤곽의 x 및 y 좌표로 구성된
점
배열을 제공합니다.
얼굴 특징부의 위치 인식
얼굴 인식기는 얼굴의 특색을 잘 드러내는 표지점을 인식할 수도 있습니다. 표지점은 코, 눈, 귀, 입과 같은 얼굴의 특징을 지칭하는 포괄적인 용어일 뿐입니다. 우리는 I/O에서 ML Kit를 출시한 이래로 그 성능을 극적으로 개선해왔습니다!
표지점을 인식하려면 다음과 같이 landmarkMode 옵션으로 얼굴 인식기를 구성하세요.
lazy var vision = Vision.vision()
let options = VisionFaceDetectorOptions()
options.landmarkMode = .all
let faceDetector = vision.faceDetector(options: options)
그런 다음, 이미지를 인식기로 전달해 인식된 표지점의 좌표를 받아 처리하세요.
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
}
}
}
여러분이 ML Kit를 사용하여 무엇을 만들지 정말 기대됩니다.
이런 새로운 기능을 사용해 더욱 스마트한 기능을 영상 처리 앱에 손쉽게 탑재할 수 있기를 바라겠습니다. ML Kit를 사용한 얼굴 인식에 대한 모든 내용을 알아보려면
iOS
또는
Android
에 대한 문서를 확인해 보세요. 즐거운 개발 되세요!
Contents
Android
Community
Web/Chrome
Cloud
ML/Tensorflow
Google Play
검색
Tag
AdMob
Android
App Bundle
Community
Flutter
gdg
Google Play
ML/Tensorflow
Web
Archive
2021
Mar
Feb
Jan
2020
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2019
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2018
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2017
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2015
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2014
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2012
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Mar
Feb
Jan
2011
Dec
Nov
Feed