image classification 문제 이해하기
1. model
input을 받아 output을 낸다
input은 이미지 뿐만 아니라 tabular(정형데이터), sound, text 등 다양함
어떤 input을 쓰고 어떤 output을 쓰고 어떤 model을 쓸지에 따라 task 이름이 결정
다양한 형태의 input을 잘 이해해야 model이 output을 어떻게 내는지 잘 이해할 수 있을 것
image classification task는? image를 input으로 넣어 model이 categorical class를 output으로 낸다
이미지나 영상을 입력하고 이미지나 영상의 카테고리를 출력으로 주는 것
입력으로 준 이미지나 영상의 카테고리를 분류하는 하나의 함수 mapping을 classifier라고 한다
그러나 output도 0~1사이의 class 확률로 만들고 싶을 수 있고 object가 어디있는지 감지하고 싶다면 object position을 output으로 낼 수 있다
image를 어떻게 효율적으로 input으로 넣을 수 있을까?
image가 int8로 되어 있어도 모델 안에 넣으면 float가 될 수 있고
image size도 다양하며 어떤 경우엔 밝게 찍히는 경우도 있고 어떤 경우엔 어둡거나 어떤 image는 반전되어 있을 수도
이런 부분을 고려한 input 이미지 데이터 전처리가 중요
2. 어떻게 만들 수 있을까?
가장 이상적인 상황으로 내가 이 세상의 모든 이미지 데이터를 가지고 있다고 생각해보자.
그러면 분류하고 싶은 이미지가 들어올 때 내가 가지고 있는 데이터 중
들어온 이미지와 가장 비슷한 이미지를 찾기만하면 끝이다
3. K-nearest neighbor?
어떤 데이터가 들어오면 그 데이터의 근방에서 가장 가까운 k개의 이웃 데이터를 찾는다
그 이웃 데이터들의 label을 보고 가장 많은 label에 들어온 데이터를 포함시키면 된다
-----------------------------------------------------------------------------------------------------------------------------
회색 데이터가 input으로 들어오면 근방에서 k개의 데이터를 잡아오고
그 중 빨간색 label이 많으면 회색 데이터를 빨간색 label로 분류하고
초록색 label이 많으면 초록색 label로 분류하자는 알고리즘
------------------------------------------------------------------------------------------------------------------------------
내가 모든 데이터를 가지고 있다면 image classification 문제는 이런 단순한 k-nearest neighbor search 문제로 바뀐다.
그러나 현실적으로는 불가능하다.
데이터 수가 증가할수록 알고리즘의 시간 복잡도는 증가하고 메모리 용량도 증가한다
아무리 컴퓨터가 좋아져도 세상의 모든 데이터를 담기에는 부족하다
사실 K-NN을 쓰기 위해서는 이미지간의 유사도를 정의해야한다.
이 유사도를 정의하는 것도 사실 쉬운 문제는 아니다.
'딥러닝 > Computer Vision' 카테고리의 다른 글
VGGNet는 왜 3*3 convolution을 사용했을까? (0) | 2022.02.07 |
---|---|
AlexNet의 핵심 아이디어 (0) | 2022.02.06 |
CNN(Convolutional Neural Network)은 왜 등장했을까? (0) | 2022.01.31 |
Computer Vision을 어떻게 구현할까? (0) | 2022.01.23 |
Computer vision이란? (0) | 2022.01.17 |