기간 : 2023.2.6 - 2023.3.3
Aihub "도로 로드마크 인식을 위한 주행 영상 데이터" 사용
https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100&aihubDataSe=realm&dataSetSn=654
아직까지도 도로 위 사건사고는 끊임없이 발생하고 있다. 이를 조금이라도 방지하고자 본 프로젝트에서는 주행 영상 데이터를 이용하여 로드마크를 인식하고 문제가 발생했을 시 경고나 알림음을 활용하여 운전에 대한 경각심을 일으킨다. 이 프로젝트를 통해서 운전 규칙을 준수하고 더 나은 교통관리에 도움이 되도록 한다
총 3차에 걸쳐 진행
- 라벨 정리 및 삭제
- 비보호 좌회전은 비보호 바운딩 박스
- 어린이/노인/장애인 보호구역은 보호구역 바운딩 박스
- 횡단보도, 과속방지턱은 각 차선마다 따로 바운딩 박스
- 운전자와 같은 방향의 도로 표시만 라벨링 (역주행 차선은 라벨링 x)
- 바운딩 박스로 표시하기 어려운 차선류 제외
- 라벨링 편의성을 위하여 금지 화살표, 비보호 제외한 모든 화살표는 제외
- 운전자 차선과 같은 방향의 차선의 도로 표시만 라벨링
- 속도제한은 20부터 10 간격으로 100까지 구분
참고 사이트 URL
https://www.cvat.ai/
가이드라인을 바탕으로 일일이 bbox 설정
1차 라벨링 결과 : 다른 라벨에 비해 데이터 개수가 현저히 적은 라벨 삭제
2차 라벨링 결과 : 라벨별 편차가 큰 것을 확인
오피셜 yolov5 github 참고 URL
https://github.com/ultralytics/yolov5
yolov5m 모델 학습하여 1epoch당 5-6분 소요(총 100 epoch)
각각 yolov5s, m, l, x 총 4가지 모델을 사용해 본 결과 높은 정확도와 다른 모델에 비해 가벼운 s모델로 채택.
학습 모델 : yolov5m 이미지 사이즈 : 640 옵티마이저 : Adam 배치 사이즈 : 45 사용 메모리 : 15.5G
[yolo5s]
[yolov5m]
[yolov5l]
[yolov5x]
Tensorrt란?
학습된 딥러닝 모델을 최적화하여 NVIDIA GPU 상에서의 추론 속도를 수배 ~ 수십배 까지
향상시켜 딥러닝 서비스를 개선하는데 도움을 줄 수 있는 모델 최적화 엔진
Tensorrt를 사용하기 위해선 pip install nvidia-pyindex와 pip install nvidia-tensorrt 설치해야 하는데 윈도우 환경에서는 알 수 없는 오류로 사용이 불가능하다. 때문에 다음과 같은 방법으로 문제를 해결하였다.
-
설치
tensorRT 홈페이지에 들어가 환경에 맞는 zip 파일을 다운로드 받는다
-
환경변수 설정
lib 폴더의 위치를 환경변수에 추가한다
-
라이브러리 설치
1)파이썬 버전과 TensorRT가 설치된 버전과 경로에 맞추어 라이브러리를 설치 2)파이토치를 버전에 맞게 재설치
-
서행, 속도제한20 등 이미지 수가 적은 라벨은 아예 삭제. (21종류 라벨 -> 18종류 라벨)
-
전체적으로 모든 라벨 이미지 수를 늘려 좀 더 많은 양을 학습할 수 있도록 함
차선 인식 대신, bbox를 설정하여 그 안에 신호가 들어오게 되면 서비스 하는 방식으로 결정
GUI 내 bbox 안에 신호가 감지될 시 텍스트로 띄우도록 구현
-
CVAT 작업 시 이미지 업로드 양이 많고 사이즈가 커서 한번에 안올라가는 오류가 발생-> task를 여러개로 나눠 진행
-
CVAT 사이트 자체가 느리고 무거워 한번씩 팅기는 현상이 발생
-
GUI pt 파일 재생 시 멈추는 현상 발생
-
GUI에서 프레임이 너무 낮게 나와서 속도 체크를 우선 진행 -> 파이토치 버전을 업그레이드 하여 프레임 속도 해결 (15 FPS -> 30 FPS)
-
GUI 프레임을 더 높이기 위해 tensorrt를 추가하여 평균 40 FPS 이상으로 끌어올림