Azure AI 비전 사용자 지정 모델을 사용하여 이미지 분류
Azure AI 비전을 사용하면 사용자 지정 모델을 학습하여 지정한 레이블로 개체를 분류하고 검색할 수 있습니다. 이 랩에서는 과일 이미지를 분류하기 위한 사용자 지정 이미지 분류 모델을 빌드해 보겠습니다.
이 과정용 리포지토리 복제
이 랩에서 작업 중인 환경에 아직 Azure AI 비전 코드 리포지토리를 복제하지 않은 경우 다음 단계에 따라 복제합니다. 리포지토리를 복제한 경우에는 Visual Studio Code에서 복제한 폴더를 엽니다.
- Visual Studio Code 시작
- 팔레트를 열고(Shift+Ctrl+P) Git: Clone 명령을 실행하여
https://github.com/MicrosoftLearning/mslearn-ai-vision
리포지토리를 로컬 폴더(아무 폴더나 관계없음)에 복제합니다. - 리포지토리가 복제되면 Visual Studio Code에서 폴더를 엽니다.
-
리포지토리의 C# 코드 프로젝트를 지원하는 추가 파일이 설치되는 동안 기다립니다.
참고: 빌드 및 디버깅에 필요한 자산을 추가하라는 메시지가 표시되면 나중에를 선택합니다. 폴더에서 Azure 함수 프로젝트를 발견했습니다라는 메시지가 표시되면 해당 메시지를 안전하게 닫을 수 있습니다.
Azure 리소스 프로비전
구독에 아직 없는 경우 Azure AI 서비스 리소스를 프로비전해야 합니다.
https://portal.azure.com
의 Azure Portal을 열고 Azure 구독과 연관된 Microsoft 계정을 사용하여 로그인합니다.- 상단 검색 창에서 Azure AI 서비스를 검색하고 Azure AI 서비스를 선택한 후 다음 설정을 사용하여 Azure AI 서비스 다중 서비스 계정 리소스를 만듭니다.
- 구독: ‘Azure 구독’
- 리소스 그룹: 리소스 그룹 선택 또는 만들기(제한된 구독을 사용 중이라면 새 리소스 그룹을 만들 권한이 없을 수도 있으므로 제공된 리소스 그룹 사용)**
- 지역: 미국 동부, 서유럽, 미국 서부 2 중에서 선택*
- 이름: 고유 이름 입력
- 가격 책정 계층: 표준 S0
*Azure AI 비전 4.0 사용자 지정 모델 태그는 현재 이 지역에서만 사용할 수 있습니다.
- 필요한 확인란을 선택하고 리소스를 만듭니다.
학습 이미지를 저장하려면 스토리지 계정도 필요합니다.
- Azure Portal에서 스토리지 계정을 검색하여 선택하고 다음 설정을 사용하여 새 스토리지 계정을 만듭니다.
- 구독: ‘Azure 구독’
- 리소스 그룹: Azure AI Service 리소스를 만든 것과 동일한 리소스 그룹을 선택합니다.
- 스토리지 계정 이름: customclassifySUFFIX
- 참고: 리소스 이름이 전역적으로 고유하도록
SUFFIX
토큰을 이니셜이나 다른 값으로 바꿉니다.
- 참고: 리소스 이름이 전역적으로 고유하도록
- 지역: Azure AI Service 리소스에 사용한 것과 동일한 지역을 선택합니다.
- 기본 서비스: Azure Blob Storage 또는 Azure Data Lake Storage Gen 2
- 기본 워크로드: 기타
- 성능: 표준
- 중복도: LRS(로컬 중복 스토리지)
- 스토리지 계정이 만들어지는 동안 Visual Studio Code로 이동하여 Labfiles/02-image-classification 폴더를 확장합니다.
- 해당 폴더에서 replace.ps1을 선택하고 코드를 검토합니다. 이후 단계에서 사용하는 JSON 파일(COCO 파일)의 자리 표시자에 대한 스토리지 계정 이름이 바뀌는 것을 확인할 수 있습니다. 파일의 첫 번째 줄에만 자리 표시자를 스토리지 계정 이름으로 바꿉니다. 파일을 저장합니다.
-
02-image-classification 폴더를 마우스 오른쪽 단추로 클릭하고 통합 터미널을 엽니다. 다음 명령을 실행합니다.
./replace.ps1
- COCO 파일을 검토하여 스토리지 계정 이름이 있는지 확인할 수 있습니다. training-images/training_labels.json을 선택하고 처음 몇 개의 항목을 확인합니다. absolute_url 필드에 “https://myStorage.blob.core.windows.net/fruit/… 과 유사한 내용이 표시되어야 합니다. 예상된 변경 내용이 표시되지 않으면 PowerShell 스크립트에서 첫 번째 자리 표시자만 업데이트했는지 확인합니다.
- JSON 및 PowerShell 파일을 모두 닫고 브라우저 창으로 돌아갑니다.
- 스토리지 계정이 완료되어야 합니다. 스토리지 계정으로 이동합니다.
- 스토리지 계정에 대한 공용 액세스를 사용하도록 설정합니다. 왼쪽 창에서 설정 그룹의 구성으로 이동하여 Blob 익명 액세스 허용을 사용하도록 설정합니다. 저장을 선택합니다.
-
왼쪽 창의 데이터 스토리지에서 컨테이너를 선택하고
fruit
라는 이름의 컨테이너를 새로 만든 다음 익명 액세스 수준을 컨테이너(컨테이너 및 블롭에 대한 익명 읽기 권한) 로 설정합니다.참고: 익명 액세스 수준이 사용하지 않도록 설정된 경우 브라우저 페이지를 새로 고침합니다.
fruit
(으)로 이동하여 업로드를 선택하고 Labfiles/02-image-classification/training-images에 있는 이미지(및 하나의 JSON 파일)를 해당 컨테이너에 업로드합니다.
사용자 지정 모델 학습 프로젝트 만들기
다음으로 Vision Studio에서 사용자 지정 이미지 분류를 위한 새 학습 프로젝트를 만듭니다.
- 웹 브라우저에서
https://portal.vision.cognitive.azure.com/
으로 이동하여 Azure AI 리소스를 만든 Microsoft 계정으로 로그인합니다. - 이미지로 모델 사용자 지정 타일(기본 보기에 표시되지 않는 경우 이미지 분석 탭에서 찾을 수 있음)을 선택합니다.
- 생성한 Azure AI 서비스 계정을 선택합니다.
- 프로젝트 상단에서 새 데이터 세트 추가를 선택합니다. 다음 설정을 사용하여 구성합니다.
- 데이터 세트 이름: training_images
- 모델 형식: 이미지 분류
- Azure Blob Storage 컨테이너 선택: 컨테이너 선택을 선택합니다.
- 구독: ‘Azure 구독’
- 스토리지 계정: 만든 스토리지 계정
- Blob 컨테이너: 과일
- “Vision Studio가 Blob Storage를 읽고 쓸 수 있도록 허용” 상자를 선택합니다.
- training_images 데이터 세트를 선택합니다.
프로젝트 만들기의 이 시점에서는 일반적으로 Azure ML 데이터 레이블 지정 프로젝트 만들기를 선택하고 이미지에 레이블을 지정하여 COCO 파일을 만듭니다. 시간이 있으면 이 방법을 시도해 보시기 바랍니다. 하지만 이 랩의 목적을 위해 우리는 이미 이미지에 레이블을 지정하고 결과 COCO 파일을 제공했습니다.
- COCO 파일 추가를 선택합니다.
- 드롭다운에서 Blob 컨테이너에서 COCO 파일 가져오기를 선택합니다.
fruit
라는 컨테이너를 이미 연결했으므로 Vision Studio는 해당 컨테이너에서 COCO 파일을 검색합니다. 드롭다운에서 training_labels.json을 선택하고 COCO 파일을 추가합니다.- 왼쪽의 사용자 지정 모델로 이동하여 새 모델 학습을 선택합니다. 다음 설정을 사용합니다.
- 모델 이름: classifyfruit
- 모델 형식: 이미지 분류
- 학습 데이터 세트 선택: training_images
- 나머지는 기본값으로 두고 모델 학습을 선택합니다.
학습에는 다소 시간이 걸릴 수 있습니다. 기본 예산은 최대 1시간이지만 이 작은 데이터 세트의 경우 일반적으로 그보다 훨씬 빠릅니다. 작업 상태가 성공이 될 때까지 몇 분마다 새로 고침 단추를 선택합니다. 모델을 선택합니다.
여기에서 학습 작업의 성과를 볼 수 있습니다. 학습된 모델의 정밀도와 정확도를 검토합니다.
사용자 지정 모델 테스트
모델이 학습되어 테스트할 준비가 되었습니다.
- 사용자 지정 모델 페이지 상단에서 시도를 선택합니다.
- 사용할 모델을 지정하는 드롭다운에서 classifyfruit 모델을 선택하고 02-image-classification\test-images 폴더를 찾습니다.
- 각 이미지를 선택하고 결과를 확인합니다. 전체 JSON 응답을 검사하려면 결과 상자에서 JSON 탭을 선택합니다.
리소스 정리
다른 학습 모듈을 위해 이 랩에서 만들어진 Azure 리소스를 사용하지 않는 경우 해당 리소스를 삭제하여 추가 요금이 발생하지 않도록 할 수 있습니다.
-
https://portal.azure.com
에서 Azure Portal을 열고 상단 검색 창에서 이 랩에서 만든 리소스를 검색합니다. -
리소스 페이지에서 삭제를 선택하고 지침에 따라 리소스를 삭제합니다. 또는 전체 리소스 그룹을 삭제하여 모든 리소스를 동시에 정리할 수 있습니다.