Priceless

[부스트코스] Segmentation & Object Detection 본문

ComputerVision

[부스트코스] Segmentation & Object Detection

Hyun__ 2023. 9. 24. 23:44

1. Semantic Segmentation

1-1. 개요

정의

이미지에서 픽셀 단위로 분류하는 작업

같은 클래스라도 서로 다른 객체를 구분하진 않는다

다른 객체를 구분하는 작업은 이후에 나올 예정 (Instance Segmentation)

적용

 영상 내의 컨텐츠 이해가 주 목적

객체를 구분하여 사용자의 후 처리 사용성 도모 등

 

 

1-2. 구조

Fully Convolution Networks (FCN)

end-to-end 구조

입력 데이터와 출력 데이터가 있으면 Network에서 알아서 찾아주는 모델

모두 미분 가능한 

Fully connected VS Fully convolutional

- Fully connected layer

Image Classification에 적용 

공간 정보를 고려하지 않고

벡터가 주어지면 1차원 벡터로 flattening 후 길게 만든 후 fully connected 의 input으로 사용

영상의 공간 정보가 고려되지 않고 하나의 데이터로 섞인다

 

채널 축으로 flattening 한 후 생긴 1차원 벡터들을 fully connected

필터 개수 만큼 통과 시켜 각 위치에 결과 값을 채워 넣는다

 

1x1 로 대체 가능

- Fully convolution layer

Image Segmentation에 적용

입력도 tensor 출력도 tensor

1 x 1 conv으로 구현

 

input은 크지만 output은 작다

receptive field를 키운다

해상도를 낮출 수 밖에 없기 때문에 업샘플링을 사용한다

 

Upsampling

작은 activation map을 원본 데이터에 맞추기 위해 사용

영상의 전반적인 context를 파악해야 함

일단 작게 만들어서 receptive를 키워 놓는 것이 성능에 좋다

이후 업샘플링을  통해 원본 해상도에 맞춘다

 

- Transposed convolution

step 만큼 이동하면서 곱한 후 합한다

중첩이 생기지 않도록 step 크기를 조절해야 한다

 

- Upsample and convolution

위에서 생긴 어설프게 중첩된 문제를 해결하기 위해 사용

upsampling을 통해 골고루 영향 받도록 한다

up conv 두 개로 분리

영상처리에 사용하는 interpolation을 먼저 적용한 후 (해상도 업)

이후 conv 적용

과정

낮은 레이어에서는 

국지적이고 작은 디테일을 보고 작은 디테일에 민감해진다

 

높은 레이어에서는

해상도가 낮아진다

큰 rec field를 가지고 영상에서 의미있는 전반적인 데이터를 포함한다

 

seman seg에서는 둘 다 필요하다

왜냐면 픽셀별 의미 파악, 영상 전체에서 물체 경계선 기준으로 안에 있는지 밖에 있는지 파악해야 하기 때문

 

그래서 두 개를 퓨ㅜ존

 

높은 레이어의 데이터를 업샘플링하여 해상도를 크게 높이고

그에 맞춰 중간 층의 activation map을 업샘플링 해서 가져온다

 

최종 출력을 만들 때

32: 

16: pool 4에서의 정보만을 가지고 만든 

8: Poo; 3 4 con7 을 합한 map

 

구조

activation map만 사용한 것부터

중간 단계의 정보를 많이 합친 결과물 까지

후자가 성능이 훨씬 높다

 

 

Hypercolumns

낮은 레이어와 높은 레이어의 파트를 융합해서 쓰는 연구

해상도를 맞춰서 합쳐서 사용

end tto end 가 아닌

바운딩 박스를 먼저 친 후 적용

 

1-3. U-Net

특징

fully conv

낮은 층의 특징과 높은 층의 특징을 결합하는 방법을 제시 skip connetctio 을 통해

구조

입력 영상을 

해상도를 낮추고 채널 수를 높인다

 

업샘플링

파이토치 코드

