ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 구글 머신러닝 스터디잼 - AutoML Vision으로 이미지 분류해보기
    [Developer]/Any 2019.04.23 01:58

    2019년 4월. 구글 머신러닝 스터디잼 중급반에 돌입했다.

    주어진 미션은 퀵랩 한개와 코세라 한개의 코스

    코세라는 한개의 코스라지만 분량이 어마어마하다

     

    퀵랩에서는 Classify Images of Clouds in the Cloud with AutoML Vision 이라는 주제로 실습을 하도록 되어있었다.

     

    이것을 이번에 간략하게 정리해보고자 한다.

     

    우선 AutoML이 무엇인가 보자. 이 설명 안에 AutoML 비전(Vision)에 대한 내용도 함께 있다.


    - 구글에서 설명하는 자료: https://korea.googleblog.com/2018/01/cloud-automl.html

     

    모든 기업이 AI를 활용할 수 있게 하는 클라우드 AutoML을 소개합니다

    일 년 전 페이페이와 제가 구글 클라우드 팀에 합류했을 때, 우리는 인공지능(AI) 대중화라는 임무에 착수했습니다. 구글의 목표는 진입 장벽을 낮추고, 최대한 많은 개발자, 연구자, 기업들이 AI를 활용할 수 있게 만드는 것이었습니다. 구글 클라우드 ...

    korea.googleblog.com

     

    퀵랩에서 진행하는 AutoML Vision 이용해서 클라우드 환경에서 클라우드의 이미지를 분류하는 것에 대한 실습을 진행해 보았다.

     

    <1> Setup and requirements

     

    GCP 활용한 퀵랩에서는 항상 그렇듯이 시작은 Google Cloud Shell 진입함으로 시작한다.

    퀵랩에서 발급한 Username Password 가지고 Google Console 진입한다.

     

    이제는 친숙한 구글 클라우드

     

    진입한 다음에는 "gcloud auth list" 나의 계정 정보를 확인하고, "gcloud config list project" 프로젝트 ID 확인한다. 이번 랩에서는 특별히 프로젝트 ID 자주 언급되니 부분은 체크해 놓는게 좋겠다.

     

    <2> Set up AutoML Vision

    우리가 실습할 도구가 AutoML Vision이기 때문에 GCP Shell 아니라 AutoML Vision 세팅해 놓아야 한다.

     

    APIs & Services > Library 메뉴에서 Cloud AutoML API 검색창에서 검색한다. 그러면 하나의 결과가 나오는데, 그것을 눌러 들어간 , ENABLE 버튼을 눌러 활성화 시키면 된다. 잠시동안 기다리고 나면 처리된 결과가 화면에 출력이 된다.

     

     

     

    그리고, 브라우저에서 새로운 탭을 연다. 이왕이면 다른 계정과 섞이지 않게 시크릿모드로 여는것을 추천한다. 그렇게 해서 때는 우리가 실습을 위해 위에서 받은 google계정과 비밀번호를 입력해서 들어간다.

    (https://cloud.google.com/automl/ui/vision)

    만약 시크릿모드로 들어가지 않는다면 500 Internal Error 나올 수도 있다.


    들어간
    이후엔 Project ID 입력하여 Google Cloud Project 특정하는 화면이 나오고, 거기에 Project ID 입력하여 들어간다. 그리고 요구되는 API 권한 수정을 위해 SET UP NOW 버튼을 수행한다.(기다림의 시간…)

     

     

    여기까지 되었으면, 일단 AutoML Vision 우리가 진행하는 GCP 연결한 상태이다. 여기까지가 setup이기 때문에 이제는 실제 진행할 있도록 GCP쪽에서도 AutoML 설정해야 한다.

     

    export PROJECT_ID=$DEVSHELL_PROJECT_ID
    
    export QWIKLABS_USERNAME=<QWIKLABS_USERNAME>

     

    <>으로 묶인 부분만 조금전 발급받은 구글아이디를 입력한다. 그리고 방금 계정에 AutoML Vision 필요한 권한을 부여한다.

     

    gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="user:$QWIKLABS_USERNAME" \ --role="roles/automl.admin"
    
    
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:custom-vision@appspot.gserviceaccount.com" \ --role="roles/ml.admin"
    
    
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:custom-vision@appspot.gserviceaccount.com" \ --role="roles/storage.admin"

     

    권한 부여가 완료되었으면, 작업을 위해 스토리지 버킷을 생성한다.

     

    gsutil mb -p $PROJECT_ID \ -c regional \ -l us-central1 \ gs://$PROJECT_ID-vcm/

     

     

    <3> Upload training images to Google Cloud Storage

     

    이제 이미지를 Storage 올리기 위해 Storage > Browser 메뉴로 진입한다.

     

    화면에서 bucket name 확인 , 다시 Cloud Shell 진입하여

    export BUCKET=<YOUR_BUCKET_NAME>

    명령을 이용하여 <> 내용을 확인한 bucket name으로 채워준 실행한다.

     

    그리고 gsutil 이용하여 이미 공용 클라우드 상에 올라가 있는 이미지를 나의 bucket 업로드 준다.

    gsutil -m cp -r gs://automl-codelab-clouds/* gs://${BUCKET}

     

    업로드가 완료되면 Storage 메뉴로 돌아와서 REFRESH BUCKET 수행한다. 그러면 업로드 완료된 파일의 목록이 보일 것이다. 보이지 않으면 이후 진행에 문제가 있으니 확인이 필요하다. 학습시킬 데이터가 것이다.

     

    <4> Create a dataset

     

    이제 교육할 데이터가 Cloud Storage 저장되었으므로 AutoML Vision에서 엑세스 방법이 필요하다. CSV 파일을 만들면, 행에 교육 이미지의 URL 해당 이미지의 관련 레이블이 포함된다. Placeholder bucket이름으로 변경하면 된다.

     

    $ gsutil cp gs://automl-codelab-metadata/data.csv .
    
    $ sed -i -e "s/placeholder/${BUCKET}/g" ./data.csv
    
    $ gsutil cp ./data.csv gs://${BUCKET}

     

    다음 콘솔 화면의 상단에 보면 REFRESH BUCKET 버튼이 있는데, 버튼을 누르면 방금 생성한 data.csv 파일이 보이게 된다.

     

    이젠 AutoML Vision(링크https://cloud.google.com/automl/ui/vision ) 화면으로 이동 NEW DATASET 버튼을 누른다. 여기서 Dataset name clouds라고 타이핑 하고, Select a CSV file on Cloud Storage 선택해서, 구글 스토리지에 있는 csv 파일을 타이핑 한다.(gs://your-project-name-vcm/data.csv) 그리고 CREATE DATASET 하면, 잠시 기다리고나면 이미지들이 import 된다.(시간이 다소 걸린다.. 1분쯤?)

     

    <5> Inspect images

    이미지들 조사한다. 여기에서는 각각 권운(cirrus), 적란운(cumulonimbus), 적운(cumulus) 활용한다. 실제로 모델을 제작하기 위해서는 정확도를 올리기 위해 레이블당 적어도 100 이상의 이미지가 필요하다. 하지만, 여기서는 모델이 빨리 훈련될 있도록 20개만 사용할 것이다.

    이미지에 대해 레이블당 갯수를 확인해 보라면 LABEL STATS 누르면 된다.(아직 레이블이 지정되지 않은 데이터 셋으로 작업하는 경우를 위해 AutoML Vision 인간 라벨링 서비스도 제공한다.)

     

    <6> Training your model

     

    모델 교육을 시작할 준비가 되었고, AutoML Vision 모델코드를 작성할 필요 없이 자동으로 기능을 처리한다. 구름 모델을 훈련시키려면 TRAIN 탭으로 이동해서 START TRAINING 클릭하면 된다.

     

    현재 설정된 상태를 그대로 두고, START TRAINING 수행한다. 화면상으로는 15 가량 걸린다고 나와있고, 실제로는 6~7분정도 걸린다.

     

     

    <7> Evaluate your model

     

    모델 평가를 시간이다. 평가 탭에서 모델의 정밀도 Recall 대한 정보를 있다. 다음과 유사하면 된다.

    Score threshold 확인할 있다.

     

    마지막로 Confusion matrix 확인해 본다.

    포커스는 정확성에 있지 않기 때문에 참고만 하면 된다. 이제 바로 precision 섹션으로 건너 뛰어도 되고, 살펴보아도 된다.

     

     

    <8> Generate Predictions

     

    예측 생성. 이제까지는 보지 못했던 새로운 데이터를 사용하여 훈련된 모델에 대한 예측을 생성해보자. PREDICT 탭으로 이동해 보자.

     

     

     

    위의 이미지를 우클릭으로 다운로드 다음 업로드 하여 확인해 보자.

    각각이 권운과 적란운으로 나오는 것을 있다.

    ** 개인적으로는 인터넷으로 검색한 이미지를 적용해보는 것도 즉석에서 괜찮은 실습이 될 것 같다. 적운도 해보자.

    (권운 이미지 검색 결과, https://www.google.com/search?q=%EA%B6%8C%EC%9A%B4&newwindow=1&source=lnms&tbm=isch&sa=X&ved=0ahUKEwit_J7q6-PhAhUDabwKHfWSABIQ_AUIDigB&biw=1920&bih=969)

     

     

    콘솔을 이용하는 이외에도 REST API 또는 Python 클라이언트를 이용하여 숙련된 모델에 대한 예측 request 수행할 있다.


    - AutoML API 사용하는 방법: https://cloud.google.com/vision/automl/docs/using-the-api?hl=ko

     

    AutoML API 사용  |  Cloud AutoML Vision  |  Google Cloud

    시작하기 전에 AutoML API를 사용하려면 우선 시작하기 전에의 단계에 따라 Google Cloud Platform(GCP) 프로젝트를 설정하고 AutoML Vision 알파 액세스 권한을 확보해야 합니다. AutoML Vision 알파 액세스를 설정했으면 GCP 프로젝트에서 AutoML API에 액세스하는 데 사용할 서비스 계정을 만들어야 합니다. API 키는 지원되지 않습니다. 서비스 계정을 만드는 방법은 다음과 같습니다. gcloud 명령줄 도구

    cloud.google.com

     

    <9> 완료!

     

    우리는 다음을 확인할 있었다.

     

    - Cloud Storage 교육 이미지를 업로드하고, AutoML Vision CSV 만들어 이러한 이미지를 가져올 있었다.

    - AutoML Vision UI에서 레이블 검토 모델 교육이 가능했다.

    - 구름 이미지에 대한 예측을 생성하였다.

     

    추가로 도움이 될만한 자료를 찾아보았다.

    - AutoML Vision 초보자 가이드: https://cloud.google.com/vision/automl/docs/beginners-guide?hl=ko


     

    이론만으로는 아니면 커맨드 입력만으로는 크게 와 닿지 않을 수 있는 학습모델과 예측에 대한 결과를 눈으로 직접 보니 기계학습이 피부로 와 닿았다. 그만큼 의미있는 랩이었고, 다른 사람들도 할 수 만 있다면 이 퀵랩을 추천하고 싶다. 아마 이런걸 통하지 않으면 AutoML을 다뤄볼 일이 많지 않을 것이다.

     

    마지막으로 지금까지 실습한 내용을 동영상으로 녹화해 보았다. 간접경험이나 실습에 도움이 되었으면 좋겠다.

     

     

    완수해야하는2개의 미션중 하나인 퀵랩을 진행하는 모습입니다. 소리와 자막은 없습니다. :D

     

    댓글 0

Designed by Tistory.