Priceless
[부스트코스] Advanced Seg & Det Models 본문
1. Instance Segmentation
1-1. What is instance segmentation?
Segmentation의 종류
아래의 다양한 segmentation 종류가 있다

Instance segmentation의 정의
같은 물체의 class라도 instance를 구분하는 segmentation을 Instace Detection이라 한다
Instance를 구분해야 하므로 Objetc detection의 instance 구분 기능을 기반으로 Instance segmentation 모델을 만들 수 있다

1-2. Instance Segmenters
Mask R-CNN
faster R-CNN과 유사한 구조를 가진 네트워크이다
이와 비교했을 때 다른 두 가지 특징이 있다
- 소수점 픽셀 레벨 접근
faster R-CNN의 경우 region proposal을 기반으로 ROI pooling 기법을 사용하였기 때문에 정수 좌표만 처리 가능했지만
Mask R-CNN은 새로운 pooling layer인 ROIAlign에서 interpolation(보간법)을 통해 소수점 픽셀 레벨까지 pooling이 가능해져서
더욱 정교한 특징을 뽑아 성능 개선이 이루어졌다

- Mask Branch 추가
faster R-CNN 에서는 pooling된 feature 위에 헤드가 두 개 있었다(classification, box regression)
기존의 헤드 옆에 새로운 mask branch가 추가되었다
mask branch는 우선 업샘플링(7x7 -> 14x14)하고
채널의 차원을 줄인다(256 ->80)
모든 클래스에 대한 각 클래스 별로 바이너리 마스크를 예측하도록 한다(semantic seg와 동일)
하나의 bounding box에 대해 일괄적으로 모든 클래스에 대한 마스크를 생성
이후 classification 헤더에서 class의 예측 결과를 이용하여 마스크를 반환한다

R-CNN의 계보

기존의 R-CNN에서 기능이 하나씩 추가되는 과정이다
Mask R-CNN은 Faster R-CNN에서 mask FCN predictor 기능의 branch가 추가된 방식이다
YOLACT(You Only Look At CoefficienTs)
Real-time으로 semantic segmentation이 가능한 single stage 네트워크이다
- feature pyramid
feature pyramid 기반의 구조를 backbone network로 사용하여 고해상도의 feature map을 활용할 수 있다
- prototypes
마스크의 프로토타입을 추출해서 사용
완성된 마스크가 아닌 추가로 합성 가능한 마스크를 사용하여 bias와 같이 마스크를 조정할 수 있다
- Mask coefficient
prediction head에서 각 detection 결과를 합성하기 위한 계수를 출력하고 이를 프로토타입과 선형 결합하여 response map를 만든다
coefficient와의 결합에 따라 아래의 결과 집중되는 instance가 다른 것을 알 수 있다

YolactEdge
소형 디바이스에서 동영상 처리를 한 모델
이전 frame에서 key frame에 해당하는 feature를 다음 frame으로 전달하여 feature map에 대한 계산량을 획기적으로 줄인 모델
영상에 적용
아직 더욱 경량화가 필요하고 독립적으로 작동하기에 보완할 점이 많다

2. Panoptic Segmentation
2-1. What is panoptic segmentation
Panoptic segmentation의 정의
객체의 instance를 나누는 instance segmentation에서 배경의 정보까지 포함하는 모델이다

Panoptic 단어의 뜻
panoptic의 뜻은 아래와 같으며
영국의 철학자인 제러미 벤담이 제안한 감옥 건축 양식인 패놉티콘(panopticon)도 이 단어에서 유래한 듯 하다

2-2. UPSNet & VPSNet
UPSNet
FPN 구조를 사용하여 고해상도 피쳐 맵을 뽑는다
여러 head branch가 있다
- semantic head: FC 구조로 semantic map을 생성한다
- instance head: 물체 감지와 box reg가 있고 mask logit(확률값 표현 함수)을 추출한다
- panoptic head: 위의 head branch의 결과를 합해 하나의 segmentation map을 생성한다

