Google Cloud Platform 으로 AutoML Vision
https://hello-bryan.tistory.com/373
Google Cloud Platform
AutoML
Train, Deploy, Test
GCP(Google Cloud Platform) 를 이용하여 구름 모양을 분류하는 모델을 학습시키는 방법입니다.
로컬 학습 코드도 필요없고, GPU자원도 필요없습니다. 클라우드 환경에서 몇번의 클릭만으로 자신만의 모델을 만들 수 있습니다.
(기존의 데이터셋이 없다면 이미지를 모으고 라벨링 하는 작업은 필요할 수 있습니다.)
간단히 정리하면
1. 프로젝트 생성
2. 스토리지 및 버킷 생성
3. 데이터 업로드 (이미지 + 라벨정보)
4. 학습
5. 배포
(여기서 데이터셋은 이미 존재하는 것을 사용합니다)
하나의 프로젝트를 생성하고, Cloud AutoML API 를 Enable 시킵니다.
APIs & Services > Library > "Cloud AutoML API" 검색
Cloud AutoML API 클릭
Enable 클릭. (아래 이미지는 Enable 된 상태입니다.)
데이터셋 생성
학습에 필요한 이미지들을 업로드 합니다.
직접 업로드도 가능하지만, 클라우드에 이미 존재하는 이미지를 업로드 하는 방법입니다.
우측 상단에 Active Cloud Shell 아이콘을 눌러서 Cloud Shell 을 활성화 시킵니다.
활성화된 Shell 에서 아래 명령어를 순서대로 실행해 봅니다.
- Active 된 Account 확인하기
$ gcloud auth list
- Project list 확인하기
$ gcloud config list project
위에서 확인한 Project 와 Username 을 환경변수로 등록합니다.
(두번째 줄은 수정 필요)
export PROJECT_ID=$DEVSHELL_PROJECT_ID
export QWIKLABS_USERNAME=<여기에 위에서 조회한 UserName>
# 예 export QWIKLABS_USERNAME=[email protected]
AutoML permission 을 주는 커맨드 입니다. (그대로 실행)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$QWIKLABS_USERNAME" \
--role="roles/automl.admin"
저장공간 버킷을 생성하는 커맨드 입니다. (그대로 실행)
gsutil mb -p $PROJECT_ID \
-c standard \
-l us-central1 \
gs://$PROJECT_ID-vcm/
라벨링 된 학습용 데이터가 필요해서 샘플로 제공해 주는 "세가지 구름 타입 분류" 데이터를 사용합니다.
세가지의 다른 구름 타입을 구분하는 것을 학습시키기 위해 현재 프로젝트로 클라우드 이미지를 복사합니다.
버킷 환경변수를 생성합니다. (그대로 실행)
export BUCKET=$PROJECT_ID-vcm
이미지 복사 (그대로 실행)
gsutil -m cp -r gs://spls/gsp223/images/* gs://${BUCKET}
Cloud Storage 에서 생성된 저장공간을 확인합니다.
클릭
폴더 세개가 업로드 된것을 확인할 수 있습니다.
학습용 데이터 생성
이제 데이터는 클라우드 저장공간에 있고, AutoML Vision 이 접근하도록 해야합니다.
각각 이미지와 라벨링 된 데이터 정보를 담고있는 csv 파일을 가져옵니다. ( 커스텀 데이터를 학습시키려면 별도로 생성해야 합니다 )
Cloud Shell 에서 다음을 실행합니다.
이미 존재하는 csv 파일을 복사해옵니다.
gsutil cp gs://spls/gsp223/data.csv .
그 다음, 프로젝트의 파일로 CSV를 업데이트 합니다.
sed -i -e "s/placeholder/${BUCKET}/g" ./data.csv
이제 클라우드 저장공간 버킷으로 파일을 업로드 합니다.
gsutil cp ./data.csv gs://${BUCKET}
data.csv 가 업로드 되었습니다.
데이터셋 생성
Vision > Datasets 메뉴 클릭
상단에 + NEW DATASET 클릭 > Single-Label Classification 선택 > CREATE DATASET 클릭
CSV 파일을 선택해야 합니다.
Select a CSV file on Cloud Storage 를 선택하고
경로는 {Bucket}/data.csv 를 입력합니다. ( 또는 버킷으로 이동해서 파일의 클라우드 url 을 복사할 수 있습니다 )
업로드 된 이미지와 어떤 분류로 표시되어 있는지 확인 할 수 있습니다.
물론, 수정도 가능합니다.
이미지 하나를 클릭하고 상세 페이지로 들어가보면 아래와 같이
세가지 타입과 Unlabeled 를 선택할 수 있습니다.
학습하기
TRAIN 탭으로 넘어갑니다. Labeling 된 데이터의 분포를 확인하고 학습을 시작합니다. START TRAINING 클릭
팝업이 뜨면 무료로 학습하기 위해 8 node hours 를 입력합니다.
학습 후에 바로 Deploy 하는 옵션이 있지만 지금은 체크하지 않습니다. START TRAINING 클릭
학습 중이라고 표시됩니다. 20~30분 걸린것 같습니다.
학습이 완료되면 결과가 표시됩니다.
EVALUATE 탭에서 아래와 같은 정보를 확인할 수 있습니다.
모델 배포
이제 생성된 모델을 배포하고 테스트 할 수 있습니다.
TEST & USE 탭을 클릭하고 Model을 선택한 다음 DEPLOY MODEL 을 클릭합니다.
팝업이 뜨면 DEPLOY 를 클릭
배포가 되는 중입니다. 10~20분정도 소요됩니다.
배포가 완료되면 아래와 같이 메시지가 보입니다.
그리고 UPLOAD IMAGES 버튼을 눌러서 구름 이미지를 업로드하면 분류된 결과를 볼수 있습니다.
이렇게 코드도 없이 클릭만으로 ML 모델을 생성하고 배포하여 실행까지 해볼 수 있습니다.
그리고 지금은 무료 버전으로 했기 때문에 이 프로젝트는 2시간이 지나면 이 모든 환경이 사라지게 됩니다.
내가 원하는 분류 이미지를 올리고 라벨링을 하기만 하면, 내가 원하는 ML모델을 만들고 배포까지 됩니다.
연구인력이 없는데 ML모델이 필요한 회사에서는 이런 방법이 좋을듯합니다.
역시 구글..