본문 바로가기

& 프로그래밍/& SDC

자율주행 기술(SSD: Single Shot Multibox Detector)

자율주행관련 프로젝트를 만들면서 직접 구현한 모델을 소개한다

 

첫번째로 소개하는 모델은 SSD(Single Shot Multibox Detector) 

사실 SSD를 소개하기 전에 먼저 알고 있어야하는 모델이 있는데, R-CNN과 YOLO라는 모델이다. 왜 이 두 모델을 선행적으로 이해해야 하는지를 설명하자면, SSD모델의 기본 배경이 되기 때문!

SSD는 완전 새로운 모델이 아니다. R-CNN과 YOLO의 기본구조는 동일하되, 단점을 보완하고 여러 보조적 시스템을 추가한 형태이기 때문이다.

SSD모델과 YOLO모델의 구조를 설명

YOLO와 R-CNN 모델의 Detecting 과정을 설명해보자면,

1. 수집장치를 통해 input 받은 데이터에서 특징적인 영역에 후보를 선정한다

2. 그 후보군에 있는 픽셀을 리샘플링(resampling)한다.(전처리과정 전부 포함)

3. 마지막으로 모델이 가진 classifier로 분석을 진행하여 특징을 검출한다.

 

다만, R-CNN은 실시간 영상처리 및 제어하기에는 너무 느리고, YOLO는 속도는 빠르지만 정확성을 포기해야하는 단점이 있기에 실제 차량에 도입하기에는 큰 단점으로 꼽힌다

 

이를 보완하기위해 2015년에 SSD 모델이 탄생하게 된다.

SSD는 이름 그대로 한장의 사진을 변형하지 않고 사진속 중복객체를 빠르게 잡아낸다. 

이미지 후보군을 선정하고 Resampling 후, 그 가공된 데이터를 다시 네트워크에 대입해서 객체를 하나하나 검출하는 과정을 없애는 대신, 사진의 feature map을 여러 사이즈로 생성해서 각 map에서 물체를 검출토록하는 방식을 선택해서 속도와 정확성을 모두 Get한 것이다

 

SSD가 무조건 훌륭한 모델은 아니다

기술은 나날이 발전해나가고 있고, 각 모델마다 버전을 높여가며 성능이 좋아지고 있기 때문에 SSD가 타 모델에 비해 좋은 모델이라고 섣불리 말할 수 없다. 그저 개발된 그 시점에서 만큼은 상향된 성능을 평가해주고, 앞으로의 발전 가능성을 꾸준히 기대하는게 바람직한 개발자의 자세랄까?

 

 

실습한 SSD 모델 학습결과 영상을 첨부한다.

중간중간 일반도로를 기차로 인식하거나 안전표지판을 신호등으로 인식하는 오류가 발생하는데, 그래도 정체구간에서 차량을 개별적으로 잘 잡아내는 결과는 만족스럽다. 프레임별 처리속도도 0.3초 이하로 준수한 편(똥컴에게 이정도도 훌륭한거)

SSD 모델을 실습하기 위해 작성한 코드는 부분공개 파일로 포스팅해놓았다. 비밀번호 설정해둠 ㅎ

 

& Project 카테고리에서 제작하고 있는 자율주행 자동차 개발 프로젝트에 SDC기술 구현 섹션을 넣어서 점점 크기를 키워나가는 중이다 ㅎ