1. 개요

오랜만에 다시 Azure AI입니다.

Custom Vision은 이미지 인식 서비스인데요.

자체 이미지 식별 모델을 만들고 배포할 수 있습니다.

 

2. Vision

Azure AI Service의 Vision 계열에는 여러 이미지 인식 서비스가 있습니다만,

그중 Computer Vision이라는 친구와

Custom Vision 두 개를 비교해 보겠습니다.

  Computer Vision Custom Vision
사용 방식 사전 학습된 모델을 바로 사용 사용자가 직접 모델을 학습
데이터 필요 불필요 필요
적용 예시 OCR, 객체 감지 특정 제품, 로고, 장비
학습 기능 없음 있음
배포 옵션 클라우드 API로만 제공 API 또는 컨테이너

 

즉 정리하자면..

Computer Vision은 MS가 만든 모델을 토대로 이미지 분석을 진행하는 서비스고

Custom Vision은 사용자가 새롭게 만드는 모델이라고 볼 수 있습니다.

3. 진행 과정

Custom Vision 리소스 생성

Azure Portal에서 Custom Vision을 찾아주고 생성해 줍니다.

Azure Portal에서 Custom Vision 서비스를 Marketplace에서 선택하는 화면
Azure Portal에서 Custom Vision 검색 및 리소스 생성 화면

만들기 옵션은 보통 모두를 선택해 주고

가격은 가장 싼 Standard로 진행했습니다.

Azure Custom Vision 만들기 단계에서 구독, 리소스 그룹, 지역, 가격 책정 계층을 설정하는 예시
Custom Vision 만들기 옵션과 Standard 가격 계층 선택 화면

배포는 의외로 시간이 걸렸습니다 한 10분 정도

Custom Vision 리소스 배포 진행 중(약 10분) 화면

labuser21customvision001 은 학습(Training) 리소스인데 이미지 학습이나..모델 생성을 담당하고

labuser21customvision001-Prediction 은 예측(Prediction) 리소스고 학습된 모델을 배포하거나 API 호출용으로 사용합니다.

Azure 리소스 그룹 내 Custom Vision 및 Prediction 리소스가 함께 생성된 모습
.

리소스 목록에서 학습용 리소스(labuser21customvision001)를 클릭하면 아래와 같은 화면이 표시됩니다.

Custom Vision 포털 링크를 열면

새 프로젝트를 생성하고, 이미지를 업로드하여 학습을 진행할 수 있습니다.

.


이미지 학습 및 테스트

Custom Vision Portal입니다.

Upload Images : 이미지를 업로드하고 태그 지정

Train : 라벨링 된 이미지를 이용해 모델 학습

Evaluate : 학습된 모델 성능을 테스트 및 API 호출로 확인

 

Sign In 버튼을 클릭하여 Azure 계정으로 로그인합니다.

로그인하면 앞서 만든 학습 리소스와 예측 리소스가 자동으로 연동됩니다

Custom Vision 포털에서 새 프로젝트 생성 화면
Azure Custom Vision Portal

처음 접속한 경우 프로젝트가 없으므로 [New Project] 버튼을 클릭합니다.

.

Custom Vision에서는 학습용 이미지가 반드시 필요한데요

이 테스트 당시 중식이 당겼으므로...
짬뽕과 짜장면 이미지 분류 모델로 학습시켜 보겠습니다.

 

 

각 클래스별로 폴더를 구분하여 저장해야 하고 폴더 내 이미지 수는 최소 10장 이상이어야 된답니다.

.

 

이미지 처리 유형

Classification는 이미지 전체를 한 범주로 분류할 것인지?
Object Detection는 이미지 내 여러 객체의 위치 감지할 것인지? 차이입니다.

 

Classification Types은 

Multilabel: 한 이미지에 여러 태그 지정 가능
Multiclass: 한 이미지에 하나의 태그만 지정할 것인지 정의입니다.

 

Domain이 좀 중요한데요

모델이 학습할 데이터의 특성을 선택하는 거라

지금은 중식 데이터니 Food로 정의해 줍니다.

도메인의 종류가 더 늘어날.. 것이라고 합니다.

학습 이미지 업로드 단계
.

