[Python] 파이썬으로 와슨 AI 이용해보기 Develop Tip

최근들어 Microsoft가 급격하게 세를 확대하고 있는데 그 이유중에 하나가
바로 AZURE라는 클라우드 서비스 확대라고 할 수 있겠습니다.
그런데 바로 그런 서비스가 동일하게 IBM에서도 cloud.ibm.com 에서
에서 동일하게 

제공하고 있습니다.
특히 최근에는 IBM이 어마무시한 가격으로 (39조) RedHat을 인수합병하여 공격적으로 
 OpenShift 라는 것을 밀고 있지요.

이번에는 이런 IBM의 클라우드에 계정을 하나 생성하여, 거의 공짜 가격으로 (물론 이용 볼륨에 따라
가격이 올라가겠지만..) AI 기능을 파이썬으로 이용하는 방법으로 알아보겠습니다.
(물론 이전에도 유사한 블로그 내용들이 여럿 있었지만 시간이 지남에 따라
 이용방법이 꽤 바뀌고 있네요)

우선 IBM 클라우드를 이용하려면, 계정을 생성해야 합니다.
다음의 IBM Cloud 링크 로 들어가,

왼편의 "Create an IBM Cloud account" 를 누릅니다.

필요한 해당 정보를 넣고, 
제일 하단의 "Create Account"를 누릅니다.

요즘에는 이렇게 역공격으로 뚫기 결코 쉽지않은 CAPTCHA 가 등장하고는 합니다.

이메일로 인증코드를 넣고 하는 등의 간단한 작업을 마치면 로그인이 가능합니다.
그러면, 위와 같은 대시보드 화면이 뜹니다.

AI 서비스를 이용하려면 우측 상단의 "Create reource"를 누릅니다.

그러면 왼편에서 "AI" 카테고리를 선택하면 현재 (2019년 9월) 15개의 서비스가 있네요.
아마 더욱 더 많은 서비스들이 추가될 것이라 보입니다.

이곳에서 필요한 것을 누릅니다.
위에서는 예제로 "Visual Recognition"을 선택합니다.
디폴트로 그냥 놓으시고, 아래로 내려가 봅니다.

플랜은 Lite로 놓았습니다. (위의 내용은 캡쳐를 못 떠서 나중에 리소스 확인해서 바라본 모습입니다.)
그리고 위, 위의 화면 오른쪽 하단에 있는 "Create" 단추를 누릅니다.

현재 체크를 해 보니, Free 플랜으로는 2개 까지만 서비스용 리소스 생성이 가능합니다.
이제 파이썬에서 이를 사용하기 위해서는 api-key 가 필요한데 이를 찾는 방법입니다.

대시보드의 왼편 위에 "Services" 를 누르거나,

좌측 최 상단의 메뉴에서 두 번째의 "Resource List" 를 누르면,

위와 같이 나오는 서비스에서 보고자하는 apikey를 찾기 위해서 누르면,

위와 같이 있는데 여기서 API Key의 오른편에 있는 복사 아이콘을 누르면 해당 apikey를 복사하게 되고 파이썬 프로그램에서
사용가능합니다.

자 이제는 테스트로 Visual Recognition 기능을 파이썬 프로그램에서 한번 작업해 보겠습니다.

다음에는 분석을 위한 샘플 사진입니다.

1년 전 이전 버전의 블로그에 참고했던 이미지 입니다.

이제 파이썬 프로그램입니다.

import json
from ibm_watson import VisualRecognitionV3, ApiException
#from watson_developer_cloud import VisualRecognitionV3, WatsonApiException

api_key = 'yourkey...'  # 위에서 구해온 apikey
visual_recognition = VisualRecognitionV3('2016-05-20', iam_apikey=api_key)
with open('ROAD-SIGN-2-ALAMY_2699740b.jpg', 'rb') as images_zip:
    try:
        response = visual_recognition.classify(images_zip, threshold=0.0)
        jds = json.dumps(response.result, indent=1)
        print(jds)
    except ApiException as ex:
        print("Status code: {}\nError message: {}\nError info: \n{}".
              format(ex.code, ex.message, json.dumps(ex.info, indent=1)))

이전에는 watson_developer_cloud 를 이용했던 것에 반하여, 현재는
ibm_watson 모듈을 이용하면 됩니다.

위의 프로그램을 돌려보면

{
 "images": [
  {
   "classifiers": [
    {
     "classifier_id": "default",
     "name": "default",
     "classes": [
      {
       "class": "no-parking zone",
       "score": 0.708
      },
      {
       "class": "divided highway",
       "score": 0.66,
       "type_hierarchy": "/road/divided highway"
      },
      {
       "class": "road",
       "score": 0.661
      },
      {
       "class": "intersection",
       "score": 0.596,
       "type_hierarchy": "/junction/intersection"
      },
      {
       "class": "junction",
       "score": 0.597
      },
      {
       "class": "street sign",
       "score": 0.5
      },
      {
       "class": "gray color",
       "score": 0.712
      },
      {
       "class": "maroon color",
       "score": 0.521
      }
     ]
    }
   ],
   "image": "ROAD-SIGN-2-ALAMY_2699740b.jpg"
  }
 ],
 "images_processed": 1,
 "custom_classes": 0
}

라고 원하는 결과가 나왔습니다.


어느 분께는 도움이 되셨기를 ..

핑백

덧글

  • KUEE1080 2019/08/13 14:09 # 삭제 답글

    오! 안그래도 사물인식 프로젝트 하는 중인데 도움 받고 갑니다! 감사합니다 ㅜㅜ
  • 지훈현서아빠 2019/08/14 02:51 #

    도움되셨다니 저의 보람입니다~ ^^
댓글 입력 영역

구글애드텍스트