물체를 배경을 예측한 head에서 배경 mask의 결과는 바로 최종 panoptic logit의 layer에 추가된다
감지된 각 instance들을 전체 이미지에서 해당하는 위치에 넣어준 형태로 사용하기 위해
semantic head의 물체 부분을 masking 해서 그 결과를 instance head의 결과와 더해 최종 출력에 추가한다
박스 사이즈와 물체 크기가 일치하면 이미지에서 위치를 조절해서 넣는다
이 외에 instance와 배경으로 분류되지 않은 영역을 unknown class로 별도 저장하여 최종 출력에 포함한다

VPSNet(for Video)
동영상 이미지를 segmentation하기 위한 panoptic segmetation 네트워크이다
인접한 두 frame 사이에 motion map을 먼저 사용해서 각 frame에서 출력된 feature map을 motion에 따라 warping한다
이때 motion map은 한 frame에서 다른 frame의 변화에서 각 점이 다음 frame이 어떤 점으로 매핑되는지,
그 대응 관계를 가지고 있는 motion을 나타낸다
연속된 여러 frame의 feature map을 motion map을 통해 마치 한 frame의 feature map처럼 만들어준다
이후 target frame의 feature map과 warping된 feature map을 합쳐서 사용한다
이렇게 여러 frame의 feature map을 활용함으로써 시간 연속적으로 부드러운 segmentation map을 얻을 수 있다

그 다음 ROI의 feature를 추출하고, 이를 tracking head를 활용하여 기존의 ROI와 현재 ROI들이 어떻게 서로 연관되어 있는지, 그전에 몇 번 ID를 가진 물체인지를 확인하고 matching한다.
이를 통해 같은 물체가 시간이 지나더라도 같은 ID를 가지도록 tracking한다

마지막 부분은 UPSNet과 거의 동일하다
bounding box head, mask head, semantic head, tracking head의 출력을 기반으로 하나의 panoptic segmentation map을 출력한다

VPSNet의 시연 영상과 추가 정보를 아래에서 확인할 수 있다
https://youtu.be/AW6ZMy8TWdI?si=EiqvitPrKoNVE94x
3. Landmark Localization
3-1. What is landmark localization?
물체에서 중요하다 생각하는 keypoint를 landmark로 정의하고
이 landmark들을 estimate(추정)하고 predict(예측)하는 알고리즘이다
landmark를 직접 지정한다
사람 얼굴의 경우 눈, 코, 입 등이 landmark가 될 수 있으며,
사람의 움직임의 경우 각 관절이 landmark로 사용될 수 있다

3-2. Coordinate regression VS Heatmap classification
Landmark Localization을 수행하기 위한 keypoint를 찾는 두 가지 방법이 있다
- coordinate regression
픽셀 하나 하나에 대한 좌표를 예측한다
bounding box regression과 같이 landmark의 좌표값에 대해 regression을 수행하는 방법
이 방법은 부정확하고 편향되어 있어 일반화되기 어렵다
- Heatmap classification
각 채널들이 하나의 keypoint가 할당되고 keypoint마다 하나의 클래스처럼 생각하여
그 keypoint가 발생할 확률 맵을 각 픽셀 마다 계산하여 classification을 수행한다
이 방법은 성능이 높지만 모든 픽셀에 대한 연산으로 계산량이 많다

Landmark location to Gaussian heatmap
heatmap을 사용하기 위해 기존 좌표에서 heatmap으로 변환해야 한다
heatmap은 각 위치의 confidence(신뢰도)가 시각화되는 형태이다
(x, y)에 landmark가 한 개 존재한다는 레이블이 주어졌을 때, 아래 코드와 같이 구현할 수 있다

