Priceless
[부스트코스] Segmentation & Object Detection 본문
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/
'ComputerVision' 카테고리의 다른 글
[부스트코스] GAN & Conditional Generative Model (1) | 2023.11.01 |
---|---|
[부스트코스] Advanced Seg & Det Models (1) | 2023.11.01 |
[Vision] 영상 구조와 특징(C++) (0) | 2023.10.16 |
[부스트코스] 컴퓨터 비전과 딥러닝 (0) | 2023.09.20 |
[부스트코스] 컴퓨터 비전의 시작 (0) | 2023.09.18 |