1. classification 모델 학습
2. regression head 추가
3. regression head 부분만 학습
4. test time 때 classification과 regression 둘 다 이용해 산출
정해진 것을 찾는 것은 regression으로도 잘 동작하므로 detection을 사용하지 않고도 심플하게 구할 수 있으며 사람의 자세를 평가해서 관절을 표시해주는 것도 regression을 해서 쉽게 구현이 가능합니다.
Regression으로 하는 것은 간단하면서 강력하기 때문에 여러 사례에 응용이 가능하지만 대회 같은 곳에서는 이 방법으로는 수상이 어려우므로 Sliding window를 사용해야 합니다.
Sliding window
이미지를 한번만 돌리지 않고 여러번을 돌리고 합쳐주는 기법입니다. 그리고 편의성을 위해서 fully-connected layer를 convolutional layer로 변환해서 돌려줍니다.
Overfeat
AlexNet을 응용한 것입니다.
수많은 sliding window를 하고 나면 너무 비쌉니다. 연산 자체가 무거워지고 좀 더 효율적인 방법을 찾은 것이 fully connected layer를 conv layer로 바꿔주면서 연산을 효율적으로 진행하는 것인데, fully connected layer는 4096개의 원소로 구성된 벡터입니다.
이를 벡터로 생각하지 말고 또 하나의 convolutional feature layer로 생각하고 차원을 추가해서 convolutional fullying operation으로 구성된 네트워크로 가능한 것입니다.
Traning time
그래서 14x14 의 이미지를 받아서 5x5로 convolution을 한다면 10x10으로 변경이 되고 이를 2x2로 pooling을 하면 5x5가 됩니다. 그 이후 계속 convolution을 하면서 1x1까지 변환을 합니다.
Test time
16x16 를 5x5로 conv 해서 12x12 -> 2x2로 풀링해서 6x6 그리고 conv 반복해서 2x2로 만듭니다.
R-CNN
Input -> conv and pooling -> Hi-res conv features
역역을 proposal을 하고 이를 grid로 나누어주게 되고 max-pooling을 하면 hi-res 아닌 RoI conv features를 출력하게 됩니다. 순서를 바꿔버린 것으로 convolution을 먼저 진행하는 것입니다.
이때 max-pooling을 하면 back propagation에 아무런 지장이 없습니다.
R-CNN이 84시간 걸린다면 Fast R-CNN은 9.5시간이 걸리며 매우 빨라집니다.
ResNet 101 + Faster R-CNN + some extra
객체 탐지의 현재 최신점은 이렇게 됩니다. 이미지넷에서는 2013년의 overfeat에서 시작해서 ResNet ensemble까지 19%에서 62%까지 발전해왔습니다.
YOLO
정해진 수의 탐지만 가능하기에 적절치 않을 때 탐지를 classification 분류라고 간주했는데 탐지를 회귀로 간주하는 것입니다. 이미지를 grid로 나눈 다음 4개의 좌표와 하나의 confidence를 가지는 B개의 박스와 c개의 숫자를 예측합니다.
이는 이미지의 Regression이 7 X 7 X ( 5 * B + C)가 될 수 있습니다.
YOLO의 성능은 굉장히 빠르지만 정확도 면에서 조금 떨어지는 모습을 보입니다.
'IT 프로그래밍 > AI' 카테고리의 다른 글
[cs231n] RNN, LSTM (0) | 2024.11.16 |
---|---|
[cs231n] Visualization, Adversarial examples (0) | 2024.11.15 |
[cs231n] CNN (1) | 2024.11.15 |
[cs231n] Training NN (0) | 2024.11.13 |
[cs231n] 3강 Neural Network NN (0) | 2024.11.08 |