어떻게 하면 사람의 시각을 컴퓨터로 구현할 수 있을까??
전통적인 방법
Input - Feature extraction - Classification - Output
Deep Learning
Input - Feature extraction + Classification - Output
Deep Learning을 이용하면 더이상 Feature Extraction을 사람이 할 일이 없다.
1) CV task에서 CNN을 사용하는 이유
0. K-NN 알고리즘
- K개의 이웃의 data를 보고 그 중 가장 가까운 곳에 속해있는 data로 분류하는 알고리즘. 검색 알고리즘이라고 할 수 있다.
만약 모든 data를 가지고 있다면 KNN을 통해 분류할 수 있을 것이다. (검색문제로 치환가능)
하지만 KNN의 문제점은
1. data가 늘어날 수록 시간 복잡도와 공간복잡도가 O(n)만큼 증가하게 된다.
2. 또 비슷함의 기준을 정하는 것도 쉽지않다.
따라서 이것보다 더 좋은 방법이 있을 것이다.
1. Single Fully Connected layer
Single Fully Connected layer의 한계
1. Layer가 1개라서 표현력이 떨어진다.
2. train할 때 꽉찬 이미지에 대한 패턴을 학습했다면 crop해서 조금이라도 위치나, template이 맞지 않는다면 다른결과가 나온다.
따라서 이런 문제점을 해결하기 위해 CNN이 등장한다.
2. CNN
기존 Fully Connected network가 전체 픽셀을 연결했다면 CNN은 국부적으로 pixel 을 연결한다. 따라서 자연스럽게 parmeters 수는 줄어든다. 그리고 이러한 Convolution filter들이 전영역을 순회하면서 feature를 추출한다. 따라서 더적은 parameter로 특징 추출 성능은 올리고 Overfitting도 줄일 수 있었다.
따라서 CNN은 여러가지 CV task의 backbone 네트워크로 활용 된다.
2) CNN을 이용한 image classification
CNN (Alexnet, GooLeNet, VGG, ResNet, DenseNet)
기본적으로 3개의 채널의 convolution 연산을 하게 되면 28 * 28의 한개의 채널이 나오게 된다. 만약 여러개의 채널을 만들고 싶다면 여러개의 filter를 만들어서 convolution 연산을 하면 된다. Convoution에
ltsgod.tistory.com
'AI > CV' 카테고리의 다른 글
Instance Panoptic Segmentation (0) | 2023.03.31 |
---|---|
CNN Visualization (0) | 2023.03.30 |
Object Detection (R-CNN, YOLO, SSD, DETR, Transformer) (1) | 2023.03.29 |
Sementic Segmentation(FCN, U-Net, DeepLab) (1) | 2023.03.27 |
Annotation Data Efficient Learning (0) | 2023.03.27 |