[Vision AI] 블랙박스 차선 침범 적발 & 초해상화 번호판 인식: 6단계 파이프라인 및 실시간 설계 과제 (#1)
· 약 3분

📌 Key Takeaways (핵심 요약)
- 문제점: 저화질 차량용 블랙박스 영상은 노면 진동, 역광, 모션 블러, 심한 H.264 압축 아티팩트로 인해 번호판이 심하게 뭉개지며 차선 침범 상황을 실시간으로 추적하기 극도로 어렵습니다.
- 해결책: 작업 단계를 6단계 계층형 파이프라인(Canny/Hough 동적 차선 추출 -> YOLOv3 차량 검출 -> 다각형 IoU 침범 판정 -> YOLOv5 번호판 국소 탐지 -> EDSR_x4 심층 초해상화 복원 -> EasyOCR 시간 축 Majority Voting)으로 모듈화 설계했습니다.
- 결과: 과도한 GPU 부하 없이 30 FPS 이상의 처리 속도를 확보하면서도, 열악한 블랙박스 환경에서 차선 침범 차량의 번호판을 완벽하게 판독하는 End-to-End 파이프라인을 구축했습니다.
1. 프로젝트 배경: 왜 블랙박스 컴퓨터 비전은 어려운가?
스마트 모빌리티와 지능형 교통 시스템(ITS)에서 **실시간 차선 침범 차량 감지 및 자동 번호판 인식(ANPR)**은 자율주행과 법규 단속 자동화의 핵심 기술입니다. 하지만 실제 현장 블랙박스 영상을 처리할 때는 다음과 같은 복합적인 물리적·광학적 난제에 직면합니다:
- 심각한 저해상도와 텍스처 뭉개짐: 후방 또는 전방 주행 차량의 번호판 영역은 전체 640x480 프레임에서 불과 30x15 ~ 50x25 픽셀에 불과하여 한글 음절과 숫자의 획이 하나로 뭉개집니다.
- 카메라 노면 진동 및 롤링 셔터 왜곡: 주행 중 발생하는 수직 진동과 급제동, 차선 변경 시의 급격한 각도 변화로 인해 직선 차선이 왜곡됩니다.
- 실시간 연산 병목: 거대 비전 트랜스포머나 풀 프레임 고밀도 모델을 매 프레임 실행하면 심각한 프레임 드롭이 발생하여 실시간 추적이 불가능합니다.
2. 6단계 계층형 파이프라인 아키텍처
이를 해결하기 위해 우리는 연산 효율과 판독 정확도를 동시에 극대화하는 6단계 계층형(Hierarchical) 파이프라인을 설계했습니다.
flowchart TD
Raw["원본 블랙박스 프레임 640x480"] --> L1["1단계: Canny + Hough 동적 차선 추출"]
Raw --> L2["2단계: YOLOv3-tiny 차량 영역 검출"]
L1 & L2 --> L3["3단계: 차량 풋프린트 & 차선 다각형 IoU 침범 판정"]
L3 -- 침범 발생 시 --> L4["4단계: 차량 ROI 내 YOLOv5 번호판 국소 탐지"]
L4 --> L5["5단계: EDSR_x4 딥러닝 4배 초해상화 복원"]
L5 --> L6["6단계: EasyOCR + 정규식 + Majority Voting 앙상블"]
L6 --> Result["최종 위반 차량 번호판 확정 64가1511"]

각 단계별 역할 분담
- 차선 추출 (Lane Extraction): 소실점을 고려한 사다리꼴 ROI 마스킹 및 기울기(Slope) 필터링으로 차로 경계선을 동적 추적합니다.
- 차량 검출 (Vehicle Detection): 가벼운 YOLOv3-tiny 모델로 주변 주행 차량의 바운딩 박스를 밀리초 단위로 생성합니다.
- 침범 판정 (Intrusion Criterion): 차량의 하단 접지면과 차선 다각형 간의 기하학적 교집합 면적비(IoU)가 임계치(0.05)를 초과하는지 평가합니다.
- 번호판 위치 특정 (Plate Localization): 전체 화면이 아닌, 침범 차량 ROI 내부에서만 파인튜닝된 YOLOv5(
lp_det.pt)를 실행하여 불필요한 연산을 제거합니다. - 초해상화 복원 (Super-Resolution): 저해상도 번호판 크롭 패치를 딥러닝 EDSR_x4 신경망에 전달하여 엣지와 획을 4배 확대 복원합니다.
- 문자 인식 및 투표 (OCR & Majority Voting): EasyOCR 추출 결과에 한국 번호판 정규식 필터를 적용하고, 최근 7개 프레임 히스토리 큐에서 다수결로 최종 번호를 확정합니다.
3. 핵심 시스템 파라미터 (CONFIG)
안정적인 파이프라인 구동을 위해 튜닝된 핵심 설정값은 다음과 같습니다:
CONFIG = {
"output_width": 640,
"output_height": 480,
# 차량 탐지 및 차선 침범 임계값
"conf_threshold_vehicle": 0.5,
"nms_threshold_vehicle": 0.4,
"min_vehicle_w": 70,
"min_vehicle_h": 70,
"lane_iou_threshold": 0.05,
"detection_interval": 15, # 15프레임마다 재검출, 중간은 CSRT 추적
# 번호판 OCR 및 초해상화 파라미터
"min_plate_area_for_ocr": 1200, # 최소 픽셀 면적 확보 후 OCR 수행
"plate_history_size": 7, # 시간 축 슬라이딩 윈도우 크기
"plate_confirm_threshold": 3, # 3회 이상 일치 시 번호판 최종 확정
# 모델 가중치 파일
"sr_model": "EDSR_x4.pb",
"yolo_plate_model": "lp_det.pt"
}
4. 다음 편 예고
다음 2편에서는 Canny 에지 검출, 확률적 허프 변환(HoughLinesP), 좌우 기울기 필터링 수학, 그리고 차량 바운딩 박스와 차선 간의 동적 다각형 IoU 침범 판정 알고리즘을 상세히 분석합니다.
