차량 번호판 정렬 (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도 상당할 것이다.)

0개의 댓글