Search

Recognition, Classification, Detection

카테고리
DL/ML
Index
DeepLearning
날짜
2024/11/25

1. Recognition

Recognition

넓은 의미의 단어로, classification, segmentation, detection 등의 세부 문제를 포함하는 컴퓨터 비전 분야
→ 사람과 달리 컴퓨터 비전은 세부 문제로 구분해서 업무를 수행
1.
Classification(분류)
영상에 있는 물체의 class를 알아내는 문제
보통 class에 대한 확률벡터를 출력하게 됨
COCO Dataset은 사람, 자전거, 자동차등 80개의 Class를 포함하고 있음
2.
Detection(검출)
영상에서 물체를 찾아 bounding box를 위치로 표현하고, 해당 bounding box의 물체에 대한 class 확률도 같이 출력하는 문제
보통 class는 미리 정해져 있는 경우가 많음
3.
Segmentation(분할)
물체가 점유하는 영역, pixel 단위에 대한 class 확률을 출력하는 문제
semantic segmentation과 instance segmentation으로 나뉨

사람의 Recognition vs 컴퓨터의 Recognition

1.
사람의 인식
사람의 인식과정은 세부 문제를 별도록 수행하지 않고 여러개의 문제를 동시에 수행함
지식 표현과 추론등의 지능적인 요소를 통해서 명확한 의도를 갖고 수행하고, 의도에 따라서 선택적 주의집중(Selective attention)을 발회
→ 선택적 주의집중을 통해서 의도에 도움이 되는 부분만 세밀하게 분석
2.
컴퓨터의 인식
컴퓨터는 사람과달리 동시에 여러가지의 문제를 해결하는 것이 어렵기 때문에 여러 세부문제로 나누고, 독립적으로 세부문제들을 해결
대상 물체 또는 응용 Task에 따라서 여러 다른 문제로 구분해서 해결
능동적으로 문제해결이 불가능하고, 과업에 대한 목적이 의도를 대신

Recognition 관련 데이터셋과 대회

MNIST&CIFAR-10, ImageNet 데이터셋와 같은 데이터셋의 발전에 힘입어 좋은 결과를 보여주고 있음

유명 데이터셋과 대회

1.
PASCAL VOC (2005~2012)
20개의 class, 50만장의 영상으로 구성되어있음,
2.
ImageNet
Object Dection을 위한 바운딩박스로 레이블링된 데이터셋으로, 21841개의 class, 1400만장의 대규모 데이터셋
ILSVRC 대회 : 1000개의 class만 뽑아서 100만장의 train data, 5만장의 validation data, 15만장의 test data에 대해서 성능을 측정하는 대회
→ ICCV, ECCV 대회 개최
3.
COCO Dataset (2015~2020)
80개의 class에 대한 33만장의 영상으로 구성되어있음
Segmentation 정보가 제공되고, 영상을 설명하는 문장(annotation)으로 구성
4.
Open Images
구글에서 제공되는 데이터셋으로, 분류, 검출, 분할 정보가 모두 레이블링 된 데이터셋
행동 분류에 사용됨
각 대회에서는 세부문제에 따라서 다양한 metrics를 사용해서 성능평가를 진행함
train data에는 영상과 label 정보를 제공하고, test data는 label 없이 영상만 제공하는 경우가 많음
참가자는 train set으로 모델을 학습하고, validation set으로 하이퍼파라미터 튜닝을 진행함, 추후 test set으로 예측을 수행해서 예측 결과를 대회 서버로 전송
→ 서버는 자동으로 채점해서 성능을 측정하고 순위를 공지

2. Classification

고전적인 classification 방법론

1.
Instance Classification(사례 분류)
모양과 텍스쳐가 고정된 특정 물체를 분류하는 문제
→ 차나 교통 표지판같은 딱딱한 텍스쳐의 물체를 분류하는 경우
물체를 구성하는 직선과 곡선을 분석하는 기하학적 방법이 주류를 이룸
2.
Categorical classification(범주 분류)
코끼리나 자전거같은 모양과 자세변화가 심한 일반적인 class의 물체를 분류
혼재와 가림을 허용하기 때문에 더욱 어려움

딥러닝 기반 classification 의 특징

딥러닝 발전에 따라서 딥러닝을 적용하여 catagorical classficiation을 해결하고자 함
→ ImageNet의 성능 향상 추세
딥러닝 기반 classification은 분류결과에 대한 이유를 설명하지 못하는 치명적인 한계를 갖고 있기 때문에 이를 해결하기 위해서 설명가능성을 확보하려는 연구가 개발됨
→ CAM과 GradCAM

