본문으로 건너뛰기

"python" 태그로 연결된 10개 게시물개의 게시물이 있습니다.

모든 태그 보기

[Vision AI] 한국형 번호판 OCR 최적화, 정규식 검증 및 시간 축 Majority Voting 앙상블 (v01~v11 완결편) (#5)

· 약 3분
Jihwan Park (jaybee)
AI & Robotics Engineer

시간 축 Majority Voting 및 최종 확정 화면

📌 Key Takeaways (핵심 요약)

  • 문제점: 단일 프레임 OCR은 차량 이동 시 그림자나 각도 변화에 따라 64아1511, 64가7151, 24가1511 등 한두 글자의 일시적 오인식이 불가피하게 발생합니다.
  • 해결책: 한국 번호판 규격 정규식(^\d{2,3}[가-힣]\d{4}$) 필터링과, 최근 7프레임 슬라이딩 윈도우에서 3회 이상 일치 시 번호를 확정하는 시간 축 Majority Voting 앙상블 엔진을 구현했습니다.
  • 결과: 6월 5일 초기 외계어 노이즈(ACCIIXOY-1Z01...)부터 6월 7일 완벽한 64가1511 확정에 이르기까지 11단계 리팩토링(v01~v11)을 거쳐 99.4%의 최종 판독 신뢰도를 달성했습니다.

[Vision AI] 저화질 블랙박스 뭉개짐 극복: EDSR 딥러닝 초해상화와 다중 프레임 스태킹 노이즈 제거 (#4)

· 약 2분
Jihwan Park (jaybee)
AI & Robotics Engineer

EDSR 딥러닝 초해상화 적용 결과

📌 Key Takeaways (핵심 요약)

  • 문제점: 블랙박스 원본 영상에서 추출된 번호판 패치는 해상도가 40x20 픽셀 미만으로 극도로 작고 H.264 압축 아티팩트로 인해 일반 보간법(Bicubic)으로는 한글 자모와 숫자의 획이 뭉개져 식별할 수 없습니다.
  • 해결책: 배치 정규화를 제거해 텍스처 복원력을 극대화한 EDSR_x4 심층 잔차 신경망(EDSR_x4.pb)을 도입하고, 추적 중인 연속 3~5프레임의 번호판을 정렬·평균화하는 다중 프레임 이미지 스태킹(Multi-frame Image Stacking)을 결합했습니다.
  • 결과: 번호판 해상도를 4배 확대하면서 글자 엣지의 선명도를 대폭 향상시켜 후속 EasyOCR의 한글 음절 인식 성공률을 32%에서 91% 이상으로 끌어올렸습니다.

[Vision AI] 계층적 객체 탐지: YOLOv3 차량 ROI, YOLOv5 번호판 전용 탐지기 및 CSRT 실시간 추적 (#3)

· 약 2분
Jihwan Park (jaybee)
AI & Robotics Engineer

YOLOv5 번호판 영역 탐지 결과

📌 Key Takeaways (핵심 요약)

  • 문제점: 640x480 전체 화면에서 작은 번호판을 직접 탐지하면 도로변 광고판, 건물 간판 등의 배경 노이즈로 오탐(False Positive)이 폭증하고, 매 프레임 무거운 딥러닝 추론 시 FPS가 10 이하로 급락합니다.
  • 해결책: 1차 광역 차량 검출(YOLOv3-tiny) 후 차량 ROI 내부에서만 번호판 전용 모델(YOLOv5 lp_det.pt, confidence=0.6)을 실행하는 2단계 계층형 아키텍처를 적용했습니다. 또한 15프레임 주기 재검출(detection_interval=15)과 OpenCV CSRT 고속 트래커를 결합했습니다.
  • 결과: 배경 오탐을 원천 차단하고 GPU 연산 부하를 80% 절감하여 실시간 50+ FPS의 부드러운 차량 및 번호판 추적을 달성했습니다.

[Vision AI] 동적 차선 경계선 검출 및 기하학적 IoU 차선 침범 판정 알고리즘 (#2)

· 약 3분
Jihwan Park (jaybee)
AI & Robotics Engineer

동적 차선 검출 및 오버레이

📌 Key Takeaways (핵심 요약)

  • 문제점: 블랙박스 영상은 노면 반사광, 아스팔트 균열, 이정표 그림자 등으로 인해 차선 오검출이 빈번하며, 단순 좌표 비교 방식은 차선 변경 차량의 침범 시점을 정밀하게 판정하지 못합니다.
  • 해결책: 소실점 기준 사다리꼴 ROI 마스킹과 양수/음수 기울기 임계치(|slope| > 0.5) 필터링, 그리고 최근 7프레임 이동 평균 스무딩 큐를 도입했습니다. 침범 판정은 차량 접지면(하단 30%)과 차선 다각형 간의 기하학적 IoU(0.05 이상)로 수식화했습니다.
  • 결과: 노면 노이즈를 95% 이상 기각하면서, 차량이 차선을 실제로 밟거나 침범하는 순간을 프레임 단위로 흔들림 없이 감지했습니다.

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

· 약 3분
Jihwan Park (jaybee)
AI & Robotics Engineer

6단계 ANPR 파이프라인 구조도

📌 Key Takeaways (핵심 요약)

  • 문제점: 저화질 차량용 블랙박스 영상은 노면 진동, 역광, 모션 블러, 심한 H.264 압축 아티팩트로 인해 번호판이 심하게 뭉개지며 차선 침범 상황을 실시간으로 추적하기 극도로 어렵습니다.
  • 해결책: 작업 단계를 6단계 계층형 파이프라인(Canny/Hough 동적 차선 추출 -> YOLOv3 차량 검출 -> 다각형 IoU 침범 판정 -> YOLOv5 번호판 국소 탐지 -> EDSR_x4 심층 초해상화 복원 -> EasyOCR 시간 축 Majority Voting)으로 모듈화 설계했습니다.
  • 결과: 과도한 GPU 부하 없이 30 FPS 이상의 처리 속도를 확보하면서도, 열악한 블랙박스 환경에서 차선 침범 차량의 번호판을 완벽하게 판독하는 End-to-End 파이프라인을 구축했습니다.

[Webots 로보틱스] Sim-to-Real: Arduino Uno, HC-06 블루투스, ArUco 마커 비전 추적으로 현실 세계 전이 (#5)

· 약 5분
Jihwan Park (jaybee)
AI & Robotics Engineer

ArUco 마커 비전 추적 화면

📌 핵심 요약 (TL;DR)

  • 문제(Problem): 마이크로컨트롤러(Arduino Uno ATmega328P)의 2KB RAM 한계로 인한 연산 제약, 바퀴 슬립(Wheel Slip) 및 센서 노이즈, 그리고 시뮬레이션 물리와 실제 하드웨어 간의 Sim-to-Real 간극(Reality Gap) 발생.
  • 해결(Solution): PC에서 고수준 비전 처리 및 Q-Table 추론을 담당하고 아두이노는 모터 PWM 구동만 맡는 분산 I/O 아키텍처(HC-06 블루투스, 115,200 baud) 구축 + 천장 웹캠 렌즈 왜곡 보정 및 ArUco 마커 호모그래피(vision.py) 기반 실시간 위치/헤딩 추적 시스템 구현.
  • 결과(Result): 가상에서 학습된 648-bin Q-Table 가중치만으로 실제 1.2m × 1.2m 아레나에서 목표 도달 성공률 86.7%를 달성하며 성공적인 하드웨어 배포 완수.

[Webots 로보틱스] evaluate_qlearning: 결정론적 주행 정량 평가와 DQN·SARSA 벤치마크 (#4)

· 약 4분
Jihwan Park (jaybee)
AI & Robotics Engineer

성공률 및 스텝 수 벤치마크

📌 핵심 요약 (TL;DR)

  • 목적(Objective): 학습 중 탐색 노이즈(Epsilon)를 완전히 끈 상태(ε=0)에서 순수하게 고착된 정책(Greedy Policy)의 자율주행 신뢰성과 경로 품질을 검증.
  • 평가 방법(Evaluation): evaluate_qlearning.py를 통해 5개 평가 시드(Eval Seeds 0~4)에 걸쳐 총 30회 독립 테스트를 수행하고, 성공률, 이론 최단 경로 대비 주행 효율(Path Efficiency), 근접 위기(Near-miss) 횟수를 정밀 측정.
  • 결과(Result): Tabular Q-Learning은 장애물 맵에서 93.3%의 결정론적 성공률과 높은 경로 안정성을 기록하며, 연산량이 무거운 신경망 기반 DQN 및 온폴리시 SARSA 모델 대비 실용적 우수성을 입증.

[Webots 로보틱스] 12개 벽 장애물과 Local Minima 함정 극복: 다중 시드 병렬 시뮬레이션 (#3)

· 약 4분
Jihwan Park (jaybee)
AI & Robotics Engineer

obstacle12 시뮬레이션 환경

📌 핵심 요약 (TL;DR)

  • 문제(Problem): 벽 뒤에 목표가 위치할 때 거리 델타 보상(+0.1 × Δdist)의 탐욕적 특성으로 인해 로봇이 벽을 우회하지 못하고 정면으로 밀고 들어가 갇히는 지역 최적해(Local Minima) 함정 발생.
  • 해결(Solution): 3방향 초음파 헤드스캔(전방/좌/우) 상태 정보와 장기 할인율(γ=0.99)의 벨만 역전파 결합 + PowerShell 기반 **Webots Headless 무인 가속 파이프라인(headless_run.ps1)**을 구축하여 3개 시드(Seed 0, 1, 2) 반복 학습 수행.
  • 결과(Result): 12개 벽 장애물 환경에서도 평균 600 에피소드 이후 90% 이상의 안정적인 목표 도달 성공률을 달성하며 벽 우회 우회로(Detour Policy) 형성 입증.

[Webots 로보틱스] Tabular Q-Learning 구현과 보상 함수(Reward Function) 튜닝 (#2)

· 약 5분
Jihwan Park (jaybee)
AI & Robotics Engineer

학습 보상 곡선

📌 핵심 요약 (TL;DR)

  • 문제(Problem): 목표 도달(+1.0)과 벽 충돌(-1.0)만 주어지는 희소 보상(Sparse Reward) 환경에서 에이전트가 우연히 목표를 찾기까지 수천 번 제자리 회전하거나 방황하는 탐색 지연 발생.
  • 해결(Solution): 목표와의 유클리드 거리 변화량에 비례하는 포텐셜 기반 보상(+0.1 × Δdist)과 스텝(-0.01), 회전(-0.01), 후진(-0.05) 페널티를 결합한 다차원 보상 셰이핑(Reward Shaping) 설계 + 지수 감쇠 엡실론 그리디(Epsilon-Greedy, 1.0 → 0.05) 전략 적용.
  • 결과(Result): 장애물 없는 환경(no_obstacle) 기준 500 에피소드 이내에 이동 평균 보상이 안정적 양수 구간(0.7+)으로 진입하고 최종 목표 도달 성공률 98% 이상 달성.

[Webots 로보틱스] Q-Learning 자율주행: 648개 상태 공간 이산화와 소켓 통신 아키텍처 (#1)

· 약 5분
Jihwan Park (jaybee)
AI & Robotics Engineer

Webots 시뮬레이션 환경

📌 핵심 요약 (TL;DR)

  • 문제(Problem): 연속적인 센서 거리·각도 데이터로 인해 고전적 표 기반 Q-Learning(Tabular Q-Learning) 적용 시 상태 공간 폭발 및 Webots 시뮬레이터와 학습 스크립트 간 실시간 동기화 오버헤드 발생.
  • 해결(Solution): 5차원 연속 센서 입력을 기하학적·물리적 의미를 가진 구간으로 분할하여 3 × 8 × 3 × 3 × 3 = 648개의 이산 상태(Bin)로 매핑(discretizer.py)하고, TCP 로컬 소켓(Port 5000, Line-delimited JSON) 기반의 IPC 제어 파이프라인 구축.
  • 결과(Result): O(1)의 초고속 Q-Table 갱신 속도를 확보하고, 시뮬레이션 물리 스텝(32ms)에 맞춘 안정적인 동기화 루프 완성.