kernel_size, stride를 둘 다 2로 하여 중첩을 방지한다

1-4. DeepLab

convolution 영역의 step을 설정하여 더 넓은 영역을 conv

depthwise convolution

pointwise convolution

 


2. Objection Detection

2-1. 정의

영상 내에서 어떤 물체가 있는지 Classification을 하고

정확한 위치에 맞게 Box localization을 하는 영상 처리 작업

 

2-2. Two-stage Detector (R-CNN family)

과거의 기법

- Gradient-based detector

사람이 직접 객체의 feature를 조절

 

- Selective search

비슷한 영역을 잘게 분할 

분할된 영역을 재조합

비슷한 영역끼리 합한다

 

R-CNN

2천개 이하로 영역을 나눈다 region proposal

적절한 사이즈로 warping 한 후 trained CNN 모델에 넣는다

학습을 통한 성능 향상에 한계가 있다

 

Fast R-CNN

conv feature map을 추출한다

뽑은 feature을 재활용하기 위해 

RoI pooling layer

bouding box을 regression한다

손으로 작업하는 알고리즘으로 성능 향상에 한계가 있다

 

Faster R-CNN

region proposal을 NN 기반으로 대체된 

최초의 end to end 모델

 

IoU(Intersection over Union)

두 영역의 오버랩 정도를 측정

 

anchor box

 

GT

 

Non Maximum Suppression(NMS)

을 사용

 

RPN 을 통해 학습

2-3. Single Stage Detector

목적

real time detection을 목표

 

YOLO

 

성능이 좋음

Single Shot Multibox Detector(SSD)

YOLO 와 Faster R-CNN보다 훨씬 성능이 높다

 

2-4. 비교

one stage detector는 ~가 없기 때문에 

 

Focal loss

크로스 엔트로피와 비슷한 개념

앞에 확률 term을 추가

맞추면 못 맞추면

정답에 가까우면 gradient 무시

 

RetinaNet

UNet과 유사한 구조

low level과 high level 같이 잘 사용한다

 

 

2-5. Detection with Transformer

DETR

bbox reg

 

Further reading

대표적인 예

- CenterNet

객체의 center point(keypoint) 를 통해 객체의 bounding box를 예측하는 single-stage detector 모델이다

입력으로 받은 이미지를 연산 하면 최종 출력되는 feature에서는 서로 다른 key point들에 대하여 heatmap을 가진다. 이 heat map의 최고점(peak)이 object의 중앙점으로 예측된다

각각의 중앙점은 bounding box를 위해 고유한 width와 height를 가집니다. 따라서 중앙점 + width + height로 그려지는 bounding box 이다. 각 중앙점이 어떤 클래스에 해당하는 지 파악할 때에도 앞에서 언급한 heatmap의 peak를 사용하여 bounding box의 위치 및 크기와 그 box가 나타내는 클래스의 정보를 알 수 있다

 

- CornerNet

anchor box를 사용하지 않고 두 keypoint(왼쪽 위 point와 오른쪽 아래 point)를 통해 객체의 bounding box를 예측하는 single-stage detector 모델이다

하나의 CNN을 통과시켜 같은 객체에 대한 top-left, bottom-right의 heat map을 얻고 embedding vector를 얻는다. 이때 embedding은 같은 object에 대한 Corner를 쌍으로 묶어주는 역할을 한다.

embedding vector와 작은 해상도의 heat map에서 원본 이미지로 복원하는 과정에서 위치가 부정확해지는 것을 막기 위한 offset term을 통해 보정하여 최종 bounding box를 예측한다

 

 


아래 사이트를 정리했습니다

컴퓨터 비전의 모든 것 > 오리엔테이션 : 부스트코스 (boostcourse.org)

3강 Seg&Det

 

CornerNet

https://deep-learning-study.tistory.com/613

https://talktato.tistory.com/19

 

CenterNet

https://gaussian37.github.io/vision-detection-centernet/