티스토리 뷰
Tensorflow는 써봐야 겠다 싶어 뒤적 뒤적 거리는데 좋은 기회에 Google Codelabs의 Github에 Tensorflow for Poets 가 있어서 시도해보았고, 보고서까지 써서 과제로 제출했기 때문에 그 보고서를 그대로 옮겨보려고 한다. 다른 소스를 찾기가 귀찮거나 힘들었다면 이 보고서를 그대로 따라하면 잘 나오지 않을까 싶다.
Sorting Flowers - Machine Learning in Tensorflow
What is Tensorflow?
Tensorflow는 machine learning 모델을 만들고 배포를 쉽게 하게끔 도와주는 플랫폼이다. Tensorflow와 machine learning을 쉽게 시작할 수 있도록 API 와 라이브러리를 제공해줄 뿐만 아니라 제품화까지 이어질 수 있도록 도와주기 때문에 많은 기업들에서 활용하고 있다.
Downloading Jupyter notebook & Tensorflow
우선 Anaconda Navigator를 install 해준다. Anaconda를 활용하여 데이터 분석을 할 때의 장점은 패키지의 버전관리도 되고, 가상 환경도 제공해준다는 점이다. 가령, Tensorflow는 계속 업데이트가 되고 있기 때문에 프로젝트 별로 필요로하는 version이 상이하다. Tensorflow를 개별적으로 install 하게 되면 필요한 version을 하나씩 다 받아야 하지만 Anaconda를 활용하면 필요한 버전에 맞게 사용할 수 있게 해준다.
Mac의 terminal 창에 pip install tensorflow 라고 입력하면 Tensorflow install에 필요한 package들 및 requirements를 받아온다. pip는 package installer for Python으로 python package index와 다른 index들에 있는 패키지들을 다운받고 관리할 수 있다. Mac의 경우 python 2.7이 default로 존재한다. Python2.7을 활용하여 작업을 할 예정이라면 pip 명령어를 계속써도 되지만, 그 Python3 이상의 version을 사용할 경우 패키지 관리는 pip3로 이루어진다. 이번 과제의 경우 따로 path 설정을 하지 않는다면 Jupyter Notebook에서 Python 2.7을 사용하게 되므로 pip 명령어를 그대로 쓰도록한다.
Tensorflow의 설치가 잘 되었는지 확인하기 위해 Install이 완료되면 terminal 창에 > pip list -format=columns를 입력하면 install된 package 와 각 package의 version이 리스트 형태로 뜨게 된다. 그러나 맞는 경로에 설치되었는지 확인을 해보기 위해 Anaconda Navigator → Jupyter Notebook launch → import tensorflow as tf를 실행해본다. 옳게 설치되었다면 다음 실행을 기대하고, 설치가 제대로 되지 않았다면 tensorflow라는 module이 없다는 error가 뜨니 위에서 언급한 pip, pip3를 잘 활용하면 고칠 수 있다.
Getting Ready to Train Data
Google의 codelabs에서 제공하는 tensorflow-for-poets-2는 꽃의 사진을 학습시켜 새로운 꽃의 이미지 data가 들어오면 daisy, sunflower, tulip, dandelion, rose 중 어떤 꽃에 해당할 확률이 얼마인지 알려주는 모델이다. googlecodelabs의 github 계정으로 가서 tensorflow-for-poets-2 repository로 들어가면 전체를 clone하거나 download 받을 수 있다. Zip파일로 내 컴퓨터에 받아 온 후 학습시킬 꽃 이미지 데이터를 다운 받도록 한다.
> cd Tensorflow-for-poets-2
> curl -O http://download.tensorflow.org/example_images/flower_photos.tgz
> tar xzf flower_photos.tgz -C tf_files
이 때 주의할 것은 첫 명령어인 cd Tensorflow-for-poets-2를 그냥 입력하면 실행이 되지 않는다. 해당 directory가 있어야 change directory가 되는데 그런 이름을 가진 폴더가 없기 때문이다. 그러므로 직전에 받은 zip파일을 풀고 폴더 명을 Tensorflow-for-poets-2로 바꾸거나 cd 명령어를 쓸 때 기존 폴더명을 쓰면 된다. 또한, curl 을 통해 데이터를 받아왔으면 그 다음 tar 명령으로 파일을 풀어도 되고, 직접 폴더에서 decompressor로 파일을 풀어도 된다. 결과적으로 총 218M에 해당하는 이미지 데이터를 받게 된다.
Train Flower Data
다운 받아 온 flower image data를 training 시키기 위해 다음과 같은 코드를 사용하게 된다. 이 때 scripts.retrain에서 scripts는 .py파일들이 모여있는 폴더로서 그 중 하나의 파일이 retrain.py이고 이후에 나오는 코드는 retrain.py의 옵션에 해당한다.
> python -m scripts.retrain —bottleneck_dir=tf_files/bottlenecks -—how_many_training_steps=1000 --model_dir=tf_files/models/ --summaries_dir=tf_files/training_summaries/mobilenet_0.50_224 --output_graph=tf_files/retrained_graph.pb --output_labels=tf_files/retrained_labels.txt --architecture=mobilenet_0.50_224 -—image_dir=tf_files/flower_photos
각 옵션들이 무엇을 나타내는지 알아보면,
—bottleneck_dir=tf_files/bottlenecks : 학습할 사진을 인셉션을 위한 용도로 변환해서 저장할 폴더위치
—how_many_training_steps=7000 : 반복 학습할 횟수
—model_dir=tf_files/models/ : inception 모델을 다운받을 위치
—summaries_dir=tf_files/training_summaries/mobilenet_0.50_224 : tensorboard에 사용될 log 파일 위치
—output_graph=tf_files/retrained_graph.pb : 추론에 사용할 학습된 파일 위치
—output_lables=tf_files/retrained_labels.txt : 추론에 사용할 레이블 파일 위치
—architecture=mobilenet_0.50_224
—image_dir=tf_files/flower_photos : 학습할 원본 이미지 위치
를 뜻한다. 이 코드를 실행을 완료하고 나면 terminal 창에는 최종 Final test accuracy가 89.0%임을 알리면서 끝이 나고, tf_files에는 3개의 새로운 폴더와(flower_photos는 위에서 tar로 압축 풀 때 생김), retrained_graph.pb, retrained_labels.txt라는 2개의 새로운 파일이 생겼음을 확인할 수 있다.
Test Model
Test를 하기 위해 쓸 새로운 꽃 사진을 1.jpg로 저장해서 위의 사진처럼 tf_files에 넣고 > python -m scripts.label_image --graph=tf_files/retrained_graph.pb --image=tf_files/1.jpg 코드를 실행하면 아래와 같은 화면이 나온다.
'CS > Data Science' 카테고리의 다른 글
[Tableau] MySQL Server와 연결하는 다양한 방법 (0) | 2021.05.26 |
---|---|
[0.78468]Kaggle(캐글) : Titanic 생존자 예측(Logistic Regression) (0) | 2019.05.30 |
임산부를 위한 챗봇(3) - Text Preprocessing(1) (4) | 2019.04.04 |
임산부를 위한 챗봇(2) 네이버 카페 크롤링 (10) | 2019.04.01 |
임산부를 위한 챗봇(1) 아이디어 (0) | 2019.04.01 |
- Total
- Today
- Yesterday
- SWIFT
- 운영체제
- 코테
- 소프트웨어역량시험
- 부캠
- 커넥트재단
- nosql
- 보안
- 컴퓨터공학
- 부스트캠프2020
- 인턴
- firebase
- 알고리즘
- 소프트웨어아카데미
- RxSwift
- ios
- 삼성
- OS
- 삼성소프트웨어아카데미
- 컴공졸작
- 컴과졸작
- C++
- 개발자인턴
- 졸업작품
- 데이터분석
- 부스트캠프
- TableView
- 프로그래머스
- 코딩테스트
- swacademy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |