Object Detection의 기초를 알아야지 응용을 할 수 있기에 정말 기본적인 것들을 공부해보았다.
공부할 자료는 대부분 hoya012/deep_learning_object_detection 을 참고하여 진행했다.
참고 사이트 : https://github.com/hoya012/deep_learning_object_detection
진행 방향은 hoya012/deep_learning_object_detection 순서대로 진행했다.
github을 토대로하여 하나씩 살펴보자면, 처음에는 object_detection paper 들의 시간적 흐름이 나온다.
여기 있는 detector 들이 다 중요하지만, hoya012가 추천하는 논문들은 꼭 읽기를 추천한다.(빨간색으로 표시된 것)
그럼 큰 글씨는 논문이름이고, 밑에 있는 파란색은 무엇인가?
논문 이름 밑에 파란색으로 되어 있는 부분은 논문이 수록되어 있는 학회와 논문 수록 연수를 의미한다.
Example_
OverFeat라는 detetor의 논문이 ICLR 학회에 수록이 되어있고, 2014년에 나왔다.
논문 학회들은 정말 여러군데가 있는데 hoya012_github의 나오는 학회들만 알아보자면 이러하다. (파란색)
1) 인공지능 관련 학회
(the Ninth International Conference on Learning Representations)
- 표현학습 국제학회
(Neural Information Processing Systems)
- 신경정보처리시스템 학회
- 인공지능, 기계학습, 뇌과학 분야에서 최상급의 권위를 가진 학회 (매년 12월 개최)
(Association for the Advancement of Artificial Intelligence)
- 국제 인공지능 학회
- 미국 내 인공지능을 연구하는 학회
2) 엔지니어링 & 컴퓨터 과학 분야 학회
(IEEE International Conference on Computer Vision and Pattern Recognition)
- 컴퓨터 비전 및 패턴인식 학회
(European Conference on Computer Vision)
- 유럽의 컴퓨터 비전 연구팀들이 주축이 되어 짝수년마다 개최하는 학술대회
(International Conference on Computer Vision)
- 홀수년마다 개최하는 국제 컴퓨터 비전 학회
- 2019년은 서울에서 개최되었다.
( CVPR, ECCV, ICCV 는 컴퓨터 비전 분야의 3대 국제학술대회이다. )
3) 그 외
(The British Machine Vision Conference)
- 영국에서 개최되는 컴퓨터 비전 및 관련 분야에 대한 주요 국제 학회
4) 학회가 아닌 논문수록집
(The IEEE Transactions on Pattern Analysis and Machine Intelligence)
- 사물의 패턴, 분석, 인식 부분의 수록집
- PAMI , TPAMI 라고 부른다
- 수학, 물리학, 천문학, 전산과학, 계량 생물학, 통계학 분야의 출판 전 논문을 수집하는 웹사이트
- 실험한 내용들을 토대로 작성된 가벼운 논문들이 모아져 있다.
hoya012에서 보이는 논문 학회, 수록집들은 이러하다.
더 많은 학회들을 보고 싶다면 [Google 학술 검색] - [통계]에서 볼 수 있다.
https://scholar.google.co.kr/schhp?hl=ko
다음으로는 Performance table이 나온다.
FPS(속도)는 이미지 크기 및 하드웨어의 영향을 받아서 제외하고 mAP만 보여주었다.
만약 속도도 표로 정리해서 보여준다면 하드웨어는 어떠하고, 이미지 크기는 어떻게 하였는지 같이 작성이 되어야 된다.
이 표에 대해 하나씩 분석을 해보았다.
VOC07 , VOC12, COCO는 데이터 셋을 의미한다.
VOC07 = The PASCAL Visual Object Classes Challenge 2007
VOC12 = The PASCAL Visual Object Classes Challenge 2012
COCO = Common Objects in Context <- MSCOCO 라고 많이 부른다.
데이터셋들의 크기를 보면 이러하다.
VOC07 | VOC12 | COCO | |
train size | 439 MB | 1.9 GB | 18 GB |
test size | 431 MB | 1.8 GB | 6 GB |
class | 20 | 20 | 80 |
VOC07의 데이터가 작은 것을 볼 수 있는데,
VOC07은 모델을 가볍게 돌려보거나 벤치마크를 할 때 사용된다고 한다.
데이터 셋에 대한 자세한 이야기는 뒤에 데이터가 나오기 때문에 그때 이야기를 하도록 한다.
Object Detection의 논문을 보면 mAP, IoU라는 말이 많이 나온다.
그래서 이것들이 무엇을 의미하는지 살펴보았다.
mAP, IoU를 사용하는 이유는 모델의 정확도를 말하기 위한 수치적 지표이다.
Object Detection의 정확도는 두 가지의 조건을 만족해야 된다.
1) 모델이 정답(GT: Ground Truth)과 유사한 Bounding Box 예측 (Regression)
2) Box안의 object의 class 예측 (Classification)
즉, Class도 정확히 예측하면서 동시에 object 영역까지 예측을 해야 된다.
이 정확도를 측정하기 위한 성능지표로는 총 6가지가 있다. 하나씩 살펴보자면 이러하다.
1) IoU (Intersection Over Union)
- Object Detection에서 Bounding Box를 얼마나 잘 예측하였는지 알기 위한 지표로 사용한다.
- 정답(GT)과 모델이 예측한 결과로 나온 두 BOX 간의 교집합 / 합집합 계산을 하여 구한다.
- 일반적으로 IoU가 0.5가 넘으면 정답으로 취급한다. (DataSet마다 기준이 다르다.)
2) Precision (정확도)
- 주로 recall과 같이 사용이 된다.
- 검출된 결과가 얼마나 정확한지, 즉 검출 결과들 중 실체 물체가 얼마나 포함되어 있는지를 나타낸다.
TP : 정답을 정답으로 예측 / FP : 오답을 정답으로 잘못 예측
3) Recall (검출률)
- 실제 정답을 얼마나 잘 예측하는지를 말한다.
- 대상 문체를 빠뜨리지 않고 얼마나 잘 잡아내는지를 나타낸다.
TP : 정답을 정답으로 예측 / FN : 정답을 오답으로 잘못 예측
Precision과 Recall은 반비례 관계를 가지게 된다. (두 값 모두가 높은 모델이 좋은 모델)
반비례인 이유 :
-> 알고리즘의 파라미터를 조절해서 검출율을 높이면 오검출이 증가하고
반대로 오검출을 줄이려고 조건을 강화하면 검출율은 떨어진다.
4) AP ( Average Precision )
- Precision과 Recall은 반비례 관계를 가지기 때문에 Object Detection에서는 AP지표를 주로 사용한다.
- Recall이 증가하면서 Precision이 감소하는데, 각 단위마다 Precision 값을 계산하여 평균을 내어 계산을 한다.
(0 ~ 1 까지 총 11가지)
예를 들어 Precision이 1이라는 것은 BBOX(Bounding-Box)에 100%로 물체가 있다는 뜻이다.
하지만 확률이 높은 BBOX만 있기 때문에 BBOX는 많이 있지는 않는다.
Precision이 떨어지면서 Recall이 증가하게 되는데 그만큼 이미지에서 모든 물체들을 찾을 가능성이 높아진다.
5) mAP(mean Average Precision)
- 한글로 해석하면 '평균 평균 정밀도' 가 된다.
- 말그대로 각 클래스마다 나온 AP들을 평균한 값이다.
- Pascal dataset처럼 클래스가 적으면 이런식으로 AP와 mAP를 다 보여주는 경우가 있다.
- 하지만 MSCOCO처럼 클래스가 많으면 mAP만 보여준다.
6) FPS (Frame Per Second)
- 초당 몇 장의 이미지가 처리 가능한지를 나타낸다.
( 하드웨어 또는 이미지의 size 크기에 따라 수치가 달라져서 상대적인 비교만 가능하다. )
Object Detection의 성능지표들을 알게 되었으니, 다음은 DataSet 밑 괄호안에 있는 것들에 대해 해석을 해보고자 한다.
mAP@IoU = 0.5
- IoU가 0.5 일 때, mAP의 값을 도출한 것이다.
mAP@IoU = 0.5 : 0.95
- IoU가 0.5~0.95까지 각 단위마다 mAP들을 뽑아서 10으로 나눈 것이다.
Object Detector는 2가지의 검출 방식으로 나뉜다.
2-Stage Detector , 1-Stage Detector
1) 2-Stage Detector
- 정확성을 추구하는 Detector
- Region Proposal 하고 Detection 으로 두 가지 과정이 순차적으로 수행된다.
- 1-Stage Detector보다 비교적 느리지만 정확하다는 특징이 있다.
종류 : R-CNN , ResNet, DenseNet, VGG, GOOglenet 등
2) 1-Stage Detector
- 속도를 추구하는 Detector
- 앞에서 설명한 두 가지의 과정을 한 번에 처리한다.
- 2-Stage Detector보다 빠르지만 부정확하다는 특징이 있다.
종류 : SSD, YOLO 등
마지막으로 DataSet의 정보를 살펴보았다.
Number of Images : 이미지 개수
Number of Annotated Images : Object 수
한 이미지에는 여러 Object가 있기 때문에 Number of Annotated Images의 수가 더 많은 것을 볼 수 있다.
(VOC만 Number of Annotated Images안에 괄호가 있는데 괄호 안에는 숫자는 무슨 의미인지 모르겠다. 아시는 분은 댓글로 부탁 )
여기까지 hoya012 GitHub 공부를 마치겠다.
Object Detection에서 기본적으로 알아야 되는 부분도 많이 알게 되었고,
기초부터 시작하시는 분들은 이런 식으로 시작해도 괜찮을 것 같다.
'Deep-Learning' 카테고리의 다른 글
[YOLOv4] YOLOv4 설치 및 테스트 - Ubuntu 20.04 (2) | 2021.04.09 |
---|---|
[YOLOv4] Pistols data를 이용하여 yolov4 학습하기 (2) | 2021.04.08 |