한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
더욱 스마트한 영상 처리 앱 개발을 위하여 ML Kit에 얼굴 윤곽 기능이 추가됩니다
2019년 1월 16일 수요일
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는
신정규(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
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed