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 적용 가능
'공부' 카테고리의 다른 글
[컴파일러개론] 기말고사 정리 (0) | 2022.12.19 |
---|---|
[소프트웨어공학] 기말고사 정리 (1) | 2022.12.14 |
[컴퓨터비전] 11, 12주차 정리 (0) | 2022.12.14 |
[컴퓨터비전] 9, 10주차 정리 (0) | 2022.12.13 |
[컴퓨터비전] 7주차 정리 (0) | 2022.12.13 |