1. 서론
차량 번호판 인식시스템(License Plate Recognition System)은 무인 자동차 주차 시스템, 무인 불법 주차 감시 시스템, 속도위반 단속 시스템, 주차 관제용 시스템 등과 같이 자동차에 대한 정보를 분석하는 기술로 활용된다. 과거의 번호판 인식시스템 은 광학문자 인식(OCR; Optical Character Recognition) 방법이 대부분이고[1-3], 최근에는 CNN(Convolutional Neural Network) 알고리즘 등의 딥러닝 기반으로 문자(숫자, 글자)를 인식하는 방법이 활발히 연구되어 오고 있다[4-7].
객체 탐지(Object Detection)를 하기 위해서는 두 가지 방식이 있다. 첫 번째 방식은 영역 제안 (Region Proposal)을 통해 객체를 포함할 가능성이 높은 영역을 선택적 탐색(Selective Search)을 하거나 영역 제안 네트워크(RPN; Region Proposal Network)를 통해 탐지하는 것이다. 이것은 2단계 (Two-Stage) 과정으로 R-CNN, Fast R-CNN, Faster R-CNN, R_FCN(Region-based Fully Convolutional Network) 등의 알고리즘이 있다[8-11].
두 번째 방식은 정해진 크기와 객체를 찾는 방식으로, 원본 이미지를 그리드 영역으로 나누어, 미리 결정된 객체의 고정 개수를 예측한다. 이것은 단일 단계(One-Stage) 과정으로 YOLO(You Only Look Once), SSD(Single Shot MultiBox Detector), RetinaNet 등의 알고리즘이 있다 [12-14]. 단일 단계 과정은 2단계 과정보다 비교적 정확도가 떨어지지만 빠른 처리가 가능하다는 장점이 있다.
최근에는 단일 단계 과정이 개선되면서 정확도가 많이 증가된 YOLO를 활용해 객체 탐지하는 연구가 활발히 진행되고 있으며, 현재 version 5 까지 개발되어있다. YOLO를 이용해 객체 탐지를 위해서는 학습용 이미지 데이터, 이미지에서 탐지할 객체의 경계박스(bounding box) 정보, 객체 클래스 개수 및 종류의 정보가 필요하다.
딥러닝 기반으로 인식하기 위해서는 많은 데이 터를 구축하여 학습이 이루어져야 한다. 하지만 자동차 번호판은 개인 정보 보호법으로 수집에 어려움이 있다. 그리고 수집된 데이터에 경계박스 정보를 담기 위해서 각각 라벨링 작업을 하는데 많은 시간과 인력이 소요되는 문제점이 있다. 이승주는 가상 데이터 생성 시 실제 한글 번호판의 유사한 폰트를 찾아 상위 3개를 활용해 가상 데이터를 생성하였다[15]. 이것은 유사 폰트를 늘려 데이터를 만들면 성능을 더 높일 수 있지만, 데이터 생성 시간과 학습시간이 늘어나는 단점이 있다. 이재현은 가상 데이터 생성 시 클래스를 숫자 10개, 한글 및 지역 문자(2글자)를 74개로 분류하 여 총 84개의 클래스로 구성하였다[16]. 그는 지역명을 하나의 클래스로 할당하였다. 이것은 번호판의 형태가 바뀌면 다시 학습을 해야하고, 클래스 개수가 많아지면 학습시간이 늘어나는 단점이 있다.
본 논문에서는 공개 번호판 규격과 번호판 비율에 따른 데이터셋과 클래스 정보 파일을 이용해 각각의 문자를 YOLO에서 학습하여 번호판 인식 방법을 제안한다. 개인 정보 보호법으로 인해 데이터 수집 문제를 해결하기 위해 국토교통부 고시에서 제시하는 번호판 규격 및 문자 세부 기준을 참고하여 가상 번호판을 생성해 문제를 해결하였다. 자동차 번호판의 경계박스 정보를 담는 라벨링 작업에 소요 시간과 인력 문제를 해결하기 위해 생성된 번호판을 자동차 이미지의 번호판 영역에 비율을 계산하여 합성하였다. 그리고 클래스를 개개의 문자로 분류하여 총 67개의 클래스로 할당하여 학습시간의 문제를 해결하였다.
본 논문의 구성은 다음과 같다. 2장에서는 자동차 번호판의 체계 및 YOLO로 객체를 인식하는 과정에 대해 알아보고, 3장에서는 임의의 자동차 번호판 영역에 2장에서 생성한 가상 번호판을 합성하여 학습용 이미지를 생성하는 방법을 다룬다. 4장에서는 실험결과를 분석하고, 5장에서는 결론을 맺는다.
2. 자동차 번호판 체계 및 YOLO 객체 인식 과정
2.1 자동차 번호판 체계
한국 자동차 번호판은 국토교통부 고시에 따라 일반용 자동차는 자동차의 종류, 자동차의 용도, 자동차의 일련번호로 구성된다. 사업용은 차종 앞 부분에 지역명이 추가로 구성된다[17].
Fig. 1은 2020년 국토교통부 고시의 번호판 규격 및 문자 세부 기준을 나타낸다. 1973년 이전의 한국 자동차 번호판은 2003년 이후로 모두 폐기되었고, 1973년도 개정된 번호판부터 쓰이고 있다. 1973년형 번호판은 지역명, 차종 1자리 숫자, 용도 1자리 글자, 일련번호 4자리 숫자로 2라인으로 구성된다. 1996년형 번호판은 1973년형 번호 판에서 차종을 2자리로 늘렸다. 2004년형 번호판 은 글씨체를 변경하고, 지역명 없이 차종 2자리, 용도 1자리, 일련번호 4자리로 개정하였다. 2006 년형 번호판은 글씨체, 용도, 글자의 크기를 변경해 1라인으로 개정하였다. 이후에 번호판의 포화로 인해 2019년형 번호판은 차종 3자리로 늘어났고, 2020년에는 홀로그램이 삽입되었다. 현재의 번호판 체계에 이르기까지 문자의 크기, 글씨체, 번호판의 크기 비율이 많이 변경되어 왔다.
Fig. 1 Part of the license plate specifications and character detail standards(typeface) in the notice of the Ministry of Land, Infrastructure and Transport
2.2 YOLO 객체 인식 과정
본 연구는 자동차 영상에서 번호판 인식을 위해 딥러닝 기반의 YOLO로 학습을 통해 얻어지는 모델로 인식하는 시스템이다. YOLO를 이용해 객체 탐지를 하기 위해서 객체 클래스를 관리하는 yaml 파일을 만들어준다. 학습용 차량 이미지 데이터셋을 구축하고, 각 이미지의 번호판 영역과 개개의 문자에 경계박스 정보를 가진 파일을 생성해준다. 이미지와 경계박스 정보가 담긴 파일을 학습용과 검증용으로 나눠준다. 그리고 학습시킬 때 이미지 사이즈, batch 크기, epoch 값, 클래스를 관리하는 yaml 파일 경로, 모델 종류, 가중치 파일 경로를 입력하면 된다.
3. 가상 한글 번호판 생성 및 임의의 자동차 번호판 영역 합성
3.1 가상 한글 번호판 생성
번호판을 학습하기 위해서 많은 학습 데이터가 필요하다. 하지만 개인 정보 보호법으로 인해 번호판 수집에 어려움이 많고, 각 문자 라벨링 작업 을 하는데 많은 시간과 인력이 소요되는 문제점이 있다. 본 논문에서는 가상 번호판 생성하는 프로그램을 활용함으로써 해당 문제를 해결하였다.
번호판 생성 프로그램은 2.1절의 국내 번호판 체계에 맞춰 번호판의 종횡비 비율, 문자의 위치 및 종횡비에 따라 5종류의 번호판을 생성한다. 번호판을 생성할 때 각 문자의 경계박스 정보인 중심 좌표값, 너비, 높이의 비율 값을 파일로 저장한다. Fig. 2는 가상 한글 번호판 생성 프로그램으로 생성된 5가지의 번호판을 나타낸다. Fig. 2(a)는 Fig. 1을 참고하여 개개의 문자를 세부 기준에 맞게 만든 번호판 이미지다. Fig. 2(b), (c) 는 사업용으로 각각 335*170 사이즈의 2006년 형, 520*110 사이즈의 2007년 형이다. Fig. 2(d), (e), (f)는 일반용으로 각각 335*155 사이즈의 2006년형, 520*110 사이즈의 2006년형, 335*170 사이즈의 2004년 형이다. Table 1은 Fig. 2(d) 2006년형 번호판에 대한 경계박스 정보의 값을 보여주며 순서대로 클래스 ID값, x 중심 좌표값, y 중심 좌표값, 너비 비율 값, 높이 비율 값을 나타낸다. 번호판을 학습용 데이터로 사용하기 위해 경계박스의 정보를 0∼1사이 값으로 비율에 맞게 치환하여 라벨링 해주고 텍스트 파일로 저장한다.
Table 1. Fig 2(c) Bounding box information of 2006 license plate
Fig 2. Five license plates created by virtual Korean license plate generation program
한글 인식을 위한 객체는 클래스를 구분할 때 지역명(2글자)로 구분하지 않고 개별 글자로 구분한다. 클래스 개수는 번호판 1개, 숫자 10개, 한글 및 지역을 가∼자, 너∼저, 고∼조, 구∼주, 하, 허, 호, 배, 광, 남, 제, 천, 대, 강, 세, 기, 경, 산, 종, 북, 원, 울, 충, 인, 전 56개 분류해 총 67개의 클래스로 구성하여 학습시간을 줄였다.
3.2 가상 번호판과 임의의 자동차 이미지 영역 합성
딥러닝 기반으로 객체 인식을 위해서 많은 학습 데이터가 필요하다. 인공지능 학습에 필요한 다양한 데이터를 제공하는 AI Hub, Kaggle 등의 사이트가 존재한다. 하지만 자동차 이미지 같은 경우 해외 자동차 이미지는 쉽게 찾아볼 수 있지만, 한글 번호판이 있는 자동차 이미지는 찾기 어렵다. 자동차 번호판은 수집에 어려움이 있고, 개개의 번호판과 문자에 경계박스 라벨링 작업을 하기 위해서 많은 인력과 시간 소요되는 문제가 있다. 본 논문에서는 3.1절에서 생성한 가상의 한글 번호판을 임의의 해외 자동차 이미지의 번호판 영역에 종횡비를 계산해 합성하여, 데이터셋을 구축하 는데 걸리는 문제를 해결하였다.
가상 번호판과 합성하기 위해 인터넷 사이트에서 Fig. 3(b)와 같이 번호판 영역에 대해 경계박스 정보가 포함된 자동차 이미지 데이터셋을 구한다. 자동차 이미지에서 번호판 영역의 x, y 중심 좌표와 가로 세로의 비율을 0∼1 사이의 값으로 치환한다. 기존 차량 이미지의 번호판 영역 비율에 맞게 가상의 번호판을 축소/확대 및 회전시킨 후 x, y 좌표 위치에 덮어씌워 합성한다. 경계박스 정보는 덮어씌운 번호판에 맞게 가로, 세로 비 율 값을 계산하여 변경 저장한다. Fig. 3(c)의 초록색 박스는 가상 번호판에서의 경계박스값이 이미지에 합성되면서 번호판의 영역에 맞게 변경되었는지 확인하기 위해 표시되도록 나타내었다.
FIg 3. Process of building data for training
4. 실험환경 및 고찰
본 연구의 실험환경은 Table 2와 같이 윈도우10, Python 3.8을 사용하고 GPU RTX3060을 사용하기 위해 CUDA 환경을 구성하였다. 자동차 번호판을 인식을 위한 차량 이미지를 534장과 각 번호판 타입별로 2006년형 A 2880개, 2006년형 B 4800개, 2006년형 사업용 990개, 2007년형 사업용 990개, 2004년형 1000개를 조합하여 총 10,147개의 한글 번호판을 합성한 차량 이미지 데이터를 생성했다. 10,147개의 데이터 학습용 80%, 검증용 20%로 구분하여 학습용 8,117장, 검증용 2030장을 사용하였다. YOLOv5는 가볍고 빠른 것부터 S(Small), M(Medium), L(Large), X(XLarge) 총 4가지 모델로 구성되어 있다. Table 3의 depth_multiple (dm)은 모델의 깊이 배수를 의미하며 해당 값이 클수록 레이어(layer)를 깊게 하여 학습량을 늘려준다. width_multiple(wm)은 레이어의 채널 배수를 의미하며 해당 값이 클수록 레이어의 컨볼루션 (convolution) 필터 수가 증가한다.
Table 2. Experimental environment and experimental settings
Table 3. Comparison of YOLOv5 models
각 모델을 비교하기 위해 Table 2와 같이 이미지 사이즈 416, batch 16, epoch 50의 동일한 값을 설정하여 학습하였다. 그 결과 각 모델 크기 별로 검출 결과 중 옳게 검출한 비율을 나타내는 정확도(precision)는 Table 3과 같이 small 67%, midium 88%, large 94%, xLarge 97%가 나오는 결과를 확인할 수 있다. Fig. 4는 각 모델별로 학습과 검증 단계에서의 클래스에 대한 손실율을 보여준다. 그래프는 각 모델별로 epoch 횟수에 따라 손실되는 정도를 나타낸다. 두껍게 표시한 XLarge모델이 epoch가 50일 때 학습용 클래스에서 0.0176의 손실율을 확인할 수 있고, 검증용 클래스에서 0.0161의 손실율을 나타내어 가장 작은 것을 확인할 수 있다.
Fig. 4 Comparison of data training and validation loss rates with YOLOv5 models
번호판 데이터셋을 구축할 때 가상 번호판을 자동차 이미지의 번호판 영역의 크기에 맞게 축소/확대 하였다. 그리고 번호판의 문자를 개별 클래스로 분류한 후 학습하였다. 그 결과 2019년 이후로 개정된 차종이 3자리인 번호판, 홀로그램이 삽입된 번호판, 친환경 번호판 형태의 경우 학습을 하지 않았지만 Fig. 5와 같이 정상적으로 인식되는 결과가 나타났다.
Fig 5. License plate recognition result
본 결과와 이전 연구결과를 비교하면 다음과 같다. OCR을 활용한 김남우[1]는 90% 이상의 정확도, 채호열[2]은 88%의 정확도가 나타난다. CNN을 활용한 이승주[15], 이재현[16]은 96%의 정확도가 나왔지만, 학습 데이터로 1,000,000장 이상 사용했다. 본 연구는 10,147장의 데이터로 학습한 결과 97%의 정확도를 얻었으며, 이는 학습에 소요되는 시간이 단축되는 것을 확인할 수 있다.
5. 결론
본 논문에서는 가상 한글 번호판을 생성하여 자동차 이미지에 합성한 데이터를 사용해 학습을 통해 모델을 만들어 차량 번호판을 인식하는 실험을 하였다. 이를 위해 5가지의 가상 한글 번호판 을 생성하고, 임의의 차량 이미지의 번호판 영역에 합성하였다. 번호판의 각 문자는 종횡비를 구해서 경계박스 정보를 만들고, 개별로 클래스를 분류해 학습을 시켰다. 실험결과 차종을 분류하는 숫자가 3자리인 신형 번호판과 문양이 들어가는 친환경 번호판 형태의 경우 학습을 하지 않았지만, 정상적으로 인식되는 결과를 얻을 수 있었다. 그러나 인식된 번호판을 식별하기 쉽게 정렬의 필요성을 느꼈고, 정확성을 더 높이기 위해 학습량 증가 모델과 학습을 하지 않은 형태의 번호판 등에 대해 추가 학습을 통해서 번호판 인식의 성능을 높일 계획이다.
감사의 글
본 연구는 과학기술정보통신부 및 정보통신기획평가원의 지역지능화혁신인재양성(Grand ICT연구 센터) 사업(IITP-2021-2020-0-01791)과, 산업통상자원부와 한국산업기술진흥원의 지역혁신클러스터R&D사업(과제번호 P0015330)의 연구결과로 수행되었음.
참고문헌
- 김남우, 허창우, "Emgu CV를 이용한 자동차 번호판 자동 인식 프로그램의 성능 평가에 관한 연구", 한국정보기술학회논문지, 20, 6, pp. 1209-1214, (2016).
- 채호열, 석호식, "OCR 엔진 기반 분류기 애드온 결합을 통한 이미지 내부 텍스트 인식 성능 향상", 전기전자학회논문지, 24, 4, pp. 166-172, (2020).
- 신현경, "카메라 영상 위에서의 문자 영역 추출 및 OCR", 정보처리학회논문지D, 17, 1, pp. 59-66, (2010).
- 김재정, 김창복, "YOLO와 CNN을 이용한 강인한 차량 번호판 인식 시스템 구현", 학국정보기술학회논문지, 19, 4, pp. 1-9, (2021).
- Tang Quang Hieu, 연승호, 김재민, "CNN기반 한국 번호판 인식", 전기전자학회논문지, 23, 4, pp. 222-227, (2019).
- 김정환, 임준홍, "딥러닝을 이용한 번호판 검출과 인식 알고리즘", 전기전자학회논문지, 23, 2, pp. 642-651, (2019). https://doi.org/10.7471/IKEEE.2019.23.2.642
- 김운기, Fatemeh Dehghan, 조성원, "SSD -Mobilenet 과 ResNet을 이용한 모바일 기기용 자동차 번호판 인식시스템", 스마트미디어저널, 9, 2, pp. 92-98, (2020). https://doi.org/10.30693/SMJ.2020.9.2.92
- Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik, UC Berkeley, "Rich feature hierarchies for accurate object detection and semantic segmentation", CVPR, pp. 1-10, (2014).
- Ross Girshick, "Fast R-CNN", ICCV, (2015).
- Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun, "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks", "arxiv.org/abs/1506.01497" (2015).
- Jifeng Dai, Yi Li, Kaiming He, Jian Sun, "R-FCN: Object Detection via Region - based Fully Convolutional Networks", "arxiv.org/1605.06409" (2016).
- Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi, "You Only Look Once: Unified, Real-Time Object Detection", pp. 1-10, "arxiv.org/abs/1506.02640" (2016).
- Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg, "SSD: Single Shot MultiBox Detector", "arxiv.org/abs/1512.02325" (2015).
- Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollar, "Focal Loss for Dense Object Detection", "arxiv.org/abs/1708.02002" (2017).
- 이승주, 박구만, "가상 데이터를 활용한 번호판 문자 인식 및 차종 인식 시스템 제안", 방송공학회논문지, 25, 4, pp. 776-788, (2020).
- 이재현, 조성만, 이승주, 김청화, 박구만, "인조 데이터를 활용한 차량 번호판 인식 시스템", 전자공학회논문지, 57, 1, pp. 107-115, (2020).
- 국토교통부 고시 제2020-344호, "https://www.law.go.kr/", (2020).
- Korean License Plate Generator, "https://github.com/yakhyo/Korean-License-Plate-Generator"