공부

[컴퓨터비전] 13, 14주차 정리

narlo 2022. 12. 14. 01:26

13주차

Segmentation

데이터를 의미있는 부분, 영역으로 나누는 것

 

Semantic Segmentation

pixel마다 어떤 class인지 맞추는 것, 배경도 포함

 

Instance Segmentation

thing에 해당하는 클래스, 배경은 X

 

Panoptic Segmentation

Semantic + Instance

 

Video Object Segmentation

tracking까지 같이 해주는

 

Semantic Segmentation

각 픽셀마다 어떤 클래스인지 맞추는 것

사전에 정의된 클래스에 대해서만 가능

애매함이 없다. 라벨링이 어렵다.(누끼)

객체 하나하나를 분류할 수 있는 능력은 X

 

이미지를 patch로 쪼개는 방법 : 비효율적

 

FCN(Fully Convolutional Network)

모든 layer를 conv로 구성

stride, pooling X => H * W 는 유지

D * H * W에서 Dimension => 깊어질수록 커진다.

마지막만 C * H * W를 출력하도록 하면 된다.

C는 클래스 수, 각 클래스일 확률을 나타냄(score map)

argmax 이용 => 클래스 분류

 

pooling : receptive field를 키울 수 있음, 연산량을 줄일 수 있음

=> downsampling -> upsampling -> softmax => loss를 줄이도록 학습

encoder, decoder구조

 

Unet

encoder, decoder구조

높이가 해상도를 의미

feature의 크기는 정점 커짐(두께)

 

downsampling, upsampling 구조의 단점

줄이는 과정에서 이미지 정보의 손실

 

skip connection을 이용

이미지가 컸을 때의 정보를 이용, concatenate

 

DeepLab V1

Atrous convolution(dilated convolution)

rate : 2 -> 두 칸씩 띄워서 좀 더 넓은 범위에서 conv할 수 있도록

연산량은 동일하지만 더 넓은 영역을 conv

=> receptive field가 증가한다.

 

DeepLab V2

ASPP(Atrous Spatial pyramid pooling)

다양한 atrous conv를 concatenate, 1*1로 섞어줌

특징을 고도화

ASPP는 한번에 해상도를 키워줌

 

DeepLab V3+

V2 + UNet

skip connection

depth-slide seperable conv

 

Instance Segmentation

instance별로 분류 + pixel 단위 segmentation까지

 

objective detection에 mask prediction만 달아줌

 

Panoptic Segmentation

Semantic, Instance의 장점만 뽑아

헤드가 2개로 나뉨

1. sementic head

2. instance head(object detect + instance)

동일한 backbone을 사용

 

VOS(Video Object Segmentation)

객체, 배경 분할(Clustering)

1. unsupervised VOS

- 힌트가 없는, 사람에 대한 지도가 없다. 영상의 주인공을 찾음

2. semi-supervised VOS

- 1 frame에 한해 target 객체를 설정(annotation)

=> mask를 그리는 데 시간이 오래걸림

3. Interactive VOS

사람이 힌트를 줌, 선의 형태로 정보 제공(빠르다, 효율적이다.)

1 frame에 대해 정보를 얻고 전파

 

Semi-supervised VOS

보통 비디오 전체 프레임을 받아오는 것이 아니라 2 frame을 이용

1 frame에 mask

H * W * 3에 객체에 대한 정보 H * W * 1

=> H * W * 4의 입력

 

siamese encoder

인코더 2개

reference frame 정보를 target frame에 섞어주도록


14주차

Object Detection

what(Recognition) : 객체가 어떤 class에 해당하는지

where(Localization) : 객체가 어느 위치에 있는지

 

Object proposal

많은 박스들로 객체가 있을 법한 위치를 예측

score를 이용하여 sort해서 상위 n개 이용

 

box coordinate

(x, y), 너비 w, 높이 h

head(branch)가 하나 더 생김

classification + localization => 멀티태스크

loss도 2개, class에 해당하는 loss, box에 해당하는 loss

=> single object인 경우

 

multiple objects인 경우

객체 1개마다 5개의 output

class, x, y, h, w

 

패치를 이용하는 방법 => 패치의 크기, 위치 등 경우의 수가 너무 많음

 

해결책

1. Region Proposals : Selective Search

객체가 있을법한 위치를 추정해줌

objectness score 계산 => 상위 n개

 

R-CNN

2000개의 proposal 추출

각 패치들에 대해 224 * 224 크기로 resize

ConvNet 통과(특징 추출) => vector화

 

SVM : binary classification

~인지 아닌지를 분류

SVM만 학습

SVM을 클래스 개수만큼 만들어 다 한번씩 해보기

=> 확률이 가장 높은 것으로 classfication

2000번의 ConvNet 통과는 여전히 너무 느리다. 정확도도 낮다.

 

Fast R-CNN

이미지를 바로 ConvNet에 통과

=> feature map으로 만들기

proposal의 위치 정보를 알 수 있기 때문에

feature map 상에서의 위치에 해당하는 부분을 뽑아다 쓴다.

RoI Pooling(Resion of Interest)

 

어떤 클래스인지 맞추고, box offset을 결정하는

proposal이 완벽하지 않다.

=> box를 객체에 최대한 tight하게 찾는 것을 목표로

=> x, y, w, h를 어떻게 변화시킬지 학습

 

Object category와 Box offset은 패치마다 진행해야함

conv가 2000번 이루어지는 것은 없앨 수 있었다.

object proposal이 시간의 너무 많은 부분을 차지

 

Faster R-CNN

Region proposal 부분을 CNN 안에 넣어버리자.

객체인지 아닌지 binary classification하여 객체하면 classification

 

Anchor box

3가지 scale, 3가지 aspect Ratio를 갖는 box

k : anchor box의 개수

 

1. n * m * 4k offsets

    4 = x, y, w, h

2. n * m * 2k objectness

    각 anchor box마다 객체인지 아닌지

 

mask R-CNN

mask 예측 헤드 추가

 

FPN(Feature Pyramid Networks)

요즘은 backbone에서 feature를 뽑을 때 사용하기도 함

feature를 다양한 scale에서 추출 => 특징을 조합해 사용

Convolution Network를 거치며 2배씩 작아지는 feature map 출력

1 * 1로 통과시켜 채널 수 맞추기 => 각각 2배로 upsampling

해상도 작을 때에는 큰 개체를 잘 찾음

 

two-stage detector

region proposal -> classification

느리지만 높은 정확도

 

one-stage detector

region proposal + classification

빠르지만 낮은 정확도

ex) YOLO

 

Image enhancement

어둡고 대비가 적은 이미지를 개선

1. histogram equalization

2. Gamma correction

 

최근

입출력 pair만 제대로 있으면 CNN를 학습 가능

 

Encoder - Decoder 구조

 

encoder에서 특징 추출

이 과정에서 해상도가 낮아짐

connection을 하나 달아줌 => 차이만 학습하도록

줄이고 다시 키우는 과정에서 정보 손실 => 한계가 있다.

 

최근에는 transformation function을 이용하는 방법

이미지 변화에 대한 function을 예측하는 것

global enhancement network

예측값이 768개밖에 없음

=> 경우의수가 줄어들었다.

 

preference vector 이용

=> personalized image enhancement 적용 가능