# Generate gaussian
size = 6 * sigma + 1 # 출력할 해상도의 크기 설정
x = np.arange(0, size, 1, float) # x축 배열 설정
y = x[:, np.newaxis] # y축 배열 설정, 정사각형 영상이다
x0 = y0 = size // 2 # x, y의 중심 좌표 설정
# The gaussian is not normalized, we want the center value to equal 1
if type == 'Gaussian': # 가우시안 함수
g = np.exp(- ((× - x0) ** 2 + (y - yO) ** 2) / (2 * sigma ** 2))
elif type == 'Cauchy': # 코시 함수
g = sigma / (((× - x0) ** 2 + (y - y0) ** 2 + sigma ** 2) ** 1.5)
heatmap 예제
실제 heatmap을 적용하고 location을 하는 예다
영상 속에서 원하는 객체를 감지하여 확률을 나타낸다

heatmap을 통해 classification을 진행한다

이후 segmentation 결과와 비교한 후 최종 결과 도출

3-3. Hourglass network
Landmark detection을 하기 위해 heatmap의 장점을 극대화한 구조로 모래 시계(hourglass)와 유사하다
U-Net을 여러 개를 쌓은 구조와 유사하며 downsampling과 upsampling이 반복적으로 수행된다
영상의 receptive field를 크게 가져가서 전반적인 큰 영역에서 Landmark를 찾는다
hourglass network에서도 skip connection 이 있어서 low level feature를 참고해서 정확한 위치를 지정하도록 한다
이후 반복하여 개선하여 큰 위치와 디테일을 보정한다

구체적인 구조는 아래와 같다
+ 연산으로 차원이 늘지 않지만 skip connection할 때 해상도를 맞추기 위해 별도의 convolution layer를 통과한 후 더해야 한다

3-4. Extensions
DensePose
신체 모든 부위에 대해 3D 모델로 색상과 함께 표현한 영상

아래와 같이 삼각형으로 덮어서 표현한다
삼각형과 삼각형의 위치를 1대1로 매칭하여 3차원을 구현한다
1대1로 매칭이 되어 있으므로 객체가 움직이더라도 삼각형이 조절된다
이러한 방법을 컴퓨터 그래픽스에서 폴리곤 매쉬(polygon mesh)라고 한다

구현 방법
Faster R-CNN과 유사하다
3D surface regression branch를 추가한 네트워크이다
patch layer에는 신체를 부위별로 나눈 segmentation map이며,
이를 토대로 2D -> 3D를 나타내는 UV map을 만든다

RetinaFace(Multi-task Learning)
FPN 에 필요한 task를 모두 넣어 얼굴 인식을 구현한 모델이다
아래 모델의 경우 classification, box regression, landmark regression, 3D regression 모두 사용된 모델이다
공통된 정보에서 강화된 backbone 네트워크를 통해 성능을 향상시킨다

이와 같이 기존의 backbone network에 원하는 기능의 branch를 추가하여 다양한 응용이 가능하다
4. Detecting objects as keypoints
4-1. CornerNet
구성
bounding box를 (top-left, bottom right) 포인트를 detect하여 결정하는 방식이다
단순하기 때문에 성능이 낮지만 속도가 빠르다

4-2. CenterNet
첫 번째 CenterNet
CornerNet에서 Center point를 추가해서 bouding box를 결정하여 Detection 하는 네트워크이다
Center point를 통해 성능을 보강할 수 있다

두 번째 CenterNet
(Width, Height, Center point)를 통해 bounding box를 결정하여 detection 하는 네트워크이다

4-2. 성능 비교
CenterNet이 다른 모델에 비해 속도가 매우 빠르다

아래 사이트를 정리한 자료입니다
컴퓨터 비전의 모든 것 > 오리엔테이션 : 부스트코스 (boostcourse.org)
5강 Advanced Models
'ComputerVision' 카테고리의 다른 글
[부스트코스] CNN Visualization (0) | 2023.11.07 |
---|---|
[부스트코스] GAN & Conditional Generative Model (1) | 2023.11.01 |
[Vision] 영상 구조와 특징(C++) (0) | 2023.10.16 |
[부스트코스] Segmentation & Object Detection (1) | 2023.09.24 |
[부스트코스] 컴퓨터 비전과 딥러닝 (0) | 2023.09.20 |