SOLUTION
home
OGQ GYN AI for Image
home
🚘

OGQ GYN Developers Day #1-1 : LP Detection

게시일
2022/03/15
관련 태그
자동차 검출
번호판 검출
pseudo label
2-stage
레이블링
게시자
Choi YeonWoo
Choi YeonWoo
1 more property
오지큐지와이엔에서 임베디드 시스템에서 동작하는 번호판 인식 모델을 개발 중입니다.
본 게시물에서는 프로젝트를 진행하며 데이터 부족 문제와 그에 대한 해결 방안, 원거리 이미지에 대한 성능 향상 방법 등을 소개합니다.

목차

LicensePlate Detection 모델 개발 배경

블랙박스에서 찍힌 이미지처럼 어느 정도 거리가 있는 차량에서 문자를 바로 검출하기는 힘듭니다. 따라서 이미지에서 번호판을 검출한 뒤 번호판에서 문자 인식을 수행합니다.
큰 목표는 다음과 같습니다.
목표 1. 이미지에서 번호판을 검출 후 문자 인식
목표 2. 근거리뿐만 아니라 원거리에서도 우수한 성능
목표 3. 칩에서 구동할 수 있는 가벼운 OCR 모델 구현

문제 접근 방식 정의

번호판 문자 인식에 사용될 수 있는 데이터들은 다음의 조건을 만족해야 합니다.
조건 1. 한국어로 된 번호판일 것
조건 2. annotation이 있는 데이터일 것
조건 3. 다양한 거리에서 찍은 이미지일 것
조건 4. OCR에서 사용될 수 있도록 문자나 숫자가 보일 것
위 조건을 모두 만족하는 오픈 데이터를 구하기 힘듭니다.
예를 들어, 아래와 같은 샘플들은 학습에 사용될 수 없습니다.
외국 번호판, 일부만 나온 번호판
결과적으로, 추려진 데이터 셋 개수는 근거리 이미지 1,600장과 원거리 이미지 300장에 불과합니다.
우리의 문제는 소수의 데이터 셋을 활용해 근거리 뿐만 아니라 원거리에서도 우수한 성능을 보유하는 모델을 개발해야 한다는 것입니다.
해결 방법은 다음과 같습니다.
방법 1. 2-stage detection
방법 2. pseudo label 생성
근거리 샘플이 많기 때문에 원거리 데이터 셋에 대해 성능이 낮게 나올 수밖에 없습니다.
따라서 원거리 이미지에서
1) 자동차를 먼저 검출한 뒤
2) crop 된 이미지에서 번호판을 검출하는 2-stage detection을 사용하였습니다.
이렇게 모델을 1차 적으로 학습한 뒤, augmentation이 없어 사용되지 못했던 이미지들에 대해 pseudo label을 생성해줍니다.
그리고 늘어난 학습 샘플을 활용해 모델의 2차 학습을 수행합니다.

데이터 정의 및 준비

결과적으로 오지큐지와이엔이 확보한 데이터는
“차번인식” : 이미지 한 장당 번호판 한 개 혹은 없음 (가까이서 찍은 사진)
“AI HUB” : 이미지 한 장당 번호판 한 개 혹은 없음 (가까이서 찍은 사진)
“Black-Box” : 이미지 한 장당 번호판 다수 혹은 없음 (멀리서 찍은 사진)
“Cellinx” : 이미지 한 장당 번호판 다수 혹은 없음 (멀리서 찍은 사진)
총 네 종류의 데이터 셋입니다.
이러한 데이터들의 Annotation 분포는 다음과 같습니다.
차번 인식과 AI HUB 데이터는 Annotation이 있는 샘플들에 한해서 train, validation, test로 이용합니다.
Black Box 데이터는 test 용도로만 사용합니다. 이 중 Annotation이 잘못된 샘플들이 다수 존재했기에 처음부터 레이블링을 하였습니다.

번호판 관련 클래스

LicensePlate : 번호판 형태 + 문자까지 인식 가능
Uncertain licenseplate : 번호판 형태만 인식 가능
Annotation 수정 & 중복 제거를 거친 1차 학습 데이터 셋과 pseudo label 이 추가 된 2차 학습 데이터 셋은 아래와 같습니다.

모델 학습 과정

2-stage detection을 이용해 모델을 학습합니다.
자동차 검출기의 모델은 COCO dataset으로 pretrained YOLOv5s를 가져와 사용합니다.
마찬가지로 LP detctor의 모델도 YOLOv5s 를 이용해 학습합니다.
2-stage detection 과정
성능 평가에서 알 수 있듯이 차량이 한 대 이상 보이는 원거리 샘플의 경우 Car detector을 먼저 수행하는 것이 낫고, 근거리 이미지의 경우에는 LP detector을 바로 수행시키는 것이 낫습니다.
따라서 입력 이미지에 따라 검출기의 종류를 선택하도록 하였습니다.

모델 Inferece(Prediction) 후처리

위와 같은 원리로 학습된 모델을 이용하여 pseudo label을 생성합니다.
중거리 이미지 14만 장에 대해 새로운 레이블을 생성했습니다.
모든 pseudo label을 신뢰할 수 없기 때문에 한 장의 샘플에 대해 레이블이 두 개 이상 생성된 경우를 살펴보았더니 오검출이 빈번히 발생했습니다.
이러한 경우는 5.8%로, 전체 데이터에 비해 무시할 수 있을 만한 수이므로 해당 경우는 제거했습니다.
이렇게 제거하고 남은 데이터 셋만 2차 학습에 사용됩니다.
레이블이 두 개 이상 생성된 Sample (Celinx data)

성능 평가

AP@0.5 와 F1-score 로 학습 성능을 평가합니다.
Precision=TPTP+FP Precision = {TP \over {TP+FP}}
Recall=TPTP+FNRecall = {TP \over {TP+FN}}
f1score=2PrecisionRecallPrecision+Recallf_{1}-score =2*{{Precision * Recall} \over {Precision+Recall}}

1차 학습

근거리 이미지에 대해서 LP detector 만 수행한 것이 AP, f1-score 값이 더 높습니다.
원거리 이미지에 대해서는 Car+LP detector 을 수행한 것이 더 높습니다.
따라서 이미지에 따라 검출기 종류를 선택하도록 합니다.

2차 학습

새로 생성된 데이터까지 포함하여 2차 학습에 사용되는 학습 데이터 수는 약 12만 장입니다.
번호판 검출기만 사용한 결과, 원거리에서 1.8 배의 성능 개선이 나타났습니다.

데이터에 적용 예시

1차 학습(2-stage)의 효과를 다음 그림에서 잘 보여줍니다.
번호판 검출기만으로는 예측하지 못하는 번호판을 자동차 검출기를 달았더니 완벽히 검출하는 모습을 볼 수 있습니다.
2차 학습 후, 1차 학습에서 맞추지 못한 번호판을 잘 검출합니다.
Search
OGQ GYN Developers Day #20 : DHR 기반 EN675 화재 고도화
OGQ GYN Developers Day #20 : DHR 기반 EN675 화재 고도화
OGQ GYN의 기술블로그를 비상업적으로 사용 시 출처를 남겨주세요. 상업적 용도를 원하실 경우 문의 부탁드립니다. E-mail. tech@gynetworks.com
OGQ Corp. All right reserved.