joanne

docs: add 0412.md about Important Object Recognition Concepts

......@@ -2,39 +2,71 @@
[reference: The Modern History of Object Recognition — Infographic](https://medium.com/@nikasa1889/the-modern-history-of-object-recognition-infographic-aea18517c318)
## Kinds of Object Recognition
- Image Classfication : 내부 주요 Object를 기준으로 이미지를 분류하는 것.
- **Image Classfication** : 내부 주요 Object를 기준으로 이미지를 분류하는 것.
- Object Localization : 주요 Object를 포함한 이미지 영역을 예측하는 것. Image classification은 영역 내의 Object를 인지하는 데에 사용된다.
- Object Recognition : 이미지에서 나타나는 모든 objects를 분류하고 지역화한다. 이 작업은 이미지 영역을 예측하고 그 안의 Object가 무엇인지 분류한다.
- **Object Localization** : 주요 Object를 포함한 이미지 영역을 예측하는 것. Image classification은 영역 내의 Object를 인지하는 데에 사용된다.
- Semantic Segmentation : 이미지가 속한 객체 클래스별로 이미지의 각 픽셀에 레이블을 지정한다.
- Instance Segmentation : 클래스에 더불어 instance에도 레이블을 지정한다.
- **Object Recognition** : 이미지에서 나타나는 모든 objects를 분류하고 지역화한다. 이 작업은 이미지 영역을 예측하고 그 안의 Object가 무엇인지 분류한다.
- **Semantic Segmentation** : 이미지가 속한 객체 클래스별로 이미지의 각 픽셀에 레이블을 지정한다.
- **Instance Segmentation** : 클래스에 더불어 instance에도 레이블을 지정한다.
## Important CNN Concepts
- Feature : 특정한 패턴(특징)이 input region에 나타날 때 활성화되는 숨겨진 뉴런. 이 뉴런이 감지하는 특징은 다음과 같다.
- **Feature** : 특정한 패턴(특징)이 input region에 나타날 때 활성화되는 숨겨진 뉴런. 이 뉴런이 감지하는 특징은 다음과 같다.
(1) 뉴런의 활성화를 최대화하기위해 input region을 최적화
(2) 입력 픽셀에서 뉴런 활성화의 기울기를 시각화 (back propagation .. )
(3) 뉴런을 가장 많이 활성화하는 훈련 데이터셋의 이미지 영역 셋 시각화
즉, 주어진 input region의 특징을 뽑아낸 것이라고 볼 수 있다.
- Receptive Field : feature의 활성화에 영향을 미치는 input image의 영역. 즉, 출력 레이어의 뉴런 하나에 영향을 미치는 입력 뉴런들의 공간 크기이다. (외부 자극이 전체에 영향을 끼치는 것이 아니라 특정 영역에만 영향을 준다는 의미를 갖는다.)
- Feature Map : sliding window 방식으로 입력 맵의 서로 다른 위치에 동일한 feature detector를 적용하여 생성한 feature들의 집합이다. (convolution). 즉, 필터를 입력받은 데이터에 sliding window 방식으로 적용한 뒤, 얻어낸 결과를 feature map이라고 한다.
- **Receptive Field** : feature의 활성화에 영향을 미치는 input image의 영역. 즉, 출력 레이어의 뉴런 하나에 영향을 미치는 입력 뉴런들의 공간 크기이다. (외부 자극이 전체에 영향을 끼치는 것이 아니라 특정 영역에만 영향을 준다는 의미를 갖는다.)
- **Feature Map** : sliding window 방식으로 입력 맵의 서로 다른 위치에 동일한 feature detector를 적용하여 생성한 feature들의 집합이다. (convolution). 즉, 필터를 입력받은 데이터에 sliding window 방식으로 적용한 뒤, 얻어낸 결과를 feature map이라고 한다.
- Fully connected layer as Feature Volume : Fully connected layers는 분류 작업 수행을 위해 ConvNet의 마지막에 붙는 레이어로서 k개의 hidden nodes를 갖는다. (1\*1\*k feature volume을 갖는다.) 이 feature volume은 각 피쳐 맵 당 하나의 피쳐를 가지고, 해당 receptive field는 전체 이미지를 포함한다. fc 계층의 가중치 행렬인 W는 CNN 커널로 변환할 수 있다. w\*h\*k 커널과 w\*h\*d의 피쳐 볼륨을 갖는 CNN은 1\*1\*k 피쳐 볼륨을 생성해낸다. 1\*1\*k 필터 커널을 1\*1\*d feature volume에 통합하면 1\*1\*k feature volumn이 생성된다. fc 레이어를 컨볼루션 레이어로 바꾸면 임이의 크기의 이미지에 ConvNet을 적용할 수 있다.
- Deconvolution : convolution의 반대 과정이다. 쉽게 말하자면 f*g = h (f: filter, g: feature map(input of layer), h: output)일 때, f,h로부터 g를 구하는 과정을 deconvolution이라고 한다. 예를 들어 특정 레이어에서 어떤 값을 역추적했더니 "눈"이 나왔다는 것은 바로 사람의 얼굴에서 눈이 이 필터를 잘 활성화시킨다는 것이고, 이 필터는 눈의 특징을 잡아내는 역할을 한다는 것을 의미한다. 우리가 deconv를 통해 피쳐맵을 역추적하면 특정 필터가 처음의 input image에서부터 담당하는 부분을 시각적으로 알 수 있다.
- **Fully connected layer as Feature Volume** : Fully connected layers는 분류 작업 수행을 위해 ConvNet의 마지막에 붙는 레이어로서 k개의 hidden nodes를 갖는다. (1\*1\*k feature volume을 갖는다.) 이 feature volume은 각 피쳐 맵 당 하나의 피쳐를 가지고, 해당 receptive field는 전체 이미지를 포함한다. fc 계층의 가중치 행렬인 W는 CNN 커널로 변환할 수 있다. w\*h\*k 커널과 w\*h\*d의 피쳐 볼륨을 갖는 CNN은 1\*1\*k 피쳐 볼륨을 생성해낸다. 1\*1\*k 필터 커널을 1\*1\*d feature volume에 통합하면 1\*1\*k feature volumn이 생성된다. fc 레이어를 컨볼루션 레이어로 바꾸면 임이의 크기의 이미지에 ConvNet을 적용할 수 있다.
- End to End Learning : 입력에서 출력까지 전체 네트워크를 이루는 부분적인 네트워크 없이 한 번에 처리한다는 것을 의미한다.
- **Deconvolution** : convolution의 반대 과정이다. 쉽게 말하자면 f*g = h (f: filter, g: feature map(input of layer), h: output)일 때, f,h로부터 g를 구하는 과정을 deconvolution이라고 한다. 예를 들어 특정 레이어에서 어떤 값을 역추적했더니 "눈"이 나왔다는 것은 바로 사람의 얼굴에서 눈이 이 필터를 잘 활성화시킨다는 것이고, 이 필터는 눈의 특징을 잡아내는 역할을 한다는 것을 의미한다. 우리가 deconv를 통해 피쳐맵을 역추적하면 특정 필터가 처음의 input image에서부터 담당하는 부분을 시각적으로 알 수 있다.
- **End to End Learning** : 입력에서 출력까지 전체 네트워크를 이루는 부분적인 네트워크 없이 한 번에 처리한다는 것을 의미한다.
(memo --> CNN 시각화를 통해 각 피쳐맵의 중간층을 활성화해 눈으로 확인할 수 있다. https://dambaekday.tistory.com/3)
## Important Object Recognition Concepts
- **Bounding box proposal (Region of interest)** : 말 그래도 이미지 내에서 관심있는 영역을 뜻한다. 입력 이미지에서 내부에 우리가 찾으려고 하는 개체가 포함될 가능성이 있는 직사각형 영역이다. bounding box는 두 개의 코너 좌표 (x0, y0, x1, y1)를 저장하거나 또는 중심 위치와 너비 및 높이(x, y, w, h)를 저장하는 4-요소 벡터로 표현될 수 있다. bounding box에는 일반적으로 내부에 개체가 포함되어있을 가능성이 어느 정도인지 나타내는 신뢰 점수가 함께 표시된다.
- **Intersection over Union** : 두 박스의 교집합을 합집합으로 나눠준 값. 두 박스가 일치할 수록 1에 가까운 값이 나오게 된다. 이 수치는 서로 다른 두 박스가 동일한 물체에 쳐져 있다고 판별할 수 있도록 한다. R-CNN 논문에서는 IoU > 0.5 이면 동일한 물체를 대상으로 한 박스로 판단한다.
- **Non Maxium Suppression (NMS)** : 동일한 물체에 여러개의 박스가 쳐져 있을 때, 가장 스코어가 높은 박스만 남기고 나머지를 제거하는 과정을 말한다. 이 때, 스코어는 IoU를 통해 판별한다.
- **Selective Search** : 물체가 포함되어있을 법한 박스를 찾아내는 방법.
- **Bounding box regression** : selective search를 통해 찾은 박스 위치는 상당히 부정확하다. 따라서 성능을 끌어올리기 위해 박스 위치를 교정해주는 작업을 bounding box regression이라 말한다. 즉, CNN을 통과하여 추출된 벡터와 x, y, w, h를 조정하는 함수의 가중치를 곱해서 바운딩 박스를 조정해주는 선형 회귀를 학습시키는 것을 의미한다.
자세한 내용은 [여기](https://yeomko.tistory.com/13)에서 Bounding Box Regression을 참조하면 수식과 함께 확인할 수 있다.
## Metrics
### R-CNN
### Fast R-CNN
### Mask R-CNN
......