Duplicate

Lecture 11 | Detection and Segmentation

포스팅 날짜
2021/11/29

Note Taking

Lecture 10 요약
RNN
Input 과 이전 단계의 Hidden State 를 사용해 이번 단계의 Hidden State 를 연산
ht=tanh(Whhht1+Wxhxt)h_t=\tanh(W_{hh}h_{t-1}+W_{xh}x_t)
yt=Whyhty_t=W_{hy}h_t
일반적인 형태는 One Input One Output 이나, One To Many, Many To Many 도 가능
Back Propagation Through Time (BPTT)
각각의 Output Loss 를 모두 더해 하나의 Total Loss 로 정의하여 back propagation
loss 로부터 특정 weight 로 갈 수 있는 path 가 다수인데, gradient 가 더해지는 형태로 계산
Sequence 가 길 수록 느림
LSTM
RNN 이 가진 Long Term Dependency Problem 을 해결한 형태의 네트워크
RNN 의 각 timestamp 마다 W를 재활용하는데, W 가 지속적으로 곱해지는 효과
W의 Largest Singular Value 에 따라 gradient exploding, gradient vanishing 발생
이전 단계로 이동하려면 Tanh 를 타야만 하는 기존의 RNN 과는 다르게 Cell State path 가 생겨남
Semantic Segmentation
이미지 각 픽셀의 class 를 도출해내는 task (classification for each pixel of image)
instance 를 구별해내지는 않음
두 마리의 소가 붙어 있는 경우 소의 경계면을 알아낼 수는 없음
FIrst Approach - Sliding Window
Image crop 을 잘라내서 각 cropped image 의 중앙 pixel 의 class 에 대한 classification 진행
매우 비쌈
각 pixel 의 class 를 명시해야 함
cropped image 를 사용한 convolution 연산에 중복이 많음 (낭비되는 연산)
Second Approach - Fully Convolutional
Full Convolutional Layer (No FC layer) → Activation Map 의 size 가 줄어들지 않음
CC : classification class 수
C×W×HC\times W\times H : output tensor size
Cross Entropy Loss on every pixel
매우 비쌈
Conv Filter 의 개수가 64, 128, 256 되면서 굉장히 연산 수 및 메모리 다량 사용
Third Approach - Fully Convolutional + Downsampling & Upsampling
깊은 네트워크를 낮은 spatial dimension 영역에서 구현할 수 있기 때문에 효율적임
Downsampling
Strided Convolution
Pooling
Upsampling
Unpooling
Nearest Neighbor Unpooling 주변 영역을 자신과 같게 확장
Bed of Nails Unpooling 좌상단을 본인으로 유지 후 나머지 0 으로 채워 넣음
Max Unpooling Pooling 단계에서 선택되었던 지점으로 본인을 위치하고, 나머지 0 으로 채워넣음
Transpose Convolution
Dimension 을 확장할 수 있는 learnable layer (Strided Convolution 의 reverse 버전)
kernel 전체에 해당 input 한 pixel 을 곱해서 kernel 이 포함하는 영역을 채워넣음
Classification + Localization
이미지의 category 뿐만이 아니라, 그 category 의 물체가 이미지 속에서 어디 있는지도 찾는 task
이미지 속에서 하나의 object 가 located 되어 있다고 가정하고 진행
Multitask Problem
Image 를 summarizing 하는 vector 로부터 2 개의 다른 fully connected layer 가 존재
하나의 fully connected layer 는 class 를
다른 fully connected layer 는 bounding box coordinate 를 산출
두 loss 를 조절하는 weighting parameter 를 설정해야 함
이 친구가 굉장히 특이한 것이, 다른 hyperparameter 와 다르게 이 친구의 변경이 loss 자체를 바꾸기 떄문에, 조절해가며 loss 를 관찰하는 것으로 부터 좋고 나쁨을 판단하기 어려움
같이 학습하는 이유는 big network 의 fine tuning 효과를 얻기 위함
Coordinate 산출이라는 점에서 Human Pose Estimation 문제와 비슷하게 볼 수 있음
Object Detection
다수의 object 에 대한 classification + localization task
First Approach - Sliding Window
Image crop 에 대한 background class 를 포함한 classification (Conv Network)
Crop 선정을 할 기준이 없음... Brute force 로 Sliding Window 를, 가능한 다양한 크기의 bounding box region 에 대해서 진행하기에는 computationally intractable
Selective Search (Region Proposal)
Crop 선정을 할 기준
전통적인 Signal Processing / Image Processing 테크닉
Object 가 존재할만한 bounding box 를 찾아줌
R-CNN
Selective Search 로 Region Proposal 을 뽑아줌 (~2000 regions)
Image region 을 같은 ConvNet 로 학습시키기 위해서 동일한 크기로 warp
Warp 한 이미지를 ConvNet 으로 통과시킨 후 SVM loss 로 학습
여전히 computationally expensive
Regional Proposal 이 고정되어 있음
Inference time 도 느림 1000 개 가량의 regional propsoal 에 대한 forward propagation 을 진행해야 하기 때문
Fast R-CNN
Convolutional Layer 를 먼저 거쳐서 feature map 을 추출해냄
Region Proposal feature map 에 projection 하여 해당 영역을 feature map 으로 부터 잘라냄
ROI Pooling Layer 로 잘려진 feature map 영역을 동일한 크기로 변형함
이후 Fully Connective Layer 를 통과하여 classificaiton loss 및 bounding box loss 를 뽑아내고 이를 더해 최종적인 multi-task loss 를 계산
Region Proposal 별 ConvNet 을 거쳐야 하는 것 아닌, 이미지 전체가 ConvNet 을 거치기 때문에 R-CNN 에 비해서 학습이 빠름
Inference time 대부분이 Region Proposal 에 쓰임 (bottlenecked by Region Proposal)
Faster R-CNN
Learnable Region Proposal Network 존재
Loss 에 RPN 가 생성해낸 Region Proposal 에 대한 항목 2 개(object existance, coordinate) 와 최종적인 classificaiton, bounding box reggresion 항목 존재
기존 Region Proposal 알고리즘이 잘 동작하지 않는 영역에서도 잘 동작
Inference time 이 굉장히 빠름
YOLO/SSD
Region Propsal 을 찾고 해당 영역을 잘라서 학습하는 2단계 학습에서 벗어나 1단계만에 학습이 진행될 수 있는 형태로 변경
전체 이미지를 N×NN\times N 그리드로 나눈 뒤 각 그리드마다 potential bounding box 를 B 개씩 지정
학습의 결과는 각 그리드 마다의 bounding box 위치, 물체 존재 가능성, 그리고 class 에 대한 정보를담은 N×N×(5×B+C)N\times N\times (5 \times B +C) dimension 의 vector
Instance Segmentation
Object Detection 과 비슷하지만, bounding box 를 그리는 것에서 segmentation mask 를 입히는 것으로 변경된 task
Mask R-CNN
RPN 를 통해 Region Proposal 을 찾고 feature map 으로부터 projection 한 영역을 잘라낸 뒤 ROI Pooling 을 하는 것까지 Faster R-CNN 과 동일
이후 두 개의 branch 로 나누어짐
하나는 Faster R-CNN 과 완전히 동일한, classification class 와 bounding box coordinate 를 산출하는 ConvNet
하나는 C 개의 class 에 대한 각 pixel 의 mask 를 찾아내는 ConvNet