Microsoft 얼굴인식 Face API 따라하기
|어제 거한 회식이 진행됐음에도 불구하고, 아이티유인들은 전혀 끄떡없이 자기 업무에
열정을 보이며 일을하고있습니다! 저 역시 오늘도 여러분께 유익한 정보를 쉽고 정확하게
전달하기 위해 짜잔~ 나타났습니다 (호호) 🙂
오늘은 Microsoft 얼굴인식이 가능한 Face API에 대하여 알려드리겠습니다^^
Microsoft 얼굴인식 Face API 따라하기
(출처 : Microsoft 웹사이트 )
마이크로소프트 클라우드 플랫폼인 애저에는 많은 서비스가 있는데요~!
그 중에서 인텔리전스 > Cognitive 서비스에는 텍스트나 음성을 듣고 어느 언어인지 인식하는 서비스,
음성을 텍스트로 변환하는 서비스, 텍스트의 문맥을 파악해서 주제를 감지하는 서비스, 사진에서 얼굴을
인식하는 서비스, 감정을 인식하는 서비스 등 다양한 서비스가 많습니다.
Cognitive 서비스를 자세히 보고싶으시면 클릭해주세요^_^~!
그런데.. 아쉽게도 언어 관련 부분은 아직 한국어가 지원 되지 않는 서비스가 있습니다. T^T
그래서 언어와 무관하게 마이크로소프트의 코그너티브 서비스를 경험해 볼 수 있는 얼굴인식 서비스를
알아보도록 하겠습니다.
※ 포스팅에 사용된 모든 이미지는 Microsoft 웹사이트, 1박2일 방송 캡처본을 사용했습니다.
세상에 공짜는 없으니 MS 애저의 얼굴인식 서비스는 가격이 얼마인지 볼까요?
( 출처 : Microsoft 웹사이트 ) – 자세한 내용은 이미지 클릭^.^!
Free Plan은 1달에 무려 30,000 건까지는 무료인데요! 상용서비스가 아닌 테스트나 개발단계에서 무료로
이용하는데는 문제 없을 것 같습니다.
그치만..! 무료 서비스는 분당 20건으로 제한이 있다는 점~ 참고하세요^^
Standard Plan은 1,000건 당 $1.5 이니, 상용화를 고려 중이라면 예상 건수로 비용을 잘 계산해 보시기 바랍니다.
얼굴인식 따라하기에서 제가 설명할 내용은 아래와 같습니다!
1.얼굴인식 맛보기
2.준비단계
3.샘플프로그램으로 테스트
4.Face API
이순서대로 알아보도록 하겠습니다.
1. 얼굴인식 맛보기
일단 한번 얼굴을 잘 인식하는지 확인해 보겠습니다.
우선 https://www.microsoft.com/cognitive-services/en-us/face-api 에 접속을 하게되면,
위 그림과 같이 확인이 가능합니다.
이미 샘플 이미지 사진이 있고 얼굴영역이 표시되어 있는데요 웹에 있는 사진으로 테스트하려면 Image URL 에
얼굴 사진이 있는 URL을 입력하고 을 클릭하거나, 을 클릭해서 로컬PC에 있는 이미지 사진을
선택하면 됩니다.
아래의 이미지는 제가 올려서 테스트한 원본 이미지와 얼굴인식 결과입니다!
3명 모두 잘 인식됐습니다.
인식 결과를 자세히 보시면 얼굴영역은 사각형으로 표시가 되고 눈, 코, 입은 점으로 표시되고 있습니다.
데프콘은 안경을 썼는데도 눈을 잘 찾았네요. (ㅎㅎㅎㅎㅎ)
인식결과 이미지 오른쪽을 보면 영문 텍스트들이 보입니다.
Detection Result:
3 faces detected
~~
“faceAttributes”: {
“age”: 30.7,
“gender”: “male”,
“headPose”: {
“roll”: -8,
“yaw”: 47.1,
“pitch”: 0
},
“smile”: 0.023,
“facialHair”: {
“moustache”: 0.6,
“beard”: 0.3,
“sideburns”: 0.2
},
“glasses”: “ReadingGlasses”
}
~~
“faceAttributes”: {
“age”: 26.7,
“gender”: “female”,
“headPose”: {
“roll”: -0.4,
“yaw”: 20.5,
“pitch”: 0
},
“smile”: 0.995,
“facialHair”: {
“moustache”: 0,
“beard”: 0,
“sideburns”: 0
},
“glasses”: “NoGlasses”
}
~~
“faceAttributes”: {
“age”: 32.8,
“gender”: “male”,
“headPose”: {
“roll”: -0.5,
“yaw”: 42.8,
“pitch”: 0
},
“smile”: 1,
“facialHair”: {
“moustache”: 0,
“beard”: 0,
“sideburns”: 0
},
“glasses”: “NoGlasses”
}
인식된 얼굴의 성별, 나이 등 상세 정보가 표시되는데요 너무 신기하네요 +_+
맛보기는 이 정도로 하고 본격적으로 Face API 테스트를 진행해 보겠습니다!
2. 준비단계
MS 애저 서비스를 이용하려면 Microsoft 계정이 있어야 하기 때문에 계정이 없으신 분들은 계정을 만들어주세요!
Microsoft 계정만들기 클릭 ^.^!
계정이 있으시거나 만들으셨다면! Face API 사용 신청을 해야 합니다.
코그너티브 서비스 Face API 페이지에 접속하겠습니다.
Face API 접속하기 클릭 ^.^!
( 출처 : Microsoft 웹사이트 )
“Get started for free” 버튼을 클릭하고 로그인을 하면 코그너티브 여러 서비스 중에서 체험할 서비스를
선택할 수 있으며, 스크롤을 좀 내리다보면 Face 가 있습니다.
( 출처 : Microsoft 웹사이트 )
이전 페이지가 face api 페이지여서 Face 가 디폴트로 선택되어 있을텐데요 (선택 안 되어 있으면 선택합니다.)
스크롤을 더 내려서 약관, 개인정보보호에 동의 후 “Subscribe”을 클릭해주세요!
Subscribe 을 클릭하면 이런 화면이 나옵니다.
( 출처 : Microsoft 웹사이트 )
로그인한 계정으로 이용중인 서비스가 표시되고, 서비스 이용을 위한 Key를 확인(Show 클릭) 할 수 있으며
다음에 이 화면을 확인하려면 코드너티브 서비스 페이지의 상단 “My account” 를 클릭하면 볼 수 있습니다.
( 출처 : Microsoft 웹사이트 )
“Show Quota”를 클릭하면 무료로 사용할 수 있는 건수와 사용한 건수가 얼마나 되는지 확인할 수 있습니다.
아직 한건도 테스트를 안해서 0건으로 나오네요~
“Show” 를 클릭해서 Key 값을 확인 합니다.
앞으로 테스트시에 사용해야 하는 값입니다.
이제 모든 준비는 끝났습니다.
테스트를 해 보겠습니다. >_<
3. 샘플 프로그램으로 테스트
코드너티브 서비스 페이지의 메뉴에서 Developers > SDKs 를 클릭하면
Microsoft ProjectOxford-ClientSDK 의 GitHub 페이지가 나옵니다.
( 출처 : Microsoft 웹사이트 )
( 출처 : github 웹사이트 )
코그너티브 서비스의 SDK 소스가 있는데, SDK가 궁금하신 분들은 직접 다운 받아서 확인해 보시기 바랍니다.
바로 테스트를 해 보실 분은 아래 FaceAPI-WPF-Samples 다운받기 클릭 ^.^! 을 누르셔서 샘플 프로그램을
다운로드 받으시기 바랍니다.
FaceAPI-WPF-Samples 다운받기 클릭 ^.^!
GitHub에서 다운 받은 소스 중에 Face > Windows > Sample-WPF 프로젝트를
컴파일한 실행파일입니다.
이 샘플 프로그램으로 얼굴인식 테스트를 해 보겠습니다.
다운로드 받은 파일의 압축을 풀어서 FaceAPI-WPF-Samples.exe 파일을 실행해주세요!
샘플 프로그램을 실행하면 Subscription Key를 입력하라고 나옵니다.
준비단계에서 Face API 사용 신청 한 후 화면에서 Show를 클릭해서 보여졌던 그 키를 입력하시면 됩니다.
(키 값을 다시 확인하려면 https://www.microsoft.com/cognitive-services/en-US/subscriptions 접속!
Key 1, Key 2 아무거나 사용해도 된답니다.^^~) 키 입력 후 “Save Key”를 클릭해서 저장합니다.
테스트 할 이미지 파일들은 제가 좋아하는 예능프로인 1박2일 멤버들의 얼굴 이미지 파일들입니다.
* Face Detection
프로그램의 좌측의 Select a scenario에서 Face Detection 를 선택하고 Choose Image 버튼을 클릭해서
PC에 저장된 얼굴 이미지 파일을 선택합니다. 이미지에 얼굴 영역이 표시되고 오른쪽에
성별, 나이, 미소, 안경타입이 표시됩니다.
차태현은 나이를 30살로 인식하네요^_^ㅎㅎ (신기)
1박2일 멤버들 얼굴 인식 결과를 한번 볼까요~?
김준호 35살
데프콘 33살
김종민 31살
정준영 23살
마지막 멤버인 제빵왕 김탁구~ 윤시윤은 무려 20살로 인식하네요.
연예인들이라서 관리를 잘 해서 젋게 인식하는가 해서 제 사진으로 테스트해 보니 저도 나이보다 훨씬 젊게
인식합니다.*>_<*
얼굴의 나이인식은 일부러 젊게 인식하는게 아닌가 하는 생각이 들기도 합니다. ㅎㅎ
* Face Find Similar
이번에는 유사한 얼굴을 찾아보겠습니다!
Select a scenario에서 Face Find Similar를 선택하고 Load Candidate Faces를 클릭해서 원본 이미지가 저장된
폴더를 선택하면 버튼 밑에 원본 이미지들이 표시됩니다.
Open Query Face를 클릭해서 유사한 얼굴을 찾고 싶은 이미지 파일을 선택하고,
선택한 이미지에서 얼굴 영역이 표시되고 Result의 Similar To 에 검색된 원본 이미지가 표시됩니다.
김종민 얼굴은 잘 찾았습니다.
전체 멤버에 대해서 멤버당 3개씩 테스트해 봤습니다.
Candidate Faces 입니다.
멤버별로 테스트한 결과입니다.
Results의 Similar To no one 은 얼굴은 못 찾았다는 표시입니다.
먼저 유부남이지만 여심을 사로잡는 차태현!~
가만히 있어도 그냥 웃긴 김준호 (ㅋㅋㅋㅋㅋ)
뭘해도 부담스러운 데프콘…
코요태에서 노래가 아닌 개그 담당이었던 김종민!
너무 말라서 잘생김이 묻히는 정준영..ㅠㅠ
제빵의 달인 잘생긴 윤시윤~~♡
총 18개 얼굴 사진에서 14개를 찾아서 성공률이 약 78% 입니다.
얼굴 표정이 다른 사진으로 테스트 한 것 치고는 꽤 괜찮은 인식률인 것 같습니다.
* Face Grouping
이번에는 유사한 얼굴을 그룹핑 해 보겠습니다.
Select a scenario에서 Face Grouping을 선택하고 Group 을 클릭해서 그룹핑할 이미지들이 저장된 폴더를
선택합니다. 한 사람당 3장씩 총 18장 사진인데, 그룹핑 결과는 김종민 3장, 윤시윤 2장, 정준영 2장 밖에
되지 않습니다. Detection, Find Similar는 인식이 잘 되더니, 그룹핑은 결과가 좋지 않네요..ㅜㅜ
* Face Identification
이번에는 한 사람에 대해서 여러 장의 사진을 등록하고 트레이닝 시켜서 이미지 파일에서 어떤 사람이 있는지
찾아보겠습니다. 먼저 PC에 폴더명을 1박2일 멤버 이름으로 하고 각 멤버 이름 폴더에 사진을 넣어 놓습니다.
Select a scenario – Face Identification 선택하고 Load PersonGroup을 클릭해서
멤버 이름별 폴더가 있는 상위 폴더를 선택합니다. (테스트 폴더 선택)
여기서 잠깐! 테스트를하다 보면 이런 메시지가 나오는 경우가 있습니다.
앞에서 잠깐 언급한 Face API 무료 테스트는 1달에 30,000건, 1분에 20건만 가능합니다.
Rate Limit is exceeded.는 1분에 20건을 초과했을때 발생이 되는데요!
이 메시지가 나오면 1분만 쉬었다가 다시 하면 됩니다.
1분 후에 다시 해도 동일한 메시지가 나오면 한번에 올리는 이미지 파일 수를 줄여서 올리시면 됩니다.
혹시 1달에 30,000건을 넘게 되면 Out of call volume quota. 메시지를 보게 될 것입니다.
이 메시지가 나왔는데 무료로 테스트 계속 하고 싶으시면 Microsoft 계정을 하나 더 만들고 Subscription Key를
새로 받아서 테스트 하시면 됩니다^^
다시 테스트를 진행하면 Load PersonGroup에서 폴더를 선택하면 선택한 폴더의 하위 폴더명으로 사진들이
등록되는데 폴더명을 멤버 이름으로 해서 각 멤버의 이름이 표시됩니다.
하단의 로그창을 보면 training process is Succeeded 라고 나오는데,
내가 등록한 이미지 파일에 얼굴을 인식해서 폴더명의 멤버 이름으로 훈련이 된 것 같습니다.
Choose Image를 클릭해서 검색할 이미지 파일을 선택합니다.
얼굴을 인식하고 검색된 멤버이름이 이미지의 얼굴 영역에 표시됩니다.
테스트해 본 이미지들의 결과입니다!
* Face Verification
이번에는 두 장의 사진에서 같은 사람인지를 확인해 보겠습니다!
Select a scenario – Face Verification을 선택하고 Choose Image 2개 버튼을 각각 클릭해서 이미지 파일을 선택 후
Verify를 클릭합니다. 데프콘의 안경 쓴 사진과 안 쓴 사진에 대해서 같다는 인식 결과가 나오며,
Verification 테스트할 때는 이미지 파일에 얼굴이 한 명만 있는 파일로 테스트를 해야 합니다.
※ 얼굴이 2명 이상이면 이런 경고창이 뜹니다! ※
다른 이미지파일들로 테스트를 해 봤습니다!
데프콘과 다르게 안경 쓴 김준호와 안 쓴 김준호를 다르다고 인식을 하네요..
차태현은 웃는 얼굴과 무표정 얼굴인데 같다고 인식합니다.
(역시 뭘해도 멋있는 사람은 인식도 잘되나 봅니다^_^)
김종민은 어떤 사진이든 잘 인식합니다.
Detection, Find Similar, Grouping, Identification, Verification 모든 테스트에 김종민은 인식률 100% 입니다.
MS가 좋아하는 얼굴인가 봅니다.ㅎㅎㅎㅎ
4. Face API
개발자라면 샘플프로그램으로 테스트하면서 MS 서버로 이미지를 전송하고, 얼굴인식 요청을 하는
API가 있을 거라고 생각했을 것입니다.
https://dev.projectoxford.ai/docs/services/563879b61984550e40cbbe8d 페이지에 접속하면
HTTP Rest 방식의 Face API 들을 확인할 수 있습니다.
각 API 마다 Open API Testing Console 버튼이 있는데
이 버튼을 클릭하면 브라우저에서 직접 API를 테스트해 볼 수 있습니다.
그리고 API 페이지 하단의 Code Samples 에서는 언어별로 샘플 소스를 확인할 수 있습니다.
API 중에서 Face Detect 를 테스트해 보겠습니다.
Face Detect API 페이지에서 Open API Testing Console 버튼을 클릭합니다.
Query Parameters의 returnFaceId는 결과에 FaceId을 출력할지 여부인데 true로 설정하고,
returnFaceLandmarks는 이미지에서 얼굴의 눈동자, 눈썹, 코, 입 위치의 상세 정보를 리턴할지 여부 인데
true로 설정을 합니다.
returnFaceAttributes는 성별, 나이 등 결과로 원하는 속성값을 콤마로 구분해서 입력 후
입력할 수 있는 값 age,gender,headPose,smile,facialHair,glasses 모두를 입력합니다.
Header의 Ocp-Apim-Subscription-Key 는 준비단계 에서 Face API 사용신청 한 후 화면에서 Show를 클릭해서
보여졌던 그 키를 입력합니다.
(https://www.microsoft.com/cognitive-services/en-US/subscriptions 페이지에서 Key 1, Key 2 아무거나 입력)
Request Body의 url에는 얼굴을 검출할 이미지 파일 URL을 입력하고, 하단에 Send 버튼을 클릭합니다.
API를 통한 Face Detect 결과입니다.
faceId 는 얼굴영역을 검출한 고유값으로 Find Similar, Identify API 에서 이용할 값입니다.
faceRectangle 은 이미지 파일에서 검출한 얼굴영역의 위치를 표시, faceLandmarks 는 얼굴영역에서
눈동자, 코, 입, 눈썹 위치 등 얼굴의 주요한 위치 27개 포인트를 표시,
faceAttributes 는 나이, 성별, 미소, 수염, 얼굴 방향, 안경타입을 표시합니다.
다른 API도 테스트하는 방법은 비슷합니다. 간단하게 Find Similar API를 살펴보겠습니다.
Find Similar API는 Query Parameter는 Face Detect API로 얼굴영역이 검출된 faceId 값을 입력하면 되고,
원본 이미지는 Face List API로 등록 후 faceListId에 설정하거나 Face Detect API로 등록한 faceId 값을 faceIds 의
배열로 입력하면 됩니다.
유사한 얼굴을 최대 몇 개 까지 찾을지는 maxNumOfCandidatesReturned 에 설정하면 됩니다.
Face API 로 개발하려면 API Document 페이지에서 각 API 별로 테스트를 먼저 해보면 도움이 많이 될 것 같습니다.
지금까지 Microsoft의 코그너티브 서비스중에 Face API 를 살펴봤는데요~
도움이 많이 되셨는지 모르겠네요^^~!
샘플 프로그램으로 테스트 해본 결과 얼굴인식을 일부러 회피하기 위한게 아니라면 자연스러운 얼굴일때는
꽤 만족할 만한 인식률을 보여줬습니다.
다만.. 아쉬운점이 있다면 속도가 느리다는거..ㅜㅜ
사이즈가 큰 파일로 테스트를 할 때 더 느린것을 보면 인식보다는 파일을 전송하는데 오래 걸리는 것 같습니다.
코그너티브 서버가 미국 서부에만 있어서 그런 것 같은데요~!
앞으로 아시아나 한국도 추가되면 속도는 많이 빨라질 것이라 생각합니다!
얼굴인식이 필요하면 마이크로소포트 코그너티브 서비스를 이용해 보는 것도 좋은 솔루션이 될 것 같습니다.
저번주부터 계속 장마가 시작된다고 예보가 되고 있지만..
오늘 장마가 온다더니.. 내일로 미뤄졌고 내일 온다더니 또 모레로 미뤄졌지만…!!!
그래도! 똑똑한 여러분들은 항상 3단 우산을 가방에 쏙~ 챙겨서
비싼 화장품을 이용한 화장과 정성들인 머리가 망가지지않게 우리 모두 대비합시다^_____^~~~!
얼굴 감정인식을 사용해 보려고 합니다. 안드로이드에서도 지원이 가능한것인가요? ai 관련하여 처음 개발이다 보니 궁금한점이 맞네요.