이미지 분류 딥러닝 CIFAR-10 예제

명상하라·2020년 10월 4일
0

딥러닝

목록 보기
1/2

의료 영상 분야에서 딥러닝 솔루션을 개발하는 일을 약 2년하는 동안 딥러닝에 대해 뭔가 정석대로 공부를 하지 못했다. 명색이 딥러닝 테크 기업의 기술이사를 맡고있으면서 누군가가 딥러닝(DeepLearning)의 'D'자는 제대로 알고있었느냐라고 묻는다면, 부끄럽지만 당당히 알고있었다고 말할 수 없었을 것이다. 지금이라도 조금씩 내용 정리를 하면서 차근차근 공부를 해보려 한다.

(나름대로 이해하여 정리한 내용이라 내용이 틀릴 수 있습니다. 피드백 주시면 언제든 환영입니다.)

본 포스팅에서는 이미지 분류 모델 분야의 대표적인 튜토리얼 문제 중 하나인 CIFAR-10을 이용해 공부해보려한다.

CIFAR-10 데이터셋은

그 유명한 2012년 ILSVRC에서 종전의 기록과 당해년도 대비 압도적인 정확도로 1등을 했던 AlexNet의 창시자 Alex krizhevsky가 수집하여 만든 데이터 셋이다. RGB채널, 32x32 사이즈, 10개의 Class 분류 데이터 60,000개로 이루어져있다.

Link: The CIFAR-10 Dataset Homepage

데이터 다운로드 및 전처리

위의 링크를 클릭하여 스크롤을 내리다보면 아래에 Download 항목이 있다. 자신의 개발환경에 맞는 파일을 다운로드 받으면 된다. 필자는 Python을 선호하기 때문에 Python용 파일을 다운받았다.

파일을 다운받고 압축을 풀면 아래와같이 8개의 파일로 구성되어있다. 순간 파일의 확장자가 보이지 않아서 당황했으나 다시 홈페이지로 가면

친절하게 코드로 데이터 로딩 방법을 알려주어 다행스럽게 생각했다.

위의 함수를 활용하여 배치파일을 로드하고 dict형태의 데이터셋들을 keras에서 사용할 수 있도록 적절히 다듬어 학습을 시켰다. 데이터 전처리 과정에서의 문제 해결 과정은 다른 포스팅에서 다루도록 한다.

딥러닝 모델 설계

가장 기본적인 CNN 구조로 작성해보았다. 3개의 Convolutional Layer와 Maxpooling Set을 구성하였고, 마지막은 Softmax를 Activation Function으로 사용한 FCL로 마무리하였다.

결과 리뷰

Epoch을 10으로 세팅해서인지 Acc가 0.57 밖에 나오지 않았는데, 예상보다도 너무 낮았다. 이유를 곰곰히 생각해보니 구조를 테스트하느라 학습 데이터를 충분히 사용하지 않았었다. 10000개씩 5개의 배치파일로 이루어져있어서 2개의 파일만 불러와 1개는 학습 데이터, 1개는 검증 데이터로 사용했었다. 학습 데이터 수가 너무 적어 오버피팅이 일어났다고 생각했고, 3개를 추가로 불러와 학습을 다시 시키니...

Epoch은 조절하지 않았음에도 최종 Acc가 0.12나 증가했다.

마무리

블로그 형태로 정리해보는 것은 처음인데, 다른 사람들도 볼 수 있다고 생각하니 좀 더 꼼꼼히 공부하였던 것 같다. 앞으로도 꾸준히 공부하고 포스팅도 해야겠다.

profile
개발 메모장

0개의 댓글