1. 서 론
2. 객체 검출과 다중 객체 추적 알고리즘
2.1. 다중 객체 검출 알고리즘
2.2. 다중 객체 추적 알고리즘
3. 신호등 인식 알고리즘 개발
3.1. 다중 객체 검출 알고리즘의 적용
3.2. 다중 객체 추적 알고리즘의 적용
4. 신호등 인식 알고리즘 성능 평가 및 분석
4.1. 차량 센서 및 인지 알고리즘 구성
4.2. 데이터 기반 신호등 검출 알고리즘 평가
4.3. 시나리오 기반 신호등 추적 알고리즘 평가
5. 결 론
1. 서 론
자율주행 기술은 빠르게 발전해 가며 운전자의 개입이 필요 없는 단계를 목표로 나아가고 있다. 자율주행은 GPS와 주변의 정보를 이용해 절대적인 좌표계에서 차량의 위치를 정확히 파악하는 측위, 카메라와 라이다, 레이다 등의 센서를 이용해 차량 주변의 정적/동적 객체의 위치와 움직임 정보를 파악하고 추정하기 위한 인지, 얻어진 주변 환경에 대한 정보를 바탕으로 차량의 경로를 계획하는 판단, 목표하는 경로로 차량의 실제 거동을 만드는 제어로 구성된다. 모든 기능이 각 역할을 성공적으로 수행하며 합쳐졌을 때 비로소 자율주행이 가능하게 된다.
현재의 자율주행 기술은 고속도로와 같이 신호가 없고 외부 개입이 없는 차량 전용도로에서는 충분한 성능을 보일 수 있는 수준에 이르렀지만 도심에서는 여전히 어려운 문제다. 도심에서는 훨씬 밀도 높은 교통량, 다양한 신호와 표지판, 복잡한 교차로, 도로 옆의 보행자와 자전거 같은 여러 물체 등 고려해야 하는 상황이 훨씬 많아진다. 이런 도심 환경에서 자율주행 차량이 안전하게 경로를 계획하려면 주변의 여러 물체를 빠짐없이 인식하고 추적해야 하므로 다중 객체 추적 알고리즘이 매우 중요해진다. 또한, 장애물뿐만 아니라 신호등 정보나, 교통 흐름 정보, 도로 공사 정보 등과 같은 도로 교통상황도 인식하여야 도심에서 문제없이 주행할 수 있다.
도로 교통 정보 중 가장 기본적이고 중요한 것은 신호등 정보이다. 이는 교차로에서 다른 차량과 보행자의 움직임을 고려하기 위해서 반드시 필요하다. 신호등의 신호에 대한 정보는 인프라가 잘 구축된 환경에서는 V2X 통신을 통해 직접 받을 수 있다.(1) 하지만, 인프라 구축은 비용이 많이 드는 과정이며, 현재 도심 환경에서는 인프라가 완벽하게 구축되지 않았고, 자율주행차의 운행설계영역(ODD)을 넓히기 위해서는 카메라 정보를 이용한 직접적인 신호등 인식이 필수적이다. 또한, 인프라가 구축된 상황이라도 통신 교란 같은 악의적인 상황이나 V2X 장비가 고장 난 상황 등에서 fail safe 기능으로 활용될 수 있다.
본 논문에서는 도심 교통 정보 중 가장 중요한 신호등 정보를 인식하기 위한 알고리즘을 제안한다. 먼저, 객체 검출 알고리즘인 ‘YOLOv3’의 딥러닝 모델을 국내의 신호등에 맞게 학습시켜 이미지에서 신호등의 위치와 신호를 검출한다. 그후 객체 추적 알고리즘인 ‘SORT’를 기반으로 칼만 필터와 IOU를 사용하여 검출된 신호등을 추적하며 가장 신뢰도가 높은 신호등의 신호를 찾아낸다. 이 알고리즘을 설명하기 위해 2 장에서는 본 연구에서 사용한 객체 검출과 추적 알고리즘에 대해 설명하고, 3장에서 신호등 인식 문제에서 알고리즘의 적용 방법을 제안한다. 4장에서는 만든 알고리즘을 실제 주행데이터를 바탕으로 적용하여 평가하고, 5장에서는 결론으로 본 연구가 가지는 의의를 정리한다.
2. 객체 검출과 다중 객체 추적 알고리즘
본 논문에서는 신호등을 인식하고 신호를 판별하기 위해 딥러닝을 이용한 객체 검출 알고리즘을 이용했고 신뢰성 있는 신호를 선별하기 위해 다중 객체 추적 알고리즘을 사용했다.
2.1. 다중 객체 검출 알고리즘
이미지에서 신호등을 찾기 위한 객체 검출 알고리즘을 구현하는 방법으로는 크게 이미지 처리 기법을 이용하는 방법과 딥러닝을 이용하는 방법이 있다. 이미지 처리 기법은 카메라 이미지에서 픽셀들 사이의 색 값 변화를 이용해서 특징점을 찾은 후 template matching을 통해 신호등을 찾고 색을 추출하여 신호를 판별하는 방법이다.(2) 딥러닝 기법은 이미지를 입력으로 넣으면 신호등의 위치에 대한 출력을 주는 모델 만든 후, 신호등 이미지 데이터를 이용하여 모델을 학습시켜 이용하는 방법이다.(3) 많은 데이터를 이용하여 딥러닝 모델을 학습시키면 빛의 세기나 방향에 따라서 달라지는 신호등의 모습이 달라지거나 주변 배경이 달라지는 상황에서도 신호등을 모두 인식할 수 있어 더 강건한 특성을 가진다. 이미지 처리 기법이 더 속도가 빠르고 단순한 장점이 있지만 최근 딥러닝 기술이 발전하고 처리 속도도 증가함에 따라 더 범용적이고 강건한 딥러닝 방법이 많이 사용되는 추세이다.
딥러닝 객체 검출 알고리즘은 이미지로부터 객체의 위치를 파악한 다음, 그 위치에 있는 객체의 종류를 분류하는 Two-Stage검출기와 한번의 처리로 객체의 위치와 종류를 분류해 내는 One-Stage 검출기로 나뉜다.(4~7) Two-Stage방법은 정확도에서 장점을 가지지만 One-Stage방법은 속도에서 장점을 가진다.
본 논문에서는 객체 검출 알고리즘으로 ‘YOLOv3’ 오픈소스 알고리즘을 이용했다. YOLO는 ‘You Only Look Once’라는 의미로 딥러닝을 이용한One-Stage 방법의 매우 빠르고 정확도 높은 객체 검출 모델이다.(7) 하나의 신경망 모델을 이용해서 객체가 담긴 bounding box와 객체의 종류를 분류해내어 매우 빠른 장점이 있다. 또한, 이미지 전체를 보고 학습하므로 주변 배경에 대한 정보가 학습되어 아무 물체가 없는 배경에 노이즈가 있는 경우 물체로 인식하는 background error가 적게 발생한다. 그리고 물체의 일반적인 부분을 학습하므로 학습 데이터와 다른 분포를 가지는 새로운 이미지에서도 강건하게 작동한다는 장점이 있다. 빠르고 정확도가 높기 때문에 반응속도가 중요한 자율주행 차량에서 활용되기 좋은 알고리즘이다.
2.2. 다중 객체 추적 알고리즘
객체 추적 알고리즘은 객체 검출로 검출한 객체를 추적하며 영상 데이터처럼 시간에 따라 연속적으로 들어오는 이미지에서 계속해서 목표하는 객체의 위치를 파악하는 방법이다. 그 중 다중 객체 추적은 여러 객체가 검출되는 경우 각 객체에 고유의 Id를 부여하고 모든 객체의 자취를 따라가며 추적하는 방법이다.
객체 추적 알고리즘은 크게 4단계로 나눠진다.(8) 첫번째는 객체를 검출하는 과정으로 객체 추적의 성능을 결정하는 가장 중요한 단계이다. 객체를 잘 검출하지 못한다면 추적도 잘 이루어질 수 없기 때문이다. 두번째 단계는 검출한 객체의 특징을 추출하는 단계이다. 객체의 특징이라는 것은 검출된 객체의 bounding box의 위치나 검출된 객체 이미지의 고유한 패턴 등이 된다. 세번째 단계는 추적하고 있는 자취와 새로 검출된 객체들 사이의 거리를 측정하는 과정이다. 거리는 두번째 단계에서 얻은 특징을 이용해서 정의한다. 추적하고 있는 객체와 검출된 객체 사이의 거리가 가까운 객체들을 같은 객체로 파악하기 위해 수행하는 과정이다. 네번째로는 추적하고 있는 자취와 새로 검출된 객체를 매칭하는 과정이다. 세번째 단계에서 파악한 거리를 이용하여 가까운 것을 매칭한다. 매칭에 성공한 자취는 새롭게 상태를 업데이트하고, 자취에 없었지만 새로 발견된 객체는 새로 추적할 대상으로 추가하고, 자취에는 있었지만 사라진 객체는 추적을 그만두는 과정이 포함된다.
본 연구에서 사용한 다중 객체 추적 알고리즘은 ‘SORT’ 알고리즘으로 간단하고 속도도 빠르면서 좋은 성능을 보이는 장점이 있다.(9) 이 알고리즘은 객체 추적의 두번째 단계인 자취의 위치 추정에 칼만 필터를 이용했다. 칼만 필터는 선형 시스템에서 노이즈가 가우시안 분포를 따른다고 가정한 경우 state를 시간에 따라 추정하는 알고리즘이다. 알고리즘에서는 state x를 식 (1)과 같이 설정해서 추정했다. ‘u’, ‘v’는 객체 bounding box 중심의 가로, 세로 위치이고, ‘s’, ‘r’은 bounding box의 크기와 가로세로 비율이다. ‘r’은 시간에 따라 일정하다고 보고 나머지 변수는 시간에 따른 변화율도 함께 추정했다. 이를 통해서 시간에 따른 bounding box를 추정할 수 있다.
객체 검출의 세번째 단계인 객체 사이의 거리 측정은 IOU를 통해서 수행했다. 칼만 필터를 이용해서 추정한 과거의 자취들의 현재의 예상 bounding box와 검출된 객체들의 bounding box 사이 IOU를 계산하여 값이 클수록 가까운 객체로 본다. IOU는 두 bounding box의 (교집합의 넓이) / (합집합의 넓이)로 계산한다. 따라서 두 bounding box가 얼마나 겹치는지 뿐만 아니라 얼마나 크기가 비슷한 지도 고려하게 되어 같은 객체를 판단하기에 적절하다.
네번째 단계인 객체 간의 매칭은 헝가리안 알고리즘으로 수행한다. IOU의 threshold를 정하여 이를 넘는 모든 객체 쌍을 매칭했을 때 거리들의 합이 최소가 되도록 bounding box를 매칭해 주는 알고리즘이다. 이를 통해서 추적할 객체를 찾고 업데이트한다. IOU의 threshold를 만족하지 못하고 남은 자취는 없애고, 남은 검출된 객체는 새로 자취로 등록한다.
위와 같은 방법들을 이용하여 다중 객체 추적의 단계들을 반복하며 원하는 객체들의 시간에 따른 이동을 추적할 수 있게 된다.
3. 신호등 인식 알고리즘 개발
신호등 인식 알고리즘은 상기 기술한 객체 검출 알고리즘과 추적 알고리즘을 활용하여 Fig. 1과 같이 구성했다. 객체 검출 알고리즘을 학습시키고, 객체 검출의 미인식과 오인식에 강건하게 신호등 정보를 출력하도록 객체 추적의 추적 객체 선별 부분에 다양한 기준을 추가하였다.
3.1. 다중 객체 검출 알고리즘의 적용
객체 검출을 위해 ‘YOLOv3’ 모델을 학습시켜서 이용했다. 외국의 신호등은 주로 세로로 긴 모습이고 우리나라의 신호등과 다른 부분이 있어서 기존에 학습되어 있는 모델의 가중치를 이용하는 경우 신호등을 미인지하거나 표지판을 신호등으로 인식하는 경우가 많았다. 따라서, 국내의 신호등 데이터를 이용하여 모델을 새로 학습시켰다.
학습을 위한 데이터셋으로는 오픈 데이터셋과 차량으로 취득한 데이터셋을 이용했다. 오픈 데이터 셋으로는 AI Hub에서 다양한 시간과 장소에서 얻은 도심의 신호등 이미지 데이터 약 50000 장을 얻을 수 있었다. 차량으로는 전방 카메라를 부착한 차량을 이용해서 시흥의 서울대학교 미래 모빌리티 기술 센터(FMTC)와 그 주변 그리고 상암 자율주행자동차 시범 운영지구에서 데이터를 수집했다.
빠르게 객체를 인식하는 YOLO의 장점을 살리기 위해 신호등을 먼저 인식한 다음 신호를 인식하는 두 단계를 거치는 방법이 아니라 한 단계로 바로 신호를 인식하도록 모델을 구성했다. 따라서, 분류할 클래스를 ‘Green’, ‘Red’, ‘Yellow’, ‘Red Left’, ‘Green Left’ 5가지로 나누어 바로 신호등의 위치와 신호를 알 수 있게 모델을 학습시킬 수 있었다. ‘Green’은 녹색등으로 직진, ‘Red’는 적색등으로 정지, ‘Yellow’는 황색등으로 준비 신호를 나타낸다. ‘Red Left’는 적색등과 좌회전 신호로 직전은 정지하고 좌회전이 이루어지는 경우이고, ‘Green Left’는 직진과 좌회전이 같이 이루어지는 경우이다. 그 결과 만들어진 모델은 이미지를 입력으로 받으면 신호등의 위치bounding box와 신호 클래스 그리고 그 클래스의 신호등이 bounding box안에 있을 확률을 출력한다.
3.2. 다중 객체 추적 알고리즘의 적용
다중 객체 추적 알고리즘을 신호등 인식에 이용하면 좀더 강건하게 신호등을 인식할 수 있다. 객체 검출 모델만을 이용하면 신호등과 거리가 먼 경우 신호등의 인식과 실패를 반복하는 현상이 많이 나타난다. 또한, 도심에서는 전광판이나 표지판처럼 신호등으로 오인지 될 수 있는 물체들이 다수 존재하여 오인지가 발생할 수 있다. 이런 경우 객체 추적을 이용한다면 신호등 인식에 실패하는 경우라도 이전에 충분히 신뢰성 있게 검출했다면 신호를 인식할 수 있다. 또한, 단발적으로 오인지 되는 신호는 신뢰도를 낮게 부여하여 무시할 수 있다.
신호등 인식에 다중 객체 추적 알고리즘을 이용하기 위해 ‘SORT’ 알고리즘에서 추적할 객체를 선별하여 자취를 만드는 과정에서 최소 검출 횟수, 최대 자취 유지 기한, 최대 자취 출력 기한의 변수를 만들어 주었다. 최소 검출 횟수는 객체를 추적하는 자취를 출력하기 위한 최소의 검출 횟수를 말한다. 이를 통해서 단발적으로 오인식 되는 객체의 자취는 추적 결과로 출력하지 않을 수 있다. 최대 자취 유지 기한은 자취에 해당하는 객체가 검출되지 않아도 그 기한만큼은 자취를 유지하도록 하는 변수이다. 이를 통해 짧은 미인식이 발생하더라도 신호등을 계속해서 추적할 수 있다. 최대 자취 출력 기한은 최소 검출 횟수 이상으로 검출된 자취가 짧은 시간 미인식 되더라도 유지하고 있던 자취의 정보에 따라 신호등 정보를 출력하게 하는 변수이다. 이를 통해서 신호등을 인지하던 중 미인식이 발생하더라도 현재 신호등 위치와 신호 추정 값을 출력할 수 있다.
다음으로 신호등의 자취를 추적하면서 그 신호등의 신호를 어떻게 볼 것인가 하는 문제가 있다. 이를 위해 신호등 자취에 신호 별 신뢰도를 저장할 수 있게 하였다. 그리고 신호등이 검출되어 신호에 대한 정보가 들어오면 검출된 신호의 신뢰도는 증가시키고, 다른 신호들의 신뢰도는 감소시켰다. 신뢰도의 최솟값과 최댓값을 지정하여 신호가 바뀌면 빠르게 새로운 신호의 신뢰도가 높아지며 신호를 다르게 인식할 수 있게 하였다. 신뢰도의 증감폭은 객체 검출 결과에서 얻은 검출된 신호의 confidence로 하여 확실하게 검출된 신호의 경우 빠르게 반영할 수 있게 하였다. 이렇게 신뢰도를 설정한 후 그 값이 가장 큰 신호를 그 신호등 자취의 신호로 보았다. 이를 통해 신호등의 신호가 단발적으로 다르게 오인식 되는 경우, 신뢰도는 바로 변하지 않기 때문에 강건하게 신호를 추정할 수 있다.
또한, 만약 하나의 이미지에서 여러 신호등이 검출되고 추적되고 있다면 차량이 기준으로 삼을 신호등을 정해야 한다. 이를 위해 추적 결과로 나온 신호등 자취의 신호 별 신뢰도 중 최댓값 그 신호등의 신뢰도로 보았다. 이를 통해 신뢰도가 가장 큰 신호등을 기준으로 보고 그 신호등의 신호를 현재 차량이 인식해야 하는 신호로 보았다.
4. 신호등 인식 알고리즘 성능 평가 및 분석
4.1. 차량 센서 및 인지 알고리즘 구성
개발한 신호등 인지 알고리즘을 평가하기 위해 Fig. 2와 같이 현대 IONIQ 차량의 전방 상단에 Triton 5.4 MP Model 카메라를 부착하여 서울대학교 미래 모빌리티 기술 센터에서 신호등 데이터를 취득했다. 자세한 차량과 카메라의 스펙은 Table 1에 기술하였다. 카메라 이미지 데이터는 이더넷 통신을 통해 차량의 산업용 PC로 전달하여 ROS(Robot Operating System)를 이용하여 저장하였다.
Table 1.
Data collection specifications
이후 신호등 인지 알고리즘은 저장된 데이터로부터 ROS 통신을 통해 이미지 정보를 받아와서 객체 인식 알고리즘과 객체 추적 알고리즘을 거쳐서 신호등의 신호를 출력하게 되고 이를 평가하였다.
4.2. 데이터 기반 신호등 검출 알고리즘 평가
신호등 검출 알고리즘은 오픈 데이터셋과 주행 데이터를 섞어서 학습에 이용했다. 그 후 학습에 사용하지 않은 데이터를 테스트 셋으로 하여 성능 평가를 진행했다. 그 결과는 Table 2와 같다. Green, Yellow, Red Left의 경우 높은 정확도로 구분을 했고 Red, Green Left의 경우 낮은 정확도를 보였다. 데이터셋에 데이터가 많았고 주변 환경에서 오인지 할 만한 경우가 적은 경우 성능이 좋은 것으로 생각된다. 이는 장거리와 근거리에서 취득한 데이터를 모두 포함하는 경우로 특히 장거리에서는 인식이 정확하지 않을 것이기 때문에 신호등 추적 알고리즘과 함께 이용해야 더 강건하게 이용할 수 있을 것이다.
Table 2.
Traffic light detection result
| Signal | AP@0.5 [%] |
| Green | 91.83 |
| Red | 79.50 |
| Yellow | 96.75 |
| Red Left | 97.39 |
| Green Left | 50.00 |
| mAP@0.5 [%] | 83.09 |
4.3. 시나리오 기반 신호등 추적 알고리즘 평가
신호등 인식 알고리즘의 평가는 Fig. 3과 같은 트랙에서 교차로에 있는 신호등을 향해 약 150 m 직진하여 다가간 후 지나가는 시나리오로 진행했다. 신호가 ‘Red’에서 ‘Green’으로 바뀌는 경우가 시나리오 1, ‘Yellow’에서 ‘Red Left’로 바뀌는 경우가 시나리오 2이다. 수집한 데이터에서 신호를 사람이 판단하여 나타낸 Ground truth와 객체 인식 알고리즘에서 나온 최대 confidence의 신호, 객체 추적 알고리즘을 결합하여 나온 신호를 비교한 결과는 Fig. 4와 같다.
먼저 객체 인식 결과만을 보면 거리가 멀거나 가까운 경우에서는 미인식이 많았다. 약 60 m 이상으로 거리가 먼 경우 신호등이 이미지에 작게 나타나며 잘 인식하지 못했다. 거리가 가까운 경우는 차량이 신호등 아래로 지나가는 경우로 신호등이 보이기는 하나 정면에서 본 것과 다른 모습으로 보이며 오/미인식이 발생했다. 그밖에는 건물의 창문을 녹색등이라고 인식하는 경우가 있었으나 confidence가 낮고 실제 신호등의 confidence가 더 높아 쉽게 걸러낼 수 있었다.
Fig. 4에서 객체 인식 결과와 비교하여 객체 추적 결과보면 먼저 시나리오 1에서 객체 인식 알고리즘이 ‘Red’ 신호를 먼 거리에서 잠시 인식했으나 단발적인 인식으로 정확하지 않다고 판단하여 추적이 되지 않다가 이후 연속적으로 신호를 인지하자 신호를 잘 추적했다. 이후 단발적인 미인식이 일어남에도 이전의 인식 정보를 바탕으로 강건하게 신호를 결정했다.
시나리오 2에서도 마찬가지로 추적 도중 단발적인 미인식이 일어나도 추적을 이용한 결과는 Ground truth를 잘 따라갔다. 하지만 미인식 구간이 길어지는 부분에서는 추적을 중단하며 신호를 인식하지 못했다. 27초 부분에서는 객체 인식 결과 신호를 오인지한 것을 알 수 있는데, 그럼에도 추적 결과는 잘 나타나는 것을 볼 수 있다.
두 경우 모두 추적 결과가 Ground truth보다 늦게 나타나며 따라가는 모습을 보였다. 먼저 신호가 없다가 나타나는 과정에서는 자취의 최소 검출횟수를 확보하기 위해 지연이 생겼다. 이후 신호가 바뀌는 과정에서는 인지되는 신호가 바뀜에 따라 신호 별 신뢰도 조절하는 과정에서 지연이 발생한다. 마지막으로 신호가 없어진 시점에서는 최대 자취 출력 기한에 따라 인식이 되지 않아도 신호를 출력한다. 신호가 없어진 경우 지연이 발생하는 것은 큰 문제가 아니지만 신호가 바뀌는 경우 인식이 늦어지는 것은 문제가 될 수 있다. 이를 위해 신뢰도의 최댓값을 적당하게 설정하였다.
5. 결 론
본 연구에서는 객체 인식과 추적을 통한 오/미인식에 강건한 신호등 인식 알고리즘을 제안한다. 먼저 객체 인식 알고리즘의 학습을 통해 우리나라의 신호 체계에 맞는 신호등을 인식하는 딥러닝 모델을 만들 수 있었다. One-Stage 알고리즘을 사용하여 이미지에서 한번에 신호등의 신호를 인식하는 방법을 이용했다.
다음으로 객체 추적 알고리즘을 통해 객체 인식 결과를 처리하여 오/미인식에 강건한 알고리즘을 만들었다. 객체가 단발적으로 인식, 오/미인식 되는 경우를 반영하지 않기 위해 객체를 추적하며 연속적인 신호가 있는 경우에만 인지 신호를 변경하도록 하였다.
이 알고리즘을 통해 실제 차량이 신호등에 접근하는 시나리오에서 신호를 인식할 수 있었고, 오/미인식에 강건하게 신호를 선별하는 것을 확인할 수 있었다.
하지만 한계점으로는 본 논문에서 사용한 5가지 분류체계에 속하지 않는 신호등도 존재하여 이런 경우 분류가 되지 않는다는 점이 있다. 또한, 장거리에서 접근하는 경우는 신호등 인식률이 떨어지는 문제가 있다. 따라서, 향후 연구에서는 추가로 더 다양한 신호등에 대한 데이터를 다양한 거리에 대해 취득하여, 학습하여 신호등 검출 알고리즘의 성능을 더 높이는 것을 계획하고 하고 있다.