프로젝트가 생성되면 Training Images 탭으로 이동합니다

아직 업로드된 이미지가 없으므로 화면 중앙의 [Add images] 버튼을 클릭합니다.

.

이미지는 JPG, PNG, BMP 형식이 가능하고 한 장당 최대 6mb까지 업로드가 가능합니다

다만 좀 서러운 게 각 이미지 그룹에 대해 태그를 지정할 때는 무조건 영어로 해야 합니다

학습 이미지 업로드 단계
.

저는 18개의 짜장면을 업로드했고...짬뽕도 업로드해 주었습니다.

업로드가 완료되면 우측 상단에 Train을 클릭해 줍니다.

 

.
.

학습을 진행해 줍니다.

저는 탕수육까지 추가했습니다.

.

학습이 완료된 Iteration(반복 학습 버전)이 왼쪽 목록에 표시되었는데요
Food 도메인을 사용하여 Multiclass 분류로 학습되었습니다.

Precision (정밀도): 90.0% 예측이 맞다고 판단된 것 중 실제로 맞은 비율

Recall (재현율): 90.0% 실제로 맞는 데이터 중 모델이 맞게 예측한 비율

AP (Average Precision): 99.1% 전체 클래스의 정밀도 평균 지표

 

또한 

tangsuyuk 클래스는 이미지 수가 적어(8장) 재현율이 낮게 나타났고

jajangmyeon, jjambbong 클래스는 균형 잡힌 결과를 보였는데요

데이터의 불균형이 모델 성능에 큰 영향을 끼치다 보니

태그별 이미지 수는 균등하게 맞추는 것이 좋다고 합니다.

 

 

모델 학습 결과 분석 화면
.

학습 완료 후 Quick Test도 사용할 수 있습니다.

.

짬뽕 이미지를 업로드했을 때 jjambbong 클래스의 비율이 높게 나타났고

Quick Test 실행 화면
.

의외로 짬짜면은 쉽지 않나 봅니다.

.


모델 배포

Performance 탭 상단의 Publish 버튼을 클릭하고
배포 창이 열리면 다음 항목을 입력합니다.

Model name 배포할 모델 이름 
Prediction resource 예측 리소스 선택

 

Prediction 리소스는 학습 리소스와 반드시 같은 Region에 있어야 합니다.

.
.

배포가 완료되면 상단의 Prediction URL 항목이 활성화됩니다.
이 URL을 통해 REST API 호출로 이미지를 전송하면,
모델이 예측 결과를 JSON 형태로 반환해 주는 겁니다.

.
.


이로써 Custom Vision을 이용한 이미지 분류 모델의 생성 → 학습 → 테스트 → 배포 전체 흐름을 살펴보았는데요

 

실습 결과를 보면,
짜장면 이미지 위에 맛없는 오이 고명이 올라간 경우, 또는 클래스별로 학습에 사용된 이미지 수가 불균형한 경우
모델의 정확도가 크게 떨어지는 현상을 확인할 수가 있었습니다.

 

이건 Custom Vision이 단순히 픽셀 패턴을 기반으로 학습하기 때문인데요
즉, 학습 데이터의 구도나 조명, 배경, 구성 요소 등등이 달라지면
모델이 이를 전혀 다른 클래스로 인식할 수 있습니다.

 

따라서 실제 프로젝트에서는

각 클래스별로 충분하고 균형 잡힌 데이터 수집,

가능한 다양한 환경(조명·각도·배경)의 이미지 확보,

잘못된 라벨(오라벨) 검증

 

이 세 가지가 모델의 성능을 결정짓는 핵심 요소가 될 것입니다...!!


<참고 자료>

Custom Vision이란? - Azure AI services | Microsoft Learn

 

Custom Vision이란? - Azure AI services

Azure AI Custom Vision 서비스를 사용하여 개체를 감지하거나 이미지를 분류하는 사용자 지정 AI 모델을 빌드하는 방법을 알아봅니다.

learn.microsoft.com

컴퓨터 비전을 위한 기계 학습 - Training | Microsoft Learn

 

컴퓨터 비전을 위한 기계 학습 - Training

컴퓨터 비전을 위한 기계 학습 이해

learn.microsoft.com

 

반응형

+ Recent posts