차량 번호판 정렬 (License plate alignment)

도룩·2024년 4월 29일
1
post-thumbnail

개요

  • 현재 상태

    • 많은 양의 front view 이미지 데이터로 학습한 detecting model이 있다.
    • Side view 이미지 데이터가 front view 이미지 만큼 많이 없다.
      \quad
  • 해결하고자 하는 문제
    아래와 같은 Side view 이미지에서도 번호인식을 잘 하고 싶다.

  • 일반적인 해결방법

    • 기존의 front view 데이터를 affine/perspective transform을 이용해 데이터 증강(data augmentation)을 하고 기존 detecting model을 학습시켜 robustness을 향상시킨다.
    • Side view 이미지 데이터들을 많이 수집 및 가공하고 detecting model을 학습시켜 robustness을 향상시킨다.
  • 일반적인 해결방법의 장점과 문제점

    • 장점: 추가 작업 없이 기존의 모델만 업데이트 해서 바로 사용할 수 있다.
    • 문제점 1: 다양한 각도, 다양한 문자를 갖는 학습 데이터가 꽤 많이 필요할 것이다.
    • 문제점 2: 문자, 숫자를 모두 labeling 해야하는 데이터 가공작업이 필요하기 때문에 인적, 시간적으로 많은 비용이 들어간다.
  • 제안하는 해결방법

    • Pose estimation 모델을 이용해 번호판의 꼭지점들(4 개)를 찾고 Perspective transform을 이용해 번호판을 정렬한 후 기존의 detecting 모델을 이용해 번호인식 한다.
  • 제안하는 해결방법의 장점과 문제점

    • 장점 1: 기존의 detecting 모델을 업데이트 없이 그대로 사용할 수 있다.
    • 장점 2: 상대적으로 학습데이터가 적게 필요하다.
    • 장점 3: 숫자, 문자를 각각 labeling 작업하는게 아니기 때문에 인적, 시간적 비용이 상대적으로 적게 필요하다.
    • 문제점 1: 딥러닝 모델을 하나 더 사용하기 때문에 하드웨어 부담이 증가.

Code & Result

아이디어 자체는 여러 블로그나 논문들에 직접적으로 나와있기 때문에 공개해도 된다고 회사에서 허가를 받았지만, 실제로 사용한 코드와 데이터는 공개할 수 없다.

Pytorch를 통해 모델을 학습하였고, 이후 배포를 위해서 ONNX로 변환 및 Flask 웹 서버를 이용해서 배포하였다.
개요에서 언급한 일반적인 해결방법제안한 해결방법을 각각 사용하여 Side view 500 장의 이미지로 구성된 테스트 셋으로 비교해본 결과 일반적인 해결방법을 이용하여 기존의 detecting 모델을 업데이트한 모델은 Side view 이미지에 대해 부분인식 또는 오인식한 결과값들이 대부분이었고, 제안하는 해결방법을 이용한 모델은 대부분 정상적으로 잘 인식하였다.

Discussion

왜 기존의 detecting model을 개선하는 것으로는 극복하기 어려웠을까

  1. 같은 숫자라도 번호판이 꺾여진 정도에 따라 매우 다르게 보인다.
    같은 숫자라도 Front view에서 보이는 번호판의 문자, 숫자들은 Side view에서는 꽤 다르게 보인다.

    \\
    그리고 Side view 끼리도 꺾인 방향과 정도에 따라서도 서로 문자와 숫자가 꽤 다르게 보일 것이다.
    즉, 데이터의 distribution이 커지기 때문에 이를 다 커버하기 위해서는 더 다양한 문자, 숫자를 가지면서 다양한 각도로 꺾인 이미지들이 필요해지기 때문에 diversity가 높은 질 좋은 데이터가 많이 필요할 것이고 이는 매우 어렵고 데이터를 가공하는 cost도 상당할 것이다.)

  2. 많이 꺾여져 있을 수록 bounding box에서 문자, 숫자가 차지하는 비율이 낮다.
    차량 번호인식에 있어 Object detection 분야의 가장 대표적인 모델인 Yolo(You only look once)를 많이 사용한다. Yolo는 bounding box를 치는 모델이기 때문에 검출하고자 하는 물체가 이미지 내에서 어떻게 존재하느냐에 따라 조금씩 성능차이가 난다. 예를 들어 아래 이미지에서 bat를 bounding box로 검출한다고 해보자.

    왼쪽 이미지의 경우 bat가 bounding box 면적의 대부분을 차지하고, 오른쪽 이미지의 경우 bat가 bounding box의 반도 차지하지 못한다.
    \\
    즉, 타겟하는 물체에 대해 bounding box를 예측하는 detecting 모델의 입장에서는 검출하고자 하는 물체보다 background의 비중이 높은 오른쪽 이미지에서의 학습이 더 어려울 것이다.

0개의 댓글

관련 채용 정보