딥러닝 객체 탐지(Object Detection) 모델 사용해보기
안녕하세요.
최근 기술이 빠르게 발전하고 있는데 자율 주행차에 활용하는 객체 탐지 기술을 소개하려고 합니다.
객체 탐지이란?
객체 탐지는 이미지 또는 비디오 상의 객체를 식별하는 컴퓨터 비전 기술입니다.
사람은 사진 또는 비디오를 볼 때 인물, 물체, 장면 및 시각적 세부 사항을 쉽게 알지만, 컴퓨터는 쉽게 알지 못합니다.
따라서 객체 탐지의 목표는 이미지에 포함된 사항을 사람이 이해하는 것처럼 컴퓨터도 이해할 수 있도록 학습하는 것입니다.
객체 탐지는 자율 주행차에서 활용되는 핵심 기술입니다. 이를 통해 보행자, 자동차, 신호등을 구분할 수 있으며 다양한 산업에서 활용이 될 수 있습니다. 아래의 이미지는 내부에 있는 객체에 대해서 확률과 탐지를 시각화한 모습입니다.
이제부턴 오픈 소스를 활용해서 책장에 책이 어디에 얼마나 있는지 확인하는 모델을 만들어 보겠습니다.
이미 구현된 모델과 코드로도 좋은 성능을 보여주지만, 원하는 분야에서는 성능이 부족할 수 있기 때문에 구현된 오픈 소스를 활용해 책만 분리하는 모델을 만들어 보겠습니다.
딥러닝 모델을 거쳐서 아래의 이미지가 최종적으로 어떻게 분리되는지 확인해보겠습니다.
학습 데이터 수집 및 라벨링
먼저 딥러닝이 훈련할 수 있도록 데이터를 수집 및 구현이 필요합니다.
이미 모델을 학습시키기 위한 다양한 이미지 파일이 구현되어 있습니다.
하지만, 이번 포스팅은 책장을 분리해야 하므로 구글링이나 공개된 책장 이미지를 수집하고 라벨링을 진행합니다.
제가 사용했던 라벨링 툴은 vgg image annotator입니다.
이외에도 다양한 라벨링 툴이 존재하기 때문에 사용하기 편한 것으로 사용하면 됩니다.
위의 이미지에서는 책장사진에 노란색으로 책부분을 표현을 해줌으로써 딥러닝 모델이 이부분에는 책이 들어가 있고 나머지는 배경이다 라는 정보가 저장되어집니다.
이러한 이미지는 많으면 많을 수록 성능이 좋아지지만, 현실적으로 직접 구현한다면 시간이 오래걸리는 단점이 있습니다.
모델 선택
이제 이미지와 라벨링 작업이 완료 되었다면, 모델을 학습할 준비가 된 상태입니다.
현재 객체 검출(Object Detection) 모델은 YOLO 모델의 다양한 버전이 보여주듯 빠른속도로 발전하고 있습니다.
이번에 사용한 모델은 Mast Rcnn입니다.
(추가적으로 다양한 모델을 활용할 수 있습니다. yolo v5, Detectron2)
물론 검출 속도도 빠르고 가벼운 최신 모델이 존재하지만, 이를 선택한 이유는 테스트를 위한 환경이 좋지 않았습니다.
전체적인 방법은 대부분의 모델이 비슷하기 때문에 원하시는 모델을 선택해서 개발을 할 수 있습니다.
모델 학습
이젠 학습 코드와 데이터가 모두 준비되었기 때문에 모델을 훈련시켜줍니다.
모델을 학습할때에는 다양한 하이퍼 파라미터를 설정할 수 있습니다.
몇가지 예시를 들어보면 두가지를 볼 수 있습니다.
- 이미지 복제 : 컴퓨터는 l자로 놓인 이미지와 ㅡ로 놓인 이미지를 구별하지 못합니다. 다양하게 기울기를 줌으로써 1장을 여러장으로 복제할 수 있습니다.
- 이미지 색 변환 : 컬러 이미지를 흑백으로 줌으로써 다른 효과를 줄 수 있습니다.
결과 확인
모델이 학습이 잘 된 경우를 확인해 보겠습니다.
이처럼 책의 경계를 표시해줌으로써 결과가 잘 나온 것을 확인할 수 있습니다.
후기
평소에 신기술에 관심이 있다면 도전해보는 것도 나쁘지 않다고 생각합니다. 저도 AI를 모르지만 다양한 AI 기술을 직접 해보는 것은 성장할 좋은 기회라고 생각합니다. 이상으로 객체 탐지 포스팅을 마치도록 하겠습니다!