얼굴인식 최종.gif

그룹프로젝트 중 받아온 이미지로 얼굴인식을 하는 부분을 담당하게 되었습니다.

처음에는 어떻게 하나 고민을 많이 했었는데 역시나 애플인지 이미 제공해주는 프레임워크가 있었습니다.

CoreML과 Vision Framework였는데요, 그 중에서도 Vision Framework는 지금 하려는

얼굴인식 뿐만이 아니라 사각형, 바코드, 텍스트 등등 여러가지 기능을 기본적으로 제공하고 있었습니다.

개인적으로 경험해본 이후로의 생각은 프레임워크를 이용해서 인식시키는 작업은 그다지 어렵지 않았지만

결과로 나온 데이터를 사용자에게 어떻게 표현하고, 응용하는 부분이 고민되었습니다.

얼굴인식 Request 작성하기

얼굴인식을 위해서는 먼저 Request를 작성해야 합니다.

얼굴인식 부분에서는 VNDetectFaceRectangleRequest가 이를 담당하고 있습니다.

이후에 요청들을 만들고, 배열에 담아주고 요청을 perform하게 되면

request.results로 결과를 받아볼 수 있는 구조입니다.

VNDetectFaceRectangleRequest는 얼굴을 인식해서 얼굴 부분을 사각형의 bound 결과로 보여줍니다.

만약 이목구비까지 감지하고싶다면 VNDetectFaceLandmarksRequest를 정의해야합니다.

private lazy var faceDetectionRequest = VNDetectFaceRectanglesRequest(completionHandler: handleDetectedFaces)

컴플리션 핸들러도 등록되어 있는 것을 볼 수 있는데,

얼굴인식작업이 끝나고 나서 수행할 작업을 completionHandler로 넣어주면됩니다.

저같은 경우에는 사용자에게 얼굴인식된 부분을 노란색 사각형으로 표시해 주고 싶어서