TL;DR
한 번의 차량 워크어라운드 동영상을 업로드하면 업로드 시작 전에 파일 지문을 타임스탬프하고 RF-DETR로 프레임별 검출을 수행한 뒤 ByteTrack으로 트래킹해 ParallaxFilter로 반사와 실제 손상을 구분한다. 남은 후보는 Gemini가 구조화된 답변으로 유형·심각도·크기·부위를 판별하거나 거부하고, 최종 결과는 ECDSA P-256으로 전자서명한 PDF와 별도 타임스탬프 체인으로 제공되어 브라우저에서 검증 가능하다. 구현 코드는 공개 GitHub 저장소에 있으며 워크플로 파라미터와 거부 게이트를 튜닝하고 필요시 검출기 재학습으로 성능을 개선할 수 있다.
섹션별 상세
이미지 분석

수평 타임라인 형태의 다이어그램으로 업로드 요청, 객체 검출, 패럴랙스 분석, 평가/거부, 최종 검증의 순서를 시각화한다. 각 단계 아래에는 Data Transfer, Object Tracking, Decision Point 같은 하위 블록이 배치되어 있어 파이프라인의 모듈 구성을 한눈에 파악할 수 있다. 이 그림은 시스템 설계와 논리적 단계 분할을 이해하는 데 핵심적이다.
워크플로 전체 흐름 다이어그램

세로 레이아웃의 워크플로 편집 화면으로 Inputs, damage_detector, tracker, parallax 블록이 순서대로 연결된 모습을 보여준다. 각 블록 사이에 전달되는 필드(예: det_confidence, track_activation_threshold)가 보이므로 파라미터 주입 방식과 데이터 흐름을 재현하기에 유용하다. 워크플로 정의를 그대로 가져와 재구성할 수 있음을 시사한다.
Roboflow Workflows 편집기에서의 검출→트래커→패럴랙스 블록 연결 스크린샷

damage_detector 블록의 속성 패널을 확대해 보여주며 Model 식별자, Confidence Mode, Custom Confidence 필드에 inputs.det_confidence가 연결된 것을 볼 수 있다. 이 스크린샷은 낮은 신뢰도로 후보를 통과시키고 후처리로 여과하는 detect-low-then-filter-later 전략의 구현 디테일을 직접 확인하게 해준다. 또한 워크플로 블록 간 필드 매핑 방식이 명확하다.
검출기 블록의 추가 속성 패널과 커스텀 신뢰도 입력 화면

tracker 블록의 필드 패널에 Minimum IoU Threshold, Minimum Consecutive Frames, Lost Track Buffer 값이 표시되어 트랙 유지와 ID 관리 방식이 드러난다. 왼쪽 Additional Properties에 Track Activation Threshold가 inputs.track_activation_threshold로 연결된 점은 검출 신뢰도 기준으로 트랙 활성화를 조절하는 설계를 보여준다. 이 정보는 트래커 튜닝과 거짓 양성 제어에 직접적으로 활용된다.
ByteTrack 트래커 블록의 속성 화면과 트랙 관련 임계값들

