유진의 코딩스토리

Azure Custom vision 실습 [이미지 분류 AI 모델] 본문

Azure 실습/Azure Custom Vision

Azure Custom vision 실습 [이미지 분류 AI 모델]

놀고먹는 유진 2024. 10. 29. 11:14

 

 

모델 학습 

오른쪽 상단에 학습 버튼 클릭 > 빠른 학습으로 진행

 

 

모델 학습 기다리는 중..

학습 결과 출력

순서대로 Precision, Recall, mAP학습오차를 보여준다.

 

테스트

Quick Test 클릭
Browse local files 클릭 > 테스트할 이미지 업로드

 

하단에 예측 결과가 출력

위 암석은 Basalt일 확률 59%, Highland일 확률 40%로 예측된다.

커스텀 비전으로 이미지 분류 AI 모델을 만들 때 각 이미지당 최소 5장 이상 학습시켜야 한다.

이미지 분류 AI 모델은 많은 데이터로 학습시킬수록 정확하게 동작하므로 예측결과가 좋지 않은 것은 학습 이미지 데이터가 10개도 안되어 학습이 제대로 이뤄지지 않은 것으로 판단.

 

 

 

Custom vision을 외부에서 활용하기

Azure의 Custom Vision은 Azure Portal과는 독립된 별도의 사이트에서 제공되는 서비스로 사용자가 만든 컴퓨터 비전 모델을 바로 확인할 수 있는 UI를 제공한다.

REST API 호출을 통해서 사용자가 만든 Custom Vision 모델을 외부 프로그램에서 활용할 수 있다.

 

 

https://www.customvision.ai

 

Custom Vision - Home

Upload Images Bring your own labeled images, or use Custom Vision to quickly add tags to any unlabeled images. Train Use your labeled images to teach Custom Vision the concepts you care about. Evaluate Use simple REST API calls to quickly tag images with y

www.customvision.ai

 

 

 

 

 

이미지 분류 서비스와 연동하기

 

 

 

방금 만든 모델을 Publish하여 외부에서 사용할 수 있도록 한다.

Publish Model에서 내가 만든 예측 리소스를 선택

 

Prediction URL 클릭

 

 

Publish가 완료되면 아래와 같이 ‘PUBLISHED’라는 표시가 나오고, Prediction URL 버튼이 활성화된다.

Prediction URL을 눌러서 나오는 빨간 네모 박스 속 내용을 뒤에서 사용하므로 복사!!

 

# Azure의 Custom Vision 라이브러리를 추가. 예측을 위하여 prediction을 포함
from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
# OpenAPI 스펙에 맞춰서 Authentication을 처리할 수 있도록 해주는 코드
from msrest.authentication import ApiKeyCredentials

# 사용자가 만든 AI 모델의 예측 기능을 사용하기 위한 endpoint 지정
prediction_endpoint = "https://5b037findcustomvision-prediction.cognitiveservices.azure.com"
# KEY 값 지정
prediction_key = "5BsUiDDPR87phDZYxd8OEE4EdYKGceEC5RcozoQ3OkLSPD5oazjPJQQJ99AJACPV0roXJ3w3AAAIACOGSFBw"
# 프로젝트 ID 지정
project_id = "daf82dde-ebd0-430d-bcdf-a69f922ef40b"
# 모델명 지정
model_name = "Iteration1"

# 앞에서 지정한 API KEY를 써서 커스텀 비전 모델을 사용할 클라이언트를 인증
credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})

# endpoint를 써서 클라이언트 등록
predictor = CustomVisionPredictionClient(endpoint=prediction_endpoint, credentials=credentials)

# 테스트 이미지를 Codespace workspace에 추가한 후 image_file 변수로 지정
image_file = "/workspaces/PyTorch_excersize/data/Highland/Crustal_Anorthosite_s71-42953.jpg"

# 테스트 이미지를 열고 모델에 적용해서 결과를 저장
with open(image_file, mode="rb") as image_data:
    results = predictor.classify_image(project_id, model_name, image_data)

 # 예측한 결과를 출력
for prediction in results.predictions:
    print(f"Tag: {prediction.tag_name}, Probability: {prediction.probability:.2f}")
    
[출력 결과]
Tag: Highland, Probability: 0.98
Tag: Basalt, Probability: 0.02