Cat Re-ID — 구현 계획 및 아키텍처
1단계(Zero-shot KNN) 및 1.5단계(Last-layer Fine-tuning) 완료 시점 기준, 2단계 Object Detection 결합 수행을 위한 구현 계획서.
2단계 개요 및 목표
목표
- 입력 영상에서 고양이를 자동으로 탐지하고, 탐지된 개체 단위로 Re-ID를 수행하는 End-to-End 파이프라인 구축
전체 데이터 흐름
카메라 영상 (실시간 입력)
↓
YOLOv8: 고양이 클래스 탐지 및 BBox 추출
↓
BBox 기반 Crop 이미지 생성
↓
MegaDescriptor: 임베딩(Feature) 추출
↓
KNN/FAISS: DB 매칭 및 신원 판별
↓
화면 내 BBox 영역 상단에 개체 이름 및 유사도 오버레이 표시

성공 기준
- 탐지 및 Re-ID 통합 파이프라인 실시간 동작 속도 50 FPS 이상 확보 (GPU 환경 기준)
- 프레임 내 다중 개체(3마리 이상) 동시 처리 성능 보장
- 유사도가 설정 임계값 미만인 경우 “Unknown”으로 자동 처리
스프린트별 작업 계획
Sprint 1 — YOLOv8 고양이 탐지 셋업
- 목표: 단일 프레임 내 고양이 BBox 정상 검출 및 추출
- 작업 내용:
- COCO Pretrained YOLOv8 모델 로드 및 Cat 클래스(Class ID 15) 탐지 무결성 검증
- 수집된 고양이 영상 환경에서의 탐지 거동 분석
reid/models/yolo/패키지 내 탐지 어댑터 및 Predictor 설계
- 유의사항:
- COCO 가중치 모델에 기본 포함된 고양이 클래스를 우선 활용하고, 성능 부족 시 추가 학습 검토
- 신뢰도(Confidence) 임계값 기본 설정을 0.3~0.5 범위로 테스트 및 최적화
Sprint 2 — YOLO 및 MegaDescriptor 파이프라인 연동
- 목표: 단일 이미지 입력 기준 탐지 → Crop → Re-ID 판별 수행 End-to-End 동작 확인
- 작업 내용:
- YOLO 탐지 BBox 영역 Crop 처리 및 전처리 로직 연결
- Crop 이미지를 Extractor 모델 입력으로 전달하여 임베딩 추출
- 추출된 임베딩을 KNN/FAISS 매칭 라이브러리에 연동하여 신원 검증
- 단일 이미지 실행 테스트 프로그램 작성
- 유의사항:
- Crop 영역의 크기가 너무 작은 경우 업샘플링 처리 유무 검토
- 정확도 향상을 위해 BBox 상하좌우 여백(Padding) 비율 적용 및 튜닝
Sprint 3 — 실시간 스트림 처리 및 다중 개체 대응
- 목표: 실시간 스트림 환경 5 FPS 이상 성능 달성 및 다중 개체 동시 식별
- 작업 내용:
- 프레임 캡처, 파이프라인 추론, 오버레이 렌더링 루프를 포함하는 예측 스트림 서비스 구현
- OpenCV 활용 BBox 및 개체 식별 정보 화면 오버레이 기능 작성
- 임계값 튜닝 및 Unknown 예외 처리
- 추가 작업 (성능 부족 시):
- ByteTrack 연동 수행. 추적 ID 기반 Re-ID 연산 주기 제어 및 식별 결과 캐싱 적용
Sprint 4 — 프로파일링 및 최적화
- 목표: 파이프라인 최적화 요소 도출 및 전체 시스템 안정화
- 작업 내용:
- 모듈별 소요 시간 측정 및 병목 구간 식별 (YOLO vs Extractor vs Matcher)
- 엣지 디바이스 구동 목적의 ONNX 변환 및 가속 백엔드(TensorRT) 검증
전체 일정 계획
| Sprint | 작업 내용 |
|---|---|
| Sprint 1 | YOLOv8 탐지기 셋업 |
| Sprint 2 | 파이프라인 연동 및 검증 |
| Sprint 3 | 실시간 스트림 및 다중 개체 대응 |
| Sprint 4 | 최적화 및 최종 평가 |
프로젝트 아키텍처
- 설계 방향: 1단계 레이어 기반 구조에서 기능(Feature) 기반 구조로 전환하여 각 구성요소가 독립적으로 실행 및 검증 가능한 형태 지향
reid/
├── core/ # 공유 타입 및 설정 정의
│ ├── types.py # BBox, MatchResult 등 데이터 구조 정의
│ └── config.py # 통합 Config 파서 구현
├── models/ # 구체 모델 및 알고리즘 어댑터
│ ├── yolo/ # YOLO 기반 고양이 탐지기
│ ├── extractor/ # MegaDescriptor 특징 추출기
│ └── matcher/ # KNN / FAISS 데이터베이스 매칭
├── engine/ # 학습/추론 공통 실행 흐름 (Template)
├── stream/ # 카메라/비디오/이미지 입출력 처리 및 오버레이
├── utils/ # 환경 체크 및 공통 로깅 유틸
├── pipeline.py # 검출기, 특징 추출기, 매칭기 통합 파이프라인
├── container.py # 의존성 조립 및 객체 팩토리
└── cli.py # CLI 명령 처리 및 진입점
아키텍처 설계
설계 패턴
- Strategy Pattern: 각 모델 인터페이스를 추상화(Abstract Base Class)하여 내부 구현(PyTorch, ONNX, TensorRT 등) 교체 시 상위 로직 변경 불필요
- Factory Pattern:
container.py가 설정을 바탕으로 최적의 구현체를 자동 인스턴스화하고 파이프라인 조립 수행
의존성 방향 규칙
- 모든 의존성은 외부에서 내부(Core, Engine) 방향으로만 참조
- 모델 구체 클래스는 비즈니스 시나리오를 정의하는 파이프라인 클래스를 참조하지 않음
유의사항 및 리스크
- Crop 품질 영향도:
- 검출된 BBox 영역 크기가 50 px 이하로 지나치게 작은 경우 Re-ID 임베딩 신뢰도가 감소하므로 최소 해상도 필터링 필요
- BBox 영역 밖의 배경 노이즈가 유입되지 않도록 적절한 Padding 비율 적용 필요
- 탐지-인식 Trade-off:
- 탐지 신뢰도(Confidence) 임계값이 너무 낮으면 오탐률이 올라가 Re-ID 연산 낭비 발생. 실제 운영 환경에 맞춰 세밀한 파라미터 튜닝 요구
- ByteTrack 연동:
- ID가 튀거나 흔들리는 현상 방지 및 연산 가속을 위해 트래커 연동 및 식별 결과 캐싱 도입 필요
C
Contents
