Bus-only traffic light detection in real-time images

자율 주행에 필요한 신호등 인식 기술에 관한 프로젝트.

딥 러닝을 통해 신호등을 인식하는 모델을 구현했다. 기존의 신호등 인식 모델이 신호등의 위치를 인식하거나 신호의 색(적색, 청색 등)을 구분하는 방향에 집중하였다. 한국의 중앙차로가 있는 신호에는 중앙차로를 위한 신호등, 그 외를 위한 신호등이 같이 있지만 기존의 인식 방법으로는 불가능했다. 그래서 중앙차로 전용 신호와 일반 신호등을 구분하는 프로젝트를 진행했다.

 

첫째로 어떤 방법을 통해서 신호등을 구분하여 인식할 것인지를 결정했다. 자율 주행에서 신호등 인식은 실시간으로 수행되어야 하기 때문에 입력되는 이미지를 초당 30장 이상 처리를 할 수 있어야 했다. 또 신호등을 인식하는 것 뿐 아니라 신호등의 모양(일반 신호, 버스 모양 신호)도 구분해내야 했기 때문에 입력 이미지의 작은 개체를 높은 정확도로 탐지해낼 수 있어야 했다. 이에 적합한 것으로 YOLO와 SSD 모델이 있는데, 이번 프로젝트에서는 YOLOv3를 사용하여 탐지하기로 하였다.

 

두번째로 모델을 학습하기 위해 데이터셋이 필요했는데, 버스 신호등을 따로 모은 데이터셋이 없었다. 데이터셋을 확보하기 위해 직접 차량 주행 중 동영상을 찍고 프레임으로 나누어 데이터셋을 확보했다.

 

세번째로 확보한 데이터셋으로 YOLOv3 모델을 학습했으나, 성능이 좋지 않았다. YOLOv3에는 여러가지 모델이 있는데 그 중 3개(YOLOv3, YOLOv3-spp, YOLOv3-tiny)를 골라 각각에 대해 학습을 했다. 결과에서 모델의 깊이가 가장 얕은 YOLOv3-tiny가 다른 모델과 비교해서 뒤쳐지지 않는 성능을 갖는 것을 알게 됐다. YOLOv3-tiny를 수정해서 성능을 더 높이는 방향으로 정했다.

 

학습 데이터셋의 해상도가 2288x1080이였고, YOLOv3-tiny는 기본적으로 416x416으로 Resizing한 뒤 학습을 하도록 설정이 되어 있다. 2288x1080의 이미지에서 신호등은 작은 개체이기 때문에 Resizing 과정 후에 더 작아져 정확도를 낮추는 원인이 되는 것 같아 Resizing 크기를 최대한 크게 키웠다. 1024x1024 까지가 현재 그래픽카드가 수용할 수 있는 최대의 크기였다. 2288x1080에서 1024x1024가 더 높은 정확도를 가지는 결과를 얻어냈다.

 

그 이후에는 기존의 학습 데이터셋(2288x1080)을 두 장으로 잘라냄(1024x1024, 2장)으로 Resizing 과정에서 손실이 없게 학습을 했다. 이를 통해 이전의 모델보다 좋은 성능을 갖는 결과를 얻어냈다. 최종적으로 학습을 통해 92.90%의 mAP를 갖는 모델을 얻을 수 있었다.

 

데이터셋의 크기가 너무 작아 실행해온 방법들이 다른 경우에도 효과가 있는지 확인 하기 위해 신호 표지판 데이터셋인 Tsinghua-Tencent Dataset으로도 같은 방법을 통해 확인해보니 실제로 성능 향상의 효과가 있는 것을 확인했다.

한계점

기존의 목표는 일반 신호등 위에 버스전용, 혹은 중앙차로전용 이라고 기재 되어있는 표지판도 인식을 하는 것이었으나 주행 중인 차량에서 표지판내의 글자 인식은 해결하지 못했다.

'Project > Bus Traffic Light Detection' 카테고리의 다른 글

Presentation(3)  (0) 2020.01.09
Presentation(2)  (0) 2020.01.09
19/05/27 진행상황  (0) 2020.01.09
Presentation(1)  (0) 2019.05.20
19/04/15 진행 상황  (0) 2019.04.16

'Project > Bus Traffic Light Detection' 카테고리의 다른 글

최종 보고서  (2) 2020.01.09
Presentation(2)  (0) 2020.01.09
19/05/27 진행상황  (0) 2020.01.09
Presentation(1)  (0) 2019.05.20
19/04/15 진행 상황  (0) 2019.04.16

'Project > Bus Traffic Light Detection' 카테고리의 다른 글

최종 보고서  (2) 2020.01.09
Presentation(3)  (0) 2020.01.09
19/05/27 진행상황  (0) 2020.01.09
Presentation(1)  (0) 2019.05.20
19/04/15 진행 상황  (0) 2019.04.16

# [19/05/27] 진행 상황

  

AWS를 이용하기 위해 AWS 사용법을 익히고 있습니다. 일단 모델을 한번 Training 시켜보고 학교에서 지원금을 준다면 계속 AWS를 사용할 것 같습니다.

https://aws.amazon.com/ko/machine-learning/



기존 YOLO 모델보다 어느 정도의 Accuracy 향상이 있었는지 알아보기 위해 일관되지 않았던 변인들을 조절하여 모델을 다시 Training 하고 있습니다.

 

Test dataset이 더 필요할 것 같아 Dataset을 더 모으고 그것에 대한 box 처리를 하고 있는 중입니다.

'Project > Bus Traffic Light Detection' 카테고리의 다른 글

Presentation(3)  (0) 2020.01.09
Presentation(2)  (0) 2020.01.09
Presentation(1)  (0) 2019.05.20
19/04/15 진행 상황  (0) 2019.04.16
19/04/10 진행 상황  (0) 2019.04.10

'Project > Bus Traffic Light Detection' 카테고리의 다른 글

Presentation(2)  (0) 2020.01.09
19/05/27 진행상황  (0) 2020.01.09
19/04/15 진행 상황  (0) 2019.04.16
19/04/10 진행 상황  (0) 2019.04.10
19/04/01 진행 상황  (0) 2019.04.01

[19/04/15] 진행 상황

지난주의 계획대로 TL 전체가 아닌, Light 자체를 검출하는 모델을 만들어봤습니다.

Training dataset은 지난주에 사용했던 이미지들을(2088*1080) 두장으로 나누어(1080*1080) 2134개의 이미지를 썼습니다.

6천번 Training한 모델에 Test Video를 입력한 결과 아래 예시 이미지와 같이 나왔습니다.

Image

Image

Image

정확도를 측정하니 아래와 같이 나왔습니다.

class_id = 0, name = G, ap = 90.44 %
class_id = 1, name = Bus, ap = 99.15 %

for thresh = 0.25, precision = 0.94, recall = 0.99, F1-score = 0.96
for thresh = 0.25, TP = 665, FP = 43, FN = 6

mean average precision (mAP@0.50) = 0.947937, or 94.79 %

'Project > Bus Traffic Light Detection' 카테고리의 다른 글

19/05/27 진행상황  (0) 2020.01.09
Presentation(1)  (0) 2019.05.20
19/04/10 진행 상황  (0) 2019.04.10
19/04/01 진행 상황  (0) 2019.04.01
프로젝트 로드맵  (0) 2019.03.28

[19/04/10] 진행 상황

지난주 계획대로 주말에 약 1000장 정도의 Bus TL이 들어간 사진을 확보했습니다. 그리고 Bus TL과 General TL이 들어간 이미지 1200장과 General TL만 들어간 사진 900여 장을 학습시켰습니다. Class는 지난주와 다르게 Sign을 빼고 Bus TL, General TL로만 구분해서 Training 했습니다. 6000번을 Training 시킨 후 동영상을 입력 시켜본 결과 아래와 같이 나왔습니다.

Image

Image

잘 구분하는것처럼 보이지만, 아래와 같이 False Positive의 결과가 많았습니다.

Image

그래서 자료를 찾아보다가 TL의 arrow를 검출하는 연구에 대한 글을 읽었습니다. 그 글을 읽고, TL의 전체를 Box 처리하는것 보다 신호 자체의 모양을 Box 처리해야 보다 정확한 구분이 가능할것이라는 생각이 들어서 다시 모든 이미지에 대해 Bounding Box를 다시 그린후 Training 시킬 계획입니다.

'Project > Bus Traffic Light Detection' 카테고리의 다른 글

Presentation(1)  (0) 2019.05.20
19/04/15 진행 상황  (0) 2019.04.16
19/04/01 진행 상황  (0) 2019.04.01
프로젝트 로드맵  (0) 2019.03.28
Project proposal  (0) 2019.03.28

+ Recent posts