1. CAM(Class Activation Mapping)

기존 CNN에서 Global Average Pooling을 사용해서 전체 feature map에서 평균값을 pooling
→ 기존 convolution structure는 유지하고, 마지막 Conv layer 뒤에서 GAP를 수행한 뒤 FC layer을 거치는 구조
→ GAP를 통해서 마지막 feature map을 압축해서 각 채널의 평균을 구하게 되고, 각 채널의 평균 activation 값을 구할 수 있음
FC layer를 없애고 1개의 FC layer를 통해서 classification을 수행함
→ 가중치를 이용해서 특정 클래스에 대한 채널 별 가중치를 구함
→ 기존 CNN 구조에서 Conv layer에서 FC layer로 넘어가는 flattening에서 정보 손실이 일어났는데, 이 과정을 통해서 flattening 과정을 없애고 공간정보를 최대한 활용
→ GAP를 사용하면 flattening하지 않아도 1차원으로 줄일 수 있음
→ 각 채널에 대해 가중치를 곱한 뒤에 합산해서 클래스에 대한 최종활성화 맵을 얻게 되고, 모델이 클래스를 예측할 때 어떤 부분을 근거로 예측했는지 시각적으로 알 수 있음
CAM에다가 finetuning을 적용하면 convolution layer는 freeze하고 classification 을 위한 FC layer만 새로운 데이터셋에서 미세조정하게 됨
CAM은 특정 모델 구조에서만 적용할 수 있고, GAP가 없는 모델이나, Dense 층이 없는 모델에서는 사용할 수 없음

2. Grad-CAM(Gradient-weighted Class Activation Mapping)

Grad-CAM은 CNN 구조의 제약없이 사용될 수 있는 일반화된 방법으로, 클래스에대한 gradient값을 이용해서 activation map을 계산
→ 특정 클래스에 대한 예측 확률을 최대화 하는 방향으로 gradient 값을 구하고, 채널별로 구한 gradient 값을 통해서 weight(중요도)를 구함
→ feature map과 채널별 weight 값을 곱해서 특정 클래스에 대한 activation map을 형성
→ GAP layer를 사용하지 않고, gradient를 이용해서 weight를 구하기 때문에 마지막 layer가 아니어도 적용가능
LGradCAMc=ReLUΣkakcAkL_{Grad-CAM}^c = ReLU\Sigma_k a_k^c A^k
akca_k^c : weight 값
AkA^k : Feature map
Relu를 사용해서 최종활성화 맵의 양수 값만 남김
akc=1ZΣiΣjycAi,jka_k^c = \frac{1}{Z}\Sigma_i\Sigma_j \frac{\partial y_c}{\partial A^k_{i,j}}
Ai,jkA^k_{i,j} : feature map의 각 픽셀
ycy_c : target class에 대한 확률 값

3. Detection

object detection 문제는 classification에 대한 정보 뿐만아니라 물체의 정확한 위치정보고 같이 알아내야 되는 문제이기 때문에 classification 보다 복잡한 task임
output으로 물체의 위치(bounding box)와 함께 classification에 대한 confidence를 나타내는 확률 벡터를 출력

Dectection에서의 성능평가

주로 COCO 대회에서 사용되었던 mAP(mean Average Precision)을 사용함
→ class 각각에 대한 Average Precision 을 구하고, 모든 class에 대한 AP에 대해서 평균을 구한 것이 mAP
AP(Average Precision)
→ IoU기반으로 계산
IoU=area(BpredictBGT)area(BpredictBGT)IoU = \frac {area(B_{predict} \cap B{GT})}{area(B_{predict}\cup B{GT})}
AP 계산 알고리즘
1.
신뢰도 임계값을 넘는 prediction bounding box만 prediction 목록에 추가
→ IoU 임계값을 넘으면 TP, 넘지 못하면 FP로 판정
2.
TP이 발생하면, 쌍이 된 Groud Truth Box를 참값 목록에서 제거
3.
prediction 목록을 다 처리 했는데 쌍을 맺지 못해 남아 있는 GT 박스는 FN로 판정
4.
이렇게 구한 TP, FP, FN을 가지고 Precision(정밀도)와 Recall(재현율)을 구함
Precision=TPTP+FPPrecision = \frac {TP} {TP + FP}
→ 양성으로 판정된 것중에 진짜 양성
Recall=TPTP+FNRecall = \frac {TP} {TP+FN}
→ 진짜 중에 TP로 판정된 것
5.
가로축과 세로축에 Precision, Recall을 배치해서 Precision-Recall Trade off 그래프를 그릴 수 있음

두 단계 방법론과 한 단계 방법론

1. 두 단계 방법론

후보 영역을 생성하고, 그 영역 내에서 classification을 수행(RCNN)
기존의 방법은 커널을 통한 sliding window 방식을 사용해서 다양한 크기의 커널에 대한 탐색을 수행
모든 구역을 탐색하는 비효율성을 개선하기 위해서 물체가 있을 만한 영역을 후보영역으로 생성

2. 한 단계 방법론

위치와 classification 정보를 묶어서 동시에 위치 파악과 classification을 수행하는 방법 (YOLO)
→ bounding box 그리는 것과 classification probability 출력을 동시에 하는 것

3. RCNN

2단계 방법론 방식을 사용한 Decection 모델로, VOC2012(Visual Object Classes Challenge)에서 30%이상의 큰 성능 향상을 보임
1단계: Region Proposal(카테고리와 무관하게 물체의 후보 영역을 찾음)
2000개 정도의 bottom-up 후보 region(region proposal)을 추출
Selective search algorithm을 통해서 후보 region을 고르고 전체이미지가 1개의 single region이 될때 까지 grouping을 진행
→ Selective search algorithm : 색상, 크기, 형태 정보를 기반을 유사한 것 끼리 grouping
2단계: Region Classificiation
해당 proposal region 에 대해서 CNN 모델을 사용해서 feature extraction 을 진행
→ region proposal 에서 생성되 ROI는 각각 size가 다르지만, CNN 입력을 위해서 227x227 사이즈로 크기를 warp
→ 5개의 Conv layer, 2개의 FC layer로 구성
feature vector을 기반으로 각 region에서 class-specific linear SVM을 사용해서 classification 을 진행
→ CNN에서 추출된 feature vector를 input으로 받고, 각 클래스에 대반 class probability가 output으로 출력됨
→ 모든 scoring된 region에 대해서 greedy non-maximum suppression 진행
Greedy non-maximum suppression : 동일하거나 비슷한 영역이 있을 때 낮은 class score box에 대해서는 suppression 하고, 가장 큰 class score box만 채택하는 방식
RCNN의 한계
Region proposal에는 고전적인 방법을 사용하고, classification에서도 SVM을 사용하는 한계점을 가짐
영역마다 독립적으로 분류를 수행하기 때문에 매우 느림.

4. Fast RCNN

전체 이미지를 먼저 CNN 연산을 진행해서, region proposal과 feature extration을 동시에 진행하는 모델
CNN을 통해 얻은 전체 이미지에 대한 feature map에 region proposal로 얻은 ROI를 투영한 feature vector을 통해서 Region Classification을 진행
2개의 FC layer : 1개는 softmax로 class 확률을 예측하고, 1개는 bbox regressor로 bounding box의 위치를 추출
VGGNet이나 GoogLeNet과 같은 사전훈련된된 네트워크를 사용함

5. YOLO

한 단계 방법론을 사용해서 위치와 class에 대한 classification을 동시에 진행하는 모델로, RCNN보다 정확도가 떨어지지만 월등히 빠른 특징을 가짐
→ BBox에 대한 regression을 수행하고, one-hot code classification을 진행
1.
YOLO 처리과정
영상을 sxs 격자로 분할(실험에서는 7이 default)
물체 중심에 해당한 칸이 물체를 책임지고, 각 격자에 대해서 classification을 수행
→ 한 격자는 물체를 2개까지 책임 질 수 있고, 가장 신뢰도가 높은 물체를 선택
2개의 bbox에 대한 위치 정보와, 전체 클래스 정보 p1~pn이 주어짐
2.
YOLO 신경망 구조
24 CONV layer + 4 MAX POOLING layer + 2 FC layer
input image 는 448x448, output image는 7x7x90
loss function은 5개가 존재
bbox location, bbox size (2개)
bbox에 object가 있는지에 대한 confidence score(1개)
object classification (1개)
3.
YOLOv3
YOLOv3는 여러 스케일을 표현하기 위해 격자 사이즈를 다르게 나눠 다양한 크기의 물체 검출에 효과적