tensorflow에서 slim을 이용해서 이미지를 분류하는 방법 에 대해서 알아봅시다.
tensorflow에서 slim을 이용해서 이미지를 분류하는 방법
slim을 이용해서 이미지를 분류하는 방법은 다음의 순서에 맞추어 진행합니다. (SLIM 외에 내용도 포함됩니다.)
- 학습 데이터(이미지)를 폴더(카테고리)별로 분류하여 생성
- 이미지 전처리 (tfRecord 화)
- 학습
- 평가
- 웹 API 등록하는 방법
해당 글은 slim에 대해서 관련 정보와 간단한 방법을 요약하여 제공할 예정입니다. 다음 글에서는 위의 순서에 맞추어 실제로 이미지를 분류하는 방법에 대해서 알아가 봅시다. 해당 원문은 TF-slim 공식 github 에서 확인 가능합니다.
tensorflow slim 간략 설명
tensorflow에서 slim은 복잡한 모델을 정의하고 학습하고 평가하기 위한 경량 라이브러리입니다. 목차를 보시면 설치, 사전 데이터 준비, 사전 학습 모델을 사용하는 방법, 학습, 새작업을 하는 방법, 평가 등으로 이루어져 있습니다. 사전 제공되는 데이터는 꽃, Cifar10, MNIST, ImageNet 이렇게 4가지이고, 이 4가지에 대해서 쉽게 다운로드 및 학습 평가해볼 수 있습니다.
또한, 사전 학습 모델을 선택할 수 있는데, 성능과 시간이라는 두 가지 요소를 고려해서 사용해 볼 수 있습니다. 예를 들어, ResNet을 돌리면 정확도는 낮지만 빠르게 학습시켜 결과를 볼 수 있고, Inception V3 모델을 이용하면 시간은 걸리지만 더 높은 정확도를 얻을 수 있습니다.
tensorflow slim에서 사용되는 관련 용어
TFRecord
학습을 하기 위한 전처리된 데이터 포맷입니다. 이미지와 카테고리가 있을 경우, 이를 사전에 tensorFlow의 slim에서 사용할 수 있는 형태로 만들게 됩니다. 4가지 예를 통해서 확인할 수 있으며, 예제 Flower를 통해서, 개인이 가진 이미지 데이터도 응용하여 학습할 수 있습니다. flower의 경우 디렉토리별로 파일을 모아서 TFRecord를 생성할 수 있습니다.
Checkpoint
학습이 완료된 결과물 벡터입니다. 이것을 평가할때 로딩하여 사용할 수 있습니다.
다음 포스팅에서 MNIST와 flower를 한번 학습해 보고, 그 다음 im2channel로 학습 진행해 보면 좋을 듯 합니다.