assessor 블록이 Gemini로 표기된 워크플로 화면으로, Gemini가 구조화된 응답 스키마로 손상 속성과 false_positive 여부를 반환하고 JSON Parser가 이를 Outputs로 연결하는 흐름을 보여준다. 이 이미지는 LLM 기반 보강 단계가 증거 기반 판정을 위해 어떻게 구조화되어 있는지를 명확히 한다. Gemini 결과가 파싱되어 차량 정보·평가에 반영되는 전체 루프를 시각적으로 확인할 수 있다.
입력 이미지→Gemini 평가자→JSON Parser→Outputs로 이어지는 보강 워크플로 스크린샷
용어 해설
- 시차 기반 필터(Parallax Filter)
- — 카메라가 차량을 따라 이동할 때 패널 표면 위의 물리적 손상과 반사광의 움직임을 구분하기 위해 추적된 박스 주변의 특징점을 추출하고 광류 및 호모그래피로 예측 이동 위치와 실제 트랙 위치의 잔차를 계산하는 절차로, 잔차가 작으면 고정된 손상으로 간주하고 크면 반사로 배제한다. 구현은 트랙별로 패치의 특징점 링을 추출하고 연속 프레임 간 optical flow와 homography로 이동을 예측한 뒤 잔차 임계값과 비교하는 방식으로 작동한다. 글에서 제시한 테스트 수치로는 실제 덴트 잔차 0.002–0.005, 거부선 0.015가 있었다.
- 인증된 비디오 타임스탬프(Authenticated Video Timestamping)
- — 업로드 시작 전에 비디오의 해시를 계산해 독립 타임스탬프 기관에 전송하고 업로드된 파일이 동일한 해시와 일치하는지를 서버에서 검증해 증거 연쇄를 만드는 방식으로, 타임스탬프는 비디오가 특정 시각에 존재했음을 외부에서 검증 가능하게 만든다. 본 파이프라인은 업로드 시작 전에 약 백 바이트의 지문만 타임스탬프 기관에 보내고, 이후 청크 업로드 완료 시 서버가 파일 해시와 대조해 일치 여부를 확인한다. 최종 보고서 PDF에도 별도 타임스탬프 토큰을 추가해 비디오 존재 시각과 보고서 생성 시각을 분리해 기록한다.
- 재개 가능한 청크 업로드(Resumable Chunk Upload)
- — 대용량 비디오를 작은 청크로 나누어 순차적으로 업로드하고 네트워크 중단 시 중단된 지점부터 재개하도록 설계된 전송 방식으로, 서버는 각 청크를 받아 전체 파일의 무결성을 해시로 확인해 원본과 일치하는지 판정한다. 글에서는 클라이언트가 해시와 타임스탬프를 미리 등록한 뒤 청크 업로드를 시작해 서버가 마지막에 동일한 해시를 확인한다고 명시되어 있다. 이 구조는 모바일 네트워크 환경에서 전송 실패 리스크를 줄이고 업로드 인증을 가능하게 한다.
- ECDSA P-256 전자서명(ECDSA P-256)
- — 완성된 보고서를 전자서명하기 위해 ECDSA P-256 곡선을 이용한 공개키 기반 서명 방식을 적용해 PDF 위변조를 방지하고 서명 유효성을 브라우저에서 검증할 수 있게 하는 보안 절차로, 서명과 별도의 타임스탬프 토큰을 함께 보관해 증거 연쇄를 완성한다. 글에서는 openssl 커맨드 한 줄로 서명키를 만들 수 있다고 안내하며, 브라우저 상의 공개 검증 페이지가 보고서 무결성과 타임스탬프를 재확인한다고 적혀 있다. 이 방식은 서버가 아닌 독립 검증자가 PDF와 타임스탬프 체인을 검사하도록 허용한다.
코드 예제
pipeline = InferencePipeline.init_with_workflow(
video_reference=str(video),
workflow_specification=spec,
on_prediction=sink,
workflows_parameters={"det_confidence": 0.2},
)동영상에서 사용자 정의 Python 블록을 포함한 워크플로를 서버리스 대신 로컬 프로세스에서 실행할 때 사용하는 초기화 호출이다. video_reference로 분석할 영상 경로를 넘기고 workflow_specification에 워크플로 정의를 전달하며 on_prediction 콜백으로 결과를 수집한다. det_confidence 파라미터로 워크플로 내부의 검출기 임계값을 주입해 낮은 신뢰도로 모든 후보를 통과시킨 뒤 후처리로 여과하는 전략을 구현한다.
근거 모음
- 모델 훈련 성능으로 mAP50 69.8과 리콜 65.5를 얻었다. — 본문의 'My model achieved a 69.8 mAP50 with 65.5 recall.' 문장과 train 섹션 출처
- ParallaxFilter 테스트에서 실제 덴트 잔차는 프레임 대각선 대비 0.002–0.005였고 거부선은 0.015로 설정했다. — 패럴랙스 필터 설명 부분의 잔차 수치(0.002–0.005)와 거부선(0.015) 출처
- 동영상 업로드 지문은 업로드 시작 전에 약 100바이트로 타임스탬프되어 전송된다. — 업로드 흐름 설명에서 'about a hundred bytes'로 지문을 타임스탬프한다고 명시된 문장 출처
- 커스텀 Python 블록을 포함한 워크플로는 Roboflow의 서버리스 API에서 실행되지 않아 InferencePipeline으로 로컬(in-process) 실행해야 한다. — Custom Python blocks don't run on the serverless API 문단과 InferencePipeline.init_with_workflow 코드 스니펫 출처
- 분석은 M-series 노트북에서 GPU 가속으로 1080p 영상 10초당 약 2분이 소요된다. — 비용/실행 시간 단락의 'about two minutes per ten seconds of 1080p footage on an M-series laptop, GPU-accelerated' 문장 출처
기술
- RF-DETR-small
- ByteTrack
- Google Gemini
- Roboflow Workflows
- InferencePipeline
- ECDSA P-256
- Next.js
- Python 3.12
활용 사례
- 렌터카 반환 시점의 손상 증거 수집 및 인증
- 보험 청구에 대한 자동화된 전자 증거 제공
- 차량 대여사·플릿 관리의 입출고 손상 기록 자동화
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.