드디어 detection을 해보는구나.
이제 시작이니 조사를 해보아요
Contents
- 코드: mmdetection
- 기본 개념: 고전 알고리즘, evaluation metrics, Datasets...
- SOTA 모델: paperswithcode 찾아보기, foundation model 말고 그냥 object detection 잘되는거 찾기
- 기타: kaggle 등 toy example로 해볼만한 것?
TMI
3년차 엔지니어로서 지금까지 대략 Semantic Segmentation, GAN, Video (Action Recognition, Action Detection, Temporal Localization), Depth, Camera, T2I Retrieval, feature fusion 등을 다뤘는데
정작 Computer Vision의 3대장(?)으로 불릴 object detection을 안해봤다니
이건 있을 수 없는 일이야
코드 셋업하기
우선은 open-mmlab의 mmdetection을 깔아줍니다.
mm시리즈 중에서도 아마 이게 처음 나왔던가? 암튼 오래된거라 몹시 근본있습니다.
mmdetection
https://github.com/open-mmlab/mmdetection
기본 개념
region based, sing-shot, application 등 시리즈별로 글이 구성되어 있음.
일반적인 접근 방식(two stage & one stage 등), 고전 알고리즘, evaluation metric 등은 이거 살펴보려고 한다.
https://jonathan-hui.medium.com/object-detection-series-24d03a12f904
Evaluation Metrics
Object Detection 논문 보면 성능평가 할떄 죄다 AP 어쩌구잖음.
A...P... 찾아보면 average precision 값을 recall 0~1에 대해 계산한다고함. 뭔소리야?
Precision은 TP / (TP+FP)
Recall은 TP / (TP+FN) 인데.
binary classification할때 얼마나 positive로 잘 맞췄나 평가할때 나오는 metric이 대체 왜 여기서 나오지요?
공부해봐야지
1. IoU (Intersection over Union)
bbox 겹치는 면적의 비율이요.
intersection/union. 이름값 합니다. 설명 끝.
2. Average Precision (AP)
object detection이면 object의 위치를 bbox로 나타내잖음.
predicted bbox가 맞는지 평가를 하려면, 어떤 GT bbox와 얼마나 겹치는지를 알아야 하잖음.
그래서 IoU threshold(예시: 0.5)를 둬서, 어떤 bbox와 IoU값이 0.5가 넘으면 "와 bbox 찾았다!"하고 체크하나봄.
Precision-Recall Curve를 그리면 Precision이 y축에 있음.
둘다 0~1값을 가지니까, PR Curve의 면적이 Average Precision이 되는거임!
그런데 PR-Curve 그려보면 종종 우하향하지 않고 이렇게 지그재그하게 들쭉날쭉 할때가 있음.
그래서 오른쪽 방향으로 최대 precision값을 얻어서 해당 recall에 대한 maximum precision으로 할당하는것임. (초록선)
PASCAL VOC 2008
interpolated AP를 사용.
만약에 bbox 하나에 여러개가 매칭되더라해도 하나만 positive, 나머진 negative.
recall 값을 0.0, 0.1 ... 1.0 이렇게 11개로 나눈 다음에 얘네들 가지고 maximum precision의 평균값을 구함.
VOC 2010-2012
PASCAL VOC 그 이후에는 AUC (Area Under Curve) 계산. precision recall값이 딱 떨어지진 않음.
recall값들을 여러개 잡을건데 아까처럼 interpolate한게 아니고 maximum precision값이 떨어지는 경우에만 recall value를 샘플함.
COCO mAP
101개의 점에 대해 interpolated AP를 사용함. 0.05 step을 주겠다는 의미.
AP@[.5:.95]의 의미는 0.50~ 0.95까지 0.05씩 IoU threshold를 조절하면서 계산한 average AP값을 의미함. (그냥 AP라고 써있으면 저렇게 10개의 AP값의 평균이란다.)
COCO dataset의 metric들이 다양한데 이렇다네요.
mAP는 AP의 class별 average.
오 그러면 이제 대충 논문을 읽을 수 있겠다!
AP_50은 IoU가 정확히 0.50일때의 Average Precision이고, AP_75도 정확히 0.75일때를 말하는거고.
small, medium, large는 object 면적가지고 나눈거고.
더 자세한 예제는 이 게시글의 뒷부분을 보면 될 것 같다.
https://towardsdatascience.com/on-object-detection-metrics-with-worked-example-216f173ed31e
SOTA 찾자
https://paperswithcode.com/task/object-detection
메이저답게 벤치마크가 겁나 많은걸 알 수 있음. 61개나 있다고.
그런데 요즘 SOTA 모델들은 역시 Foundation Model, VIsion+Language 같이 배우는 형태가 많다.
그냥 이렇게 짱짱한 representation 배워놓음 -> downstream task에서 써먹음
segmentation도 대충 요렇다. 그래서 모델을 OCR 이후로 모르겠음.... ㄱ-
아무튼 내 경우에는 지금 pretrained model 없이 있는 데이터로만 성능을 내야하는 상황이라 이런건 못쓴다.
단독 모델로 좀 잘 될만한 애들을 섭외해보자.
1. DINO (DETR with Improved deNoising anchOr boxes, 현 1등)
https://arxiv.org/pdf/2203.03605v4.pdf.
2. Swin V2
여기도 large-scale training. self-supervised learning 사용
3. Florence도 유명한 foundation model중 하나니까 거르고... GLIP도 마찬가지로 text 사용
4. soft teacher 사용?
DyHead https://openaccess.thecvf.com/content/CVPR2021/papers/Dai_Dynamic_Head_Unifying_Object_Detection_Heads_With_Attentions_CVPR_2021_paper.pdf
CBNet V2
오 이거 한번 볼까
YOLO: 학부때부터 나오더니 아직도 새로 나오는...
https://paperswithcode.com/paper/you-only-learn-one-representation-unified
Fast/Faster/Cascade/Mask RCNN 한번 봐주고, CBNet이랑 YOLO 가장 최근버전 봐야지
Kaggle도 궁금하니 찾아봤다.
요즘 나오는 챌린지들.
많은 이미지를 사용하는거 말고 그냥 적당한거 찾다보니 이런게 있다.
https://www.kaggle.com/competitions/electric-transmission-imagery
https://www.kaggle.com/competitions/cv-2022-project-scene-understanding
대충 이정도면 자료 정리는 된건가
mmdetection에서 커스텀 데이터셋에서 돌려보면서 공부 시작해야겠다
'AIML 분야 > Object Detection' 카테고리의 다른 글
survey (0) | 2022.12.26 |
---|---|
[시도 1] mmdetection에 wandb (weight and bias) 적용 (0) | 2022.08.18 |
[2022.08.17] 공부 내용, 현황 요약 (object detection) (0) | 2022.08.17 |
Object Detection의 Ensemble 기법 조사 (0) | 2022.08.17 |
댓글