Image classification

이상우·2022년 1월 16일
0

오늘은 Image classification에 대해서 복습하게 되었다. 처음 강의를 들었을 때는 이해되지 않았지만, 복습의 목적으로 오늘 다시 듣게 되니, 어느정도 이해가 되었다. 블로그 정리하는 겸 배웠던 내용을 다시 한번 되새겨 보려고 한다.
본 블로그 자료는 KAIST 주재걸 교수님 연구실 학부생인 이정수 튜터님이 http://cs231n.stanford.edu/2017/ 강의자료를 참고하여 정리한 pdf를 참고한 것이다.

Image Classification


사람은 저 위에 사진을 보면 바로 고양이라는 것을 알 수 있다. 하지만 컴퓨터에게는 매우 어려운 문제이다. 사람은 고양이를 실체가 있는 물체로 인식하는 반면 컴퓨터에게는 0~255사이의 숫자로 표현되기 때문이다. 또한 이미지 분류에 있어서 컴퓨터는 고양이를 관측한 위치, 빛, 고양이의 자세, 가림, 고양이의 종류 등에 따라 컴퓨터에게 고양이는 다르게 인식된다. 그렇기 때문에 컴퓨터는 여러 물체를 인식하고 이를 분류하는 문제는 매우 challenging하다고 할 수 있다.

CNN(Convolutional Neural Networks)

CNN은 위에서 문제가 되었던 위치, 빛, 고양의 자세, 가림, 고양이의 종류 등에 따라 컴퓨터가 다르게 인식되는 것을 해결책입니다. CNN은 공간적/지역적 정보를 유지한 채 특성(feature)들의 계층을 빌드업한다. CNN의 중요 포인트는 이미지 전체보다는 부분을 보는 것, 그리고 이미지의 한 픽셀과 주변 픽셀들의 연관성을 살리는 것이다.

예를 들어 우리는 어떠한 이미지가 주어졌을때 이것이 새의 이미지인지 아닌지 결정할 수 있는 모델을 만들고 싶다고 가정하면, 그렇다면 새의 주요 특징인 새의 부리가 중요한 포인트가 될 수 있다. 때문에 모델이 주어진 이미지에 새의 부리가 있는지 없는지 판가름 하는것이 중요 척도가 될 것이다. 하지만 새의 전체 이미지에서 새의 부리 부분은 비교적 작은 부분이기 때문에 모델이 전체 이미지를 보는 것 보다는 새의 부리 부분을 잘라 보는게 더 효율적이다. 그것을 해주는것이 CNN입니다. CNN의 뉴런이 패턴(이 경우에서는 새의 부리)을 파악하기 위해서 전체 이미지를 모두 다 볼 필요가 없다.

CNN구조

LeNet-5

LeNet은 CNN을 처음으로 개발한 얀 르쿤(Yann Lecun) 연구팀이 1998년에 개발한 CNN 알고리즘의 이름이다. original 논문 제목은 "Gradient-based learning applied to document recognition"이다. 우선 LeNet-5의 구조를 살펴보자.

LeNet-5는 인풋, 3개의 컨볼루션 레이어(C1, C3, C5), 2개의 서브샘플링 레이어(S2, S4), 1층의 full-connected 레이어(F6), 아웃풋 레이어로 구성되어 있다. 참고로 C1부터 F6까지 활성화 함수로 tanh을 사용한다.

AlexNet

AlexNet의 기본구조는 LeNet-5와 크게 다르지 않다. 2개의 GPU로 병렬연산을 수행하기 위해서 병렬적인 구조로 설계되었다는 점이 가장 큰 변화이다. AlexNet의 구조도를 살펴보자.

AlexNet은 8개의 레이어로 구성되어 있다. 5개의 컨볼루션 레이어와 3개의 full-connected 레이어로 구성되어 있다. 두번째, 네번째, 다섯번째 컨볼루션 레이어들은 전 단계의 같은 채널의 특성맵들과만 연결되어 있는 반면, 세번째 컨볼루션 레이어는 전 단계의 두 채널의 특성맵들과 모두 연결되어 있다는 것

VGGNet

VGG-F, VGG-M, VGG-S는 속도와 정확도의 트레이드오프를 고려한 모델들이다. VGG-F는 fast, 즉 빠름에 초점을 맞춘 모델이고, VGG-S는 slow, 즉 느리지만 정확도에 초점을 맞춘 모델이다. VGG-M은 medium으로 이 둘의 중간 정도라고 보면 된다. VGG-F, VGG-M, VGG-S의 세부적 내용은 다음 표에서 잘 설명하고 있다.

VGG-F, VGG-M, VGG-S는 표에서 알 수 있듯이 5층의 컨볼루션 층들과 3층의 fully-connected 층들로 구성되어 있다. 이 글에서는 VGG-F를 중점으로 설명하려고 한다. VGG-F에 대한 설명을 잘 읽고나면 VGG-M과 VGG-S도 충분히 이해할 수 있을 것이라 생각한다.

GooLeNet


GoogLeNet은 상술한 바와 같이 22개 층으로 구성되어 있다. 파란색 블럭의 층수를 세보면 22개 층임을 알 수 있다.

참고 사이트

profile
구상한것을 구현할 수 있는 개발자가 되고 싶습니다.

0개의 댓글