출처: AI 엔지니어 기초 다지기 : 네이버 부스트캠프 AI Tech 준비과정
Semantic Segmentation
dense classficaton이라고 불리기도 한다.
이미지의 모든 픽셀이 각가 어느 label에 속하는지 찾는 것이다.
대표적 예시)
Remind)
그렇다면 Semantic Segmentation에서 쓰는 CNN구조는?
Fully Convolutional Network(FCN): Convolutionalization을 사용한 CNN 구조
Convolutionalization: Dense layer를 없애는 과정 (큰 장점이 dense layer를 없애는 것)
그러면 왜 사용하는걸까?
Input image size에 상관없이 작동 可
a classification net can produce a heat map.
근데 이 과정에서 output dimension이 subsampling으로 인해 줄어드는 문제점이 있다.
-> 줄어든 output dimension 늘리는 방법 필요 (connect the coarse(드문드문 있는) output to the dense pixels )
Deconvolution(Conv Transpose): Convolution의 역 연산 같은 개념(파라미터 숫자, 크기 계산 이해 목적)
cf) 엄밀하게 따지면 Convolution의 역 연산이라는 것은 존재하지 않는다. Convolution 자체가 여러개의 부분을 합쳐서 하나로 만든 것인데 이걸 다시 나누는 경우의 수는 매우 많기 때문이다. 2+8 = 10을 만들었다고해서 10을 만들때 무슨 숫자를 더해서 만들었는지 다시 유추하는 것은 불가능하다.
이 과정을 거친 FCN의 결과이다.
Detection
픽셀로 찾는 것이 아닌 bounding box찾는 문제이다.
R-CNN: Detection을 수행하기에 가장 간단한(?) 방법 (Brute Force 완전탐색스러워서 시간도 오래걸림)
2번에서 patch를 뽑아내는 방법으로 사용한 것은 Selective search이다.
3번에서 쓴 것은 AlexNet이다. (일단 CNN하려면 크기맞춰야하니 크기맞추기 작업하는 것)
4번에서 classfiy를 위해 사용한 것은 linear SVMs이다.
근데 꼭 이렇게 1개 이미지 분석을 위해 CNN을 2000번 돌려야할까?
SPPNet: CNN은 1번만 돌려도 된다.
Fast R-CNN: SPPNet과 비슷하지만 뒤에 ROi feature vector를 통해서 output을 만든다는게 큰 차이점
bounding boxes 세트를 input에서 추출 (red box)
-> Convolutional feature map 생성 (yellow box)
-> 각 region마다 ROI pooling으로부터 get a fixed length feature (green box)
-> Two outputs: class and bounding-box regressor (blue box)
Faster R-CNN: Fast R-CNN + Region Proposal Network(RPN)
Region Proposal Network(RPN): 이미지 특정영역(patch)이 bounding box로서 의미가 있을지(Region Proposal, 물체유무여부) 판단
Anchor boxes: 미리 정해놓은 bounding box 크기
RPN은 FCN도 사용한다.
YOLO(v1): 매우 빠른 object detection algorithm. multiple bounding boxes와 class prbabilities 를 동시 추정!
최근엔 v5까지 나왔다고 함
빠른 이유: 그냥 이미지에서 바로 추출하기에 빠름. 즉, bounding box sampling(RPN) 과정이 없음
작동원리)
1) 이미지가 주어지면, YOLO는 SxS grid로 이미지를 나눈다.
2) 각 grid cell은 B개(논문의 경우 5개)의 bounding boxes를 예측한다.
이때 각 찾은 box의 x, y, width, hight(사이즈 크기)와 confidence of objectness(유용성 여부)를 추정한다.
이와 동시에 각 cell들은 해당 cell이 어느 class인지에 대한 확률을 계산한다.(class probability map)
3) it becomes a tensor with S * S ( B * 5 + C) size.
S * S: Number of cells of the grid
B * 5: B bounding boxes with offsets(x,y,w,h) and confidence
C: Number of classes
'Programming > Python' 카테고리의 다른 글
Generative Models(생성 모델), GAN (3) | 2024.02.27 |
---|---|
Recurrent Neural Networks(RNN), Transformer (1) | 2024.02.27 |
[CNN] Convolutional Neural Networks (1) | 2024.02.27 |
인공지능 기본 수학 (베이즈 통계학, 인과관계 추론) (2) | 2024.02.18 |
인공지능 기본 수학 (확률론, 통계) (2) | 2024.02.18 |