객체탐지 (Object Detection)
YOLO 이전 까지 흐름
컴퓨터 비전의 과제
컴퓨터 비전의 과제는 크게 세 가지로 볼 수 있습니다. Classification(분류)과 Object Detection(객체탐지), Instance Segmentation입니다. 예를 들어 Classification은 고양이사진을 받았을 때 컴퓨터가 이게 고양인지 아닌지 분류할 수 있어야 하고, Object Detection은 Classification과 Localization이 합쳐진 개념인데 고양이가 어디에 위치해 있는지 알아낼수있어야합니다. 마지막으로 Instance Segmentation은 사실상 궁극적인 형태로 개를 개의 형태로 개라고 인지할 수 있어야합니다. 이 포스트에서는 Object Detection의 흐름과, YOLO를 중점적으로 다룹니다.
객체탐지의 흐름
Object detection의 흐름입니다. RCNN과 FastRCNN, FasterRCNN을 간략하게 짚고 YOLO에 대한 설명을하려합니다.
Classification + Localization
먼저 Classification은 고양이 사진을 고양이라고 분류를 할 수 있어야 하고 Localization은 사진에서 고양이가
어디 위치에 있는지 알 수 있어야 합니다. 사람들은 Localization을 하기 위해서 Sliding Window라는 방식을 처음 사용하기 시작했습니다 .
Sliding Window
처음에는 슬라이딩윈도우 하는 방식을 사용했었는데 윈도우를 움직여서 윈도우 안에 정보가 많이 담겨 있다고 판단될 때 거기에 오브젝트가 있다고 판단하는방법입니다. 하지만 Object(객체)가 몇 개가 있을지도 모르고 어디 있을지도 모르고, 사이즈를 어떻게 할지에 대한 문제도 있었기 때문에 지금은 거의 사장된 기법인 것같습니다.
Region Proposal
이런 슬라이딩 윈도우 방식의 비효율성을 개선하기 위해서 Object가 있을 만한 영역을 빠르게 찾아내는 알고리즘이 제시되었습니다. 바로 Region Proposal 알고리즘입니다. 대표적으로 Selective Search 같은 게 있는데, 색이나 질감 같은 게
비슷한 픽셀 들끼리 묶어서 윈도우를 생성합니다. 이런 윈도우를 일반적으로 2000개를 proposal합니다. 그리고 이 proposal된 region을 RoI(Region of Interset)라고 합니다. 하이퍼파라미터를 찾기위한 그리드 서치랑 랜덤 서치를 생각해보면 슬라이딩 윈도우와 Region Proposal에 대해서 좀 더 직관적으로 받아들일 수 있을 것 같습니다.
RCNN
RCNN은 이런 Region Proposal을 이용한 알고리즘입니다. 2000개 가량되는 Region of Interest를 짤라내서 그만큼 CNN을 통과시켜 분류합니다. 슬라이딩 윈도우보다는 훨씬 빨라졌지만 실시간으로 하기에는 아직 너무 느리고, 연산량도 너무 많아 좀 더 개선하고자 나온 것이 FastRCNN입니다.
Fast RCNN
이미지에서 먼저 ROI를 찾는게 아니라 Convolution을 해서 먼저 Feature map을 뽑습니다. 그리고 그 위에서 ROI를 뽑는 방식입니다. 오른쪽에 보시면 테스트 타임이 훨씬 줄어든 걸 알 수가 있죠. 49초에서 2.3초로 줄어 들어 매우 많이 개선되었다고 볼 수 있습니다. 하지만 여기에도 문제가 있습니다. Region Proposal을 포함한건 2.3초인데 Region Proposal을 뺀 거는 1초도 안 되네요. 그래서 여기서 병목현상이 발생합니다. 그럼 Region Proposal(시간)를 어떻게 줄여볼까해서 나온 게 Faster RCNN입니다. Faster RCNN은 Region Proposal 네트워크를 공유해서 시간을 단축시키는 알고리즘입니다. 이에대한 자세한 설명은 다른 포스트에서 진행하도록 하겠습니다.
YOLO
YOLO(v1)입니다. 나올당시 성능이 굉장히 좋아서 이목을 끌었습니다. 일반적으로 30fps가 넘으면 리얼타임 이라고 보는데 리얼타임 에서 따라올게 없었고, 객체탐지에서 자주쓰이는 성능지표 중 하나인 mAP 도 굉장히 높았습니다. 어떻게 이렇게 빠르고 정확할 수 있었냐면 one stage detection이기 때문입니다.
이 포스트에서는 앞서 Region Proposal을 통해 먼저 구역을 정한 다음에 CNN을 적용해서 분류를 하는 RCNN을 알아보았습니다. 이와 다르게 one stage detection는 구역을 정하는 것과 분류를 동시에 진행합니다. 일반적으로 2 stage detector가 속도는 느리고 정확도는 높고 one stage detector는 속도는 빠르고 정확도는 좀 낮습니다.
다음포스트에서는 YOLO에대해 다룹니다.
'인공지능 > CV' 카테고리의 다른 글
YOLOv3를 이용한 턱스크찾기 프로젝트 (3) | 2021.05.01 |
---|---|
객체탐지 (Object Detection) 2. YOLO !! (v1~v3) (2) | 2021.05.01 |
MASK RCNN 실행시 버전오류 (0) | 2021.04.20 |
[CODE] EfficientNetB7 (0) | 2021.04.10 |
[CODE] VGG19 (0) | 2021.04.10 |
댓글