다음을 통해 공유


얼굴 인식 모델 지정

주의

Face 서비스 액세스는 책임 있는 AI 원칙을 지원하기 위해 자격 및 사용 기준에 따라 제한됩니다. Face 서비스는 Microsoft 관리 고객 및 파트너만 사용할 수 있습니다. 얼굴 인식 접수 양식을 사용하여 액세스를 적용합니다. 자세한 내용은 얼굴 제한 액세스 페이지를 참조하세요.

이 가이드에서는 Azure AI Face 서비스를 사용하여 얼굴 감지, 식별 및 유사성 검색을 위한 얼굴 인식 모델을 지정하는 방법을 보여 줍니다.

Face 서비스는 기계 학습 모델을 사용하여 이미지에 보이는 인간의 얼굴에 대한 작업을 수행합니다. 사용자 피드백에 따라 모델의 정확도를 지속적으로 향상시키고 연구를 진행하면서 이러한 향상된 기능을 모델 업데이트로 제공합니다. 개발자는 자신의 사용 사례에 가장 적합한 모델을 선택하여 사용하려는 얼굴 인식 모델의 버전을 지정할 수 있습니다.

모델 호환성

Azure AI Face 서비스는 4가지 인식 모델을 제공합니다. 이러한 모델을 사용하여 만든 FaceList 또는 PersonGroup을 사용하는 고객에게 이전 버전과의 호환성을 보장하기 위해 recognition_01(2017년에 게시됨), recognition_02(2019년에 게시됨) 및 recognition_03(2020년에 게시됨) 모델이 계속 지원됩니다. FaceList 또는 PersonGroup은 항상 만들 때 사용한 인식 모델을 사용하며 새 얼굴이 추가되면 이 모델과 연결됩니다. 이는 생성 후 변경할 수 없으며, 고객은 FaceList 또는 PersonGroup에 해당하는 인식 모델을 사용해야 합니다.

나중에 편리한 시간에 인식 모델로 이동할 수 있지만 선택한 인식 모델을 사용하여 새 FaceList 및 PersonGroup을 만들어야 합니다.

recognition_04 모델(2021년에 게시됨)은 현재 사용할 수 있는 가장 정확한 모델입니다. 신규 고객인 경우 이 모델을 사용하는 것이 좋습니다. Recognition_04는 유사성 비교와 사람 일치 비교 모두에서 개선된 정확도를 제공합니다. Recognition_04는 얼굴 가리개(수술용 마스크, N95 마스크, 천 마스크)를 착용하고 있는 등록된 사용자에 대한 인식을 개선합니다. 이제 최신 detection_03 모델을 사용하여 등록된 사용자가 얼굴 가리개를 착용하고 있는지 여부를 감지하는 안전하고 원활한 사용자 환경을 빌드할 수 있습니다. 그런 다음, 최신 recognition_04 모델을 사용하여 해당 ID를 인식할 수 있습니다. 각 모델은 서로 독립적으로 작동하며, 한 모델에 설정된 신뢰도 임계값을 다른 인식 모델과 비교할 수 없습니다.

모델 충돌을 방지하면서 여러 Face 작업에서 선택한 모델을 지정하는 방법을 알아보려면 계속 읽어 보세요. 고급 사용자가 최신 모델로 전환해야 하는지 여부를 결정하려는 경우 여러 모델 평가 섹션으로 건너뜁니다. 현재 데이터 세트를 사용하여 새 모델을 평가하고 결과를 비교할 수 있습니다.

필수 조건

AI 얼굴 감지 및 식별의 개념에 대해 잘 알고 있어야 합니다. 그렇지 않은 경우 먼저 다음 가이드를 참조하세요.

지정된 모델을 사용하여 얼굴 감지

얼굴 감지는 사람 얼굴의 시각적 랜드마크를 식별하고 경계 상자 위치를 찾습니다. 또한 얼굴의 특징을 추출하여 최대 24시간 동안 임시로 보관하여 식별에 사용할 수 있습니다. 이 모든 정보가 한 얼굴의 표현을 형성합니다.

인식 모델은 얼굴 요소가 추출될 때 사용되므로 Detect 작업을 수행할 때 모델 버전을 지정할 수 있습니다.

검색 API를 사용하는 경우 recognitionModel 매개 변수를 사용하여 모델 버전을 할당합니다. 사용 가능한 값은

  • recognition_01
  • recognition_02
  • recognition_03
  • recognition_04

필요에 따라 returnRecognitionModel 매개 변수(기본값 false)를 지정하여 응답에서 recognitionModel을 반환할지 여부를 나타낼 수 있습니다. 따라서 검색 REST API에 대한 요청 URL은 다음과 같습니다.

https://westus.api.cognitive.microsoft.com/face/v1.0/detect?detectionModel={detectionModel}&recognitionModel={recognitionModel}&returnFaceId={returnFaceId}&returnFaceAttributes={returnFaceAttributes}&returnFaceLandmarks={returnFaceLandmarks}&returnRecognitionModel={returnRecognitionModel}&faceIdTimeToLive={faceIdTimeToLive}

클라이언트 라이브러리를 사용하는 경우 버전을 나타내는 문자열을 전달하여 recognitionModel 값을 할당할 수 있습니다. 할당되지 않은 상태로 두면 recognition_01의 기본 모델 버전이 사용됩니다. .NET 클라이언트 라이브러리에 대한 다음 코드 예제를 참조하세요.

string imageUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
var response = await faceClient.DetectAsync(new Uri(imageUrl), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: true, returnFaceLandmarks: true, returnRecognitionModel: true);
var faces = response.Value;

참고 항목

이후 단계에서 얼굴 인식 시나리오를 활성화하려면 returnFaceId 매개 변수를 true로 설정해야 합니다.

지정된 모델로 얼굴 식별

Face 서비스는 이미지에서 얼굴 데이터를 추출하여 이를 Person 개체(예: 사람 그룹 사람 얼굴 추가 API 호출을 통해) 및 여러 Person과 연결할 수 있습니다. 개체는 PersonGroup에 함께 저장될 수 있습니다. 그런 다음 새 얼굴을 PersonGroup(사람 그룹에서 식별 호출 사용)과 비교하고 해당 그룹 내에서 일치하는 사람을 식별할 수 있습니다.

PersonGroup은 모든 Person에 대해 하나의 고유한 인식 모델을 가져야 하며 그룹을 만들 때 recognitionModel 매개 변수를 사용하여 이를 지정할 수 있습니다(사람 그룹 만들기 또는 대규모 사람 그룹 만들기). 이 매개 변수를 지정하지 않으면 원래 recognition_01 모델이 사용됩니다. 그룹은 항상 생성된 인식 모델을 사용하며, 새 얼굴이 추가되면 이 모델과 연결됩니다. 그룹 생성 후에는 변경할 수 없습니다. PersonGroup이 어떤 모델로 구성되어 있는지 확인하려면 returnRecognitionModel 매개 변수가 true로 설정된 사람 그룹 가져오기 API를 사용합니다.

다음 .NET 코드 예제를 참조하세요.

// Create an empty PersonGroup with "recognition_04" model
string personGroupId = "mypersongroupid";
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My Person Group Name", ["recognitionModel"] = "recognition_04" }))))
{
    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    await httpClient.PutAsync($"{ENDPOINT}/face/v1.0/persongroups/{personGroupId}", content);
}

이 코드에서는 ID가 mypersongroupidPersonGroup이 생성되고, recognition_04 모델을 사용하여 얼굴 요소를 추출하도록 설정됩니다.

이에 따라, 검색 API를 통해 이 PersonGroup과 비교할 얼굴을 감지할 때 사용할 모델을 지정해야 합니다. 사용하는 모델은 항상 PersonGroup의 구성과 일치해야 합니다. 그렇지 않으면 호환되지 않는 모델로 인해 작업이 실패합니다.

사람 그룹에서 식별 API에는 변경된 사항이 없습니다. 검색 시 모델 버전만 지정하면 됩니다.

지정된 모델과 유사한 얼굴 찾기

유사성 검색을 위한 인식 모델을 지정할 수도 있습니다. 얼굴 목록 만들기 API 또는 대규모 얼굴 목록 만들기를 사용하여 FaceList를 만들 때 모델 버전을 recognitionModel로 할당할 수 있습니다. 이 매개 변수를 지정하지 않으면 recognition_01 모델이 기본적으로 사용됩니다. FaceList는 항상 생성 시 사용된 인식 모델을 사용하고, 새 얼굴은 목록에 추가될 때 이 모델에 연결됩니다. 생성 후에는 이를 변경할 수 없습니다. FaceList가 어떤 모델로 구성되어 있는지 확인하려면 returnRecognitionModel 매개 변수가 true로 설정된 얼굴 목록 가져오기 API를 사용합니다.

다음 .NET 코드 예제를 참조하세요.

using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My face collection", ["recognitionModel"] = "recognition_04" }))))
{
    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    await httpClient.PutAsync($"{ENDPOINT}/face/v1.0/facelists/{faceListId}", content);
}

이 코드는 요소 추출 시 recognition_04 모델을 사용하여 My face collection이라는 FaceList를 만듭니다. 이 FaceList에서 새로 검색된 얼굴과 유사한 얼굴을 검색하면 해당 얼굴이 recognition_04 모델을 사용하여 검색되어야 합니다(검색). 이전 섹션과 마찬가지로 모델은 일관적이어야 합니다.

유사 찾기 API에는 변경 내용이 없습니다. 검색 시 모델 버전을 지정하기만 하면 됩니다.

지정된 모델로 얼굴 확인

얼굴 간 확인 API는 두 얼굴이 동일한 사람인지 확인합니다. Verify API에서 인식 모델과 관련된 변경 내용은 없지만 동일한 모델을 사용하여 검색된 얼굴만 비교할 수 있습니다.

여러 모델 평가

사용자 고유의 데이터에 대한 여러 인식 모델의 성능을 비교하려는 경우 다음을 수행해야 합니다.

  1. recognition_01, recognition_02, recognition_03recognition_04를 각각 사용하여 4개의 PersonGroup을 만듭니다.
  2. 이미지 데이터를 사용하여 얼굴을 감지하고 이러한 4개의 PersonGroup 내에 있는 Person에 등록합니다.
  3. 학습 개인 그룹 API를 사용하여 PersonGroup을 학습합니다.
  4. 4개의 PersonGroup 모두에 대해 사람 그룹에서 식별로 테스트하고 결과를 비교합니다.

일반적으로 신뢰도 임계값(얼굴을 식별하는 모델의 신뢰도를 결정하는 0과 1 사이의 값)을 지정하는 경우 모델마다 다른 임계값을 사용해야 할 수 있습니다. 한 모델의 임계값은 다른 모델과 공유되는 것이 아니며, 반드시 동일한 결과를 생성하는 것은 아닙니다.

다음 단계

이 문서에서는 다양한 Face 서비스 API와 함께 사용할 인식 모델을 지정하는 방법을 배웠습니다. 다음에는 얼굴 감지로 시작하는 빠른 시작을 진행하세요.