AutoML Vision API를 사용해 보았습니다.
8458 단어 이미지 인식MachineLearning기계 학습AutoML
이번에는 파이썬을 사용합니다. JAVA, node.js도 사용할 수있는 것 같습니다.
Client Libraries
이 근처를 참고로하면서 갑니다.
샘플 코드
기본적으로 AutoML Vision의 PREDICT 탭에 있는 파이썬 코드를 그대로 두드립니다.
from google.cloud import automl_v1beta1
# 認証
KEY_FILE = "******.json"
prediction_client = automl_v1beta1.PredictionServiceClient()
prediction_client = prediction_client.from_service_account_json(KEY_FILE)
# 予測
name = 'projects/{}/locations/us-central1/models/{}'.format(project_id, model_id)
payload = {'image': {'image_bytes': content }}
request = prediction_client.predict(name, payload)
# 予測結果の取得
print(request)
인증
automl_v1beta1.PredictionServiceClient()
로 인증합니다.아래와 같이 환경 변수를 설정해 두면 거기에서 자동으로 읽어 주는 것 같다.
export GOOGLE_APPLICATION_CREDENTIALS=key-file
이번에는 환경 변수를 더럽히고 싶지 않았기 때문에 파일로부터 읽어들이도록 했습니다.
prediction_client.from_service_account_json(KEY_FILE)
예측
name은 project_id와 모델 id를, payload는 지정된 형식의 json을 사용하여 예측할 이미지를 제공합니다.
name = 'projects/{}/locations/us-central1/models/{}'.format(project_id, model_id)
payload = {'image': {'image_bytes': content }}
나머지 인수는 다음과 같습니다.
def predict(self,
name,
payload,
params=None,
retry=google.api_core.gapic_v1.method.DEFAULT,
timeout=google.api_core.gapic_v1.method.DEFAULT,
metadata=None):
(dict[str -> str])의 형태로 score_threshold 등의 파라미터를 건네준다.
retry 클래스이 있기 때문에 그것에 따라 통과한다. 기본적으로 retry하지 않습니다.
predict에 비교적 시간이 걸릴 수 있으므로, 타임 아웃은 세트 해 두어도 좋을지도. Github 소스 에 따르면 기본값은 60s
예측 결과 얻기
json이라고 생각하게 json이 아닌 포맷이었으므로, 빠졌습니다.
request = prediction_client.predict(name, payload)
print(request)
AutoML Vision의 PREDICT 탭에서 파이썬 코드를 실행하면 다음 결과가 반환됩니다.
payload {
classification {
score: 0.215105131269
}
display_name: "kotobuki_tsumugi"
}
score는 예측 결과, display_name은 라벨.
이것이 json이라고 생각하게 json이 아닌 것이 함정입니다.
그래서 문서을 보면 다음과 같이 쓰여 있습니다.
Returns: A PredictResponse instance.
그래서 PredictResponce instance 라는 것은 이하.
class google.cloud.automl_v1beta1.types.PredictResponse
- payload
- metadata
아무래도 payload와 metadata를 가지고 있는 클래스라고 합니다.
그래서 다음과 같이 잘 내용을 꺼낼 수 있습니다.
print (request.payload)
출력
[classification {
score: 0.215105131269
}
display_name: "kotobuki_tsumugi"
]
또한 score와 display_name은 다음과 같이 검색할 수 있습니다.
score = request.payload[0].classification.score
display_name = request.payload[0].display_name
print(score, display_name)
출력
0.215105131269
kotobuki_tsumugi
무사 내용을 꺼낼 수 있었습니다.
예측 결과 획득 2
데이터 세트를 늘리면 Precision이 더 높은 값이 되었지만 Recall은 낮아졌습니다.
그러면, 판정하려고 했던 화상에 따라서는 예측 결과가 하늘로 돌아올 수 있었습니다. 아마, Recall(재현도)가 낮으면 하늘이 돌아오는 모양. payload에 error문이라든지는 넣어주지 않았네요....
Precision 및 Recall은 AutoML Vision의 EVALUATE 탭에 있는 Score threshold 막대에서 변경할 수 있습니다. 데이터 세트의 이미지가 True positives/False negatives인지 여부를 볼 수 있으므로 그것을 보면서 조정할 수 있습니다.
API를 두드릴 때는 predict 인수의 params에서 설정할 수 있습니다. 기본값은 0.5.
요약
이번에는 파이썬을 사용하여 AutoML Vision의 API를 두드려 보았습니다.
간단하게 사용할 수 있어, 레퍼런스도 제대로 있기 때문에 어렵지 않을까 생각합니다. 아직 베타판이므로 출력 결과의 포맷이나 에러 주위는, 앞으로 알기 쉽게 바뀌어 오는 것이 아닐까요.
Reference
이 문제에 관하여(AutoML Vision API를 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/iss-f/items/fcc766fca27f3685025d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(AutoML Vision API를 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/iss-f/items/fcc766fca27f3685025d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)