이미지를 모든 픽셀에 대한 라벨을 결정하는 문제.
ref: https://youtu.be/cuIrijsu9GY
dense layer를 없애고 convolution layer를 통해 구현하여 parameter를 줄여보자.
이것을 convolutionalization이라고 한다.
하지만, 위 그림과 같이 단순히 치환만을 한 것이면 parameter의 수는 같다. 아무것도 바꾼 것이 없으니 convolutional network에서 dense layer의 역할을 해야하기 때문이다.
수식으로 표현하면 아래와 같다.
dense layer
fully convolutional network
fully convolutoinal network는 input image의 dimension에 independent하다.
dense layer
convolution layers
FCN(Fully convolutional network)를 사용하면 output의 spatial dimension(channel을 제외한 차원의 크기)은 줄어든다. 가령, 원래 100x100이었다면 10x10으로 줄어드는 것처럼 말이다.
따라서, 본래 input의 크기만큼 이미지를 늘려야한다.
convolution의 역연산은 존재하진 않는다. 이미 정보가 합쳐졌는데, 어떠한 정보도 없이 복호화는 할 수 없는 것은 당연하다.
하지만 마치 역연산과도 같은 역할을 deconvolution에서 기대할 수 있다.
이미지 내에서 물체를 bounding box 내에서 찾는 것.
1. input을 받는다.
2. extracs around 2000 region propsals (using Selective search)
3. compute features for each proposal (using AlexNet)
4. classifies with linear SVMs.
굉장히 brute-force하다고 할 수 있다. AlexNet을 2000번이나 돌려야한다.. 당시에 CPU에서 하나의 이미지를 처리하는데 59s/m이 걸렸다고 한다. 굉장히 비효율적이다.
R-CNN은 모든 이미지의 region에 대해 convolution을 진행했다.
SPPNet은 다음과 같다.
1. SPPNet은 모든 이미지에 대해 convolution을 한번만 통과시킨다.
2. region에 맞는 tensor를 convolution 결과인 feature map에서 가져온다.
R-CNN과 동일한 방법이지만, convolution을 한번만 수행하게 된다.
SPPNet과 굉장히 유사하다.
1. input 이미지를 받는다.
2. selective search를 통해 bounding box 영역을 미리 2000개 정도 얻는다.
3. convolution을 통해 feature map을 얻는다.
4. region별로, ROI를 통해 고정된 길이의 feature를 얻는다.
5. NN을 통해 class classification과 bounding box에 대해 회귀분석을 한다.
SPPNet과 다른 점은 ROI, 뒷단의 NN이다.
Faster R-CNN = RPN(Region Proposal Network) + Fast R-CNN
RPN = 임의의 이미지를 2000개 샘플링하여 region을 정하는 selective search를 임의의로 하지 말고, region 샘플링조차도 학습해서 수행하자!
물체가 무엇인지는 모르겠지만, 최소한 물체가 있을 것 같은 region을 잡아주도록 학습한다.
위 그림을 보면 anchor box라는 것이 있다. region의 bounding box 모양을 미리 설정하는 것인데, 학습을 진행하면서 k개의 anchor box 크기를 바꿔가는 것이다.
RPN의 네트워크 구조는 위와 같다.
Fully convolution network가 이미지의 전체를 돌면서 convolution을 수행한다. 이는, kernel(여기서는 fully convolution network)이 물체에 대한 정보를 가지고 있기에 가능하다고 해석할 수 있다.
9 : 3개의 다른 region 영역(128, 245, 512)와 region 영역의 비율(1:1, 2:1, 1:2)
4 : bounding box를 width, height 4방향으로 얼마나 키우고 줄일지
2 : bounding box가 쓸모있는지에 대한 classification(yes or no)
Faster R-CNN의 결과는 위와 같이 아주 잘 나온다.
v5까지 나왔다. 볼건 v1.
수행 순서는 다음과 같다.