YOLO를 활용한 차량 번호판 검출 및 인식 1차프로젝트
2020년 여름 방학동안 소규모IT회사에서 인턴을 하며 진행하였던 차량번호판 검출 및 인식 1차프로젝트에 대한 정리이다.
<전체구조>
사진 => 차량 번호판 위치 검출(YOLO) => 테서랙트(Tesseract) 또는 차량번호판 글자 인식(LPRNet) : 차량번호판 검출 및 인식시스템
웹사이트 만들기 => 웹 서버 구축 => 배포
진행사항
<차량 번호판 위치 검출>
1) opencv를 사용하여 윤곽선 추출통한 번호판 사각형 특징 이용한 방식
⚫ 사진을 흑백변화, 노이즈제거 후 윤곽선 추출 => 윤곽선 감싸는 사각형 특징들 중 번호 판 특징에 가까운 후보군을 여러 조건들(면적, 기울어진 각도, 사각형 간의 거리 등)을 바탕으로 추려 나가는 방식
⚫ 인식률이 떨어지고 안정적이지 않음.
2) YOLO딥러닝 기반 번호판 인식 방식
⚫ 44개의 사진 데이터를 제 컴퓨터기준 7~8시간 학습 후(12240step까지) 51개의 새로운 사 진 데이터에 대해 테스트한 결과 48개의 번호판 위치를 정확히 찾아내어 약 94%의 성공률을 달성함
<차량 번호판 글자 인식>
1) Tesseract-OCR 을 이용한 방식
⚫ 자체 테스트결과 인식률이 상당히 떨어짐.
⚫ Tesseract는 이미지 전처리 과정이 중요하다는 것을 알게 되어 사진 전처리과정을 좀더 보완한다면 더 나은 글자인식률이 나올 수도 있다고 생각함
⚫ 하지만 한글 인식률이 매우 떨어져 아래 방식을 이용함
2) 오픈소스를 이용한 방식 - Korean car license plate recognition using LPRNet
ð https://github.com/NinV/Korean-License-Plate-Recognition
⚫ LPRNet: License Plate Recognition via Deep Neural Networks 란 논문을 바탕으로 만든 것을 한국 번호판 데이터셋을 학습시킨 모델
⚫ 테스트결과 기울어진 번호판에 대해서는 약 61%의 인식률 보임 따라서 허프변환을 이용하여 기울어진 번호판을 돌려 약 68%로 인식률 개선 => 추가적으로 이미지 전처리를 해주면 더 나은 인식률을 보일 것이라 생각함
결과
======================================================== 총 이미지 개수: 214
번호판 검출 성공 개수: 211
글자 인식 성공 개수: 144
번호판 검출 성공률: 98.5981308411215 %
글자 인식 성공률: 68.24644549763033 %
========================================================
<웹>
향후계획
⚫ YOLOv3으로 자동차 선 검출 후 번호판 인식 기능 추가
⚫ 글자 인식률을 높이기 위해 추가 자체 번호판 데이터 학습
⚫ 중국번호판 인식률 95%를 달성한 코드들이 깃허브에 있음 => 이 것을 바탕으로 한국번호판을 학습하고 인식할 수 있는 형태로 바꿔서 사용해볼 예정
⚫ Tensorflow-gpu, CUDA, cuDNN, 설치
⚫ 남는 리눅스 테스트 서버에 나중에 올려볼 예정