brunch

You can make anything
by writing

C.S.Lewis

by Changhwa Oh Nov 13. 2018

1-3화 : 데이터만 있으면 해결책은 많다

이번에는 내가 원하는 카테고리로 이미지를 학습하여 분류하는 작업을 진행해본다.

이것도 굳이 코딩을 하지 않더라도 텐서 플로우에서 이미 잘 제공해주고 있어서 

해당 스크립트를 사용할 예정이다.


과거 버전에는 해당 스크립트가 tensorflow 저장소에 있었는데 1.7 버전부터 자주 쓰이는 모델들을 쉽게 재활용하기 위해서 텐서플로우 hub라는 것이 추가되었다.


지난 시간에는 고양이 사진을 넣으면 각 고양이 종류를 분류해줬는데 이번에는 가볍게 

개 와 고양이 사진을 분류해주는 시스템을 만들어 보겠다.


우선 데이터는 지난 시간에 소개한 캐글에서 쉽게 구할 수 있다.

https://www.kaggle.com/tongpython/cat-and-dog

(캐글을 사용하는 방법은 자세한 방법은 차후 별도 주제로 다루게 된다)


우선 training_set을 이용해 학습해본다.

해당 폴더를 열어보면 cats, dogs 이런 폴더가 있다.

이게 바로 카테고리가 된다. 

만약 토끼를 카테고리화 하고 싶다면 rabbits를 추가해서 토끼 사진을 넣어주면 된다.

이제 학습을 해보겠다.

https://github.com/tensorflow/hub/tree/master/examples/image_retraining

해당 코드를 클론 받아서 다음과 같이 실행해준다. ( 기본적으로 tensorflow_hub 는 설치되어있어야 한다 )

--image_dir 이 학습 폴더의 경로이다.

학습을 진행중인 모습
학습 진행 중

실제로 고양이나 개 이미지를 가지고 한번 실험해보자

학습한 결과는 어떻게 실험할 수 있을까?

이번에도 별다른 코드 작성 없이 분류해보겠다.

https://github.com/tensorflow/tensorflow

텐서플로우 메인 저장소에 label_image (https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/label_image) 를 사용하면 쉽게 분류할 수 있다.


python label_image.py \

--graph=/tmp/output_graph.pb \

--labels=/tmp/output_labels.txt \ 

--input_layer=Placeholder \

--output_layer=final_result\

--image=/test_set/cats/cat.4974.jpg


실행하고 나면 최종 결과는 다음과 같이 나온다.

cats 0.99984133

dogs 0.00015858357


고양이 확률이 99.98% 로 잘 분류했다.


일하다 보면 bottleneck 이 만들어지는데 해당 파일은 CNN의 마지막 레이어 파일로 빠르게 재학습 하기 위해 만들어진다.

매거진의 이전글 1-2화 : 데이터만 있으면 해결책은 많다
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari