2019년 4월. 구글 머신러닝 스터디잼 중급반에 돌입했다.
주어진 미션은 퀵랩 한개와 코세라 한개의 코스
코세라는 한개의 코스라지만 분량이 어마어마하다
퀵랩에서는 Classify Images of Clouds in the Cloud with AutoML Vision 이라는 주제로 실습을 하도록 되어있었다.
이것을 이번에 간략하게 정리해보고자 한다.
우선 AutoML이 무엇인가 보자. 이 설명 안에 AutoML 비전(Vision)에 대한 내용도 함께 있다.
- 구글에서 설명하는 자료: https://korea.googleblog.com/2018/01/cloud-automl.html
퀵랩에서 진행하는 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 탭으로 이동해 보자.
위의 두 이미지를 우클릭으로 다운로드 한 다음 업로드 하여 확인해 보자.
각각이 권운과 적란운으로 나오는 것을 볼 수 있다.
** 개인적으로는 인터넷으로 검색한 이미지를 적용해보는 것도 즉석에서 괜찮은 실습이 될 것 같다. 적운도 해보자.
이 콘솔을 이용하는 것 이외에도 REST API 또는 Python 클라이언트를 이용하여 숙련된 모델에 대한 예측 request를 수행할 수 있다.
- AutoML API 사용하는 방법: https://cloud.google.com/vision/automl/docs/using-the-api?hl=ko
<9> 완료!
우리는 다음을 확인할 수 있었다.
- Cloud Storage에 교육 이미지를 업로드하고, AutoML Vision 용 CSV를 만들어 이러한 이미지를 가져올 수 있었다.
- AutoML Vision UI에서 레이블 검토 및 모델 교육이 가능했다.
- 새 구름 이미지에 대한 예측을 생성하였다.
추가로 도움이 될만한 자료를 찾아보았다.
- AutoML Vision 초보자 가이드: https://cloud.google.com/vision/automl/docs/beginners-guide?hl=ko
이론만으로는 아니면 커맨드 입력만으로는 크게 와 닿지 않을 수 있는 학습모델과 예측에 대한 결과를 눈으로 직접 보니 기계학습이 피부로 와 닿았다. 그만큼 의미있는 랩이었고, 다른 사람들도 할 수 만 있다면 이 퀵랩을 추천하고 싶다. 아마 이런걸 통하지 않으면 AutoML을 다뤄볼 일이 많지 않을 것이다.
마지막으로 지금까지 실습한 내용을 동영상으로 녹화해 보았다. 간접경험이나 실습에 도움이 되었으면 좋겠다.
'[Developer] > Any' 카테고리의 다른 글
Github에서 Keystore를 Secret Key로 반영하기(feat. Android) (2) | 2021.08.14 |
---|---|
동영상 키프레임 조절 (0) | 2020.07.04 |
베스트셀러 Open API 활용방법(by 인터파크 도서) (2) | 2018.12.04 |
GDG - 프로그램 멤버쉽에 대한 특징 (0) | 2018.09.18 |
블로그에 코드 삽입하기 (0) | 2018.05.10 |
댓글