Skip to content

jinbong-yeom/Test_Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

README.md

[Project] 특정속성 선별 카운팅 기능을 포함하는 피플 카운터

본 프로젝트는 지능형 영상 분석 기술을 활용하여 실시간으로 인물을 추적하고, 특정 외형 속성(성별, 머리색, 의상 색상, 액세서리 여부)을 정밀하게 판별하여 통계를 산출하는 Deep Learning 기반 피플 카운팅 시스템입니다.


정확성 (Accuracy)

  • Foundation Model 활용: 수십억 개의 이미지-텍스트 쌍을 학습한 OpenCLIP(ViT-g-14) 모델을 사용하여, 별도의 Fine-tuning 없이도 복잡한 환경에서 높은 Zero-shot 분류 정확도를 유지합니다.
  • 다중 프롬프트 보팅(Multiple Prompt Voting): 단일 단어가 아닌, 의미가 유사한 다수의 문장(Prompts)에 가중치를 부여해 투표하는 방식을 채택하여 오판 확률을 최소화했습니다.
  • EMA(지수 이동 평균) 필터링: 단일 프레임의 노이즈에 영향을 받지 않도록 10프레임 동안의 확률값을 **EMA()**로 보정하여 판별 안정성을 확보하고자 했습니다.

추론 속도 (Inference Speed)

  • Selective Analysis 전략: 모든 프레임에서 무거운 CLIP 모델을 구동하지 않고, 인물당 최초 10프레임(ANALYSIS_FRAME_COUNT) 동안만 집중 분석을 수행한 뒤 결과를 고정하여 연산 자원을 효율적으로 배분합니다.
  • IoU Overlap Filtering: 인물 간 겹침(Occlusion)이 심한 경우 분석에서 제외하거나 대기함으로써, 불필요한 중복 계산과 오분류를 방지합니다.

기능 (Functionality)

  • ByteTrack 기반: 객체 가려짐이나 일시적 소실 상황에서도 동일 인물에 대한 ID를 안정적으로 유지합니다.
  • 실시간 통계 대시보드: 분석된 속성을 실시간으로 카테고리별로 카운팅하여 시각화된 UI를 제공합니다.

특정 속성에 대한 구체적 정의 및 판별 로직

본 프로젝트는 분석의 정교함을 위해 속성을 다음과 같이 구체적으로 정의하고 분석 가중치를 설정하였습니다.

속성 카테고리 상세 정의 및 판단 기준 가중 보팅 프롬프트 예시
Gender 신체적 특징 및 전체적인 실루엣을 기반으로 남성과 여성을 구분 "a photo of a man"(1.2), "masculine features"(1.0)
Hair Color 인물의 상단 영역을 분석하여 **Jet Black(진한 검정)**과 그 외(갈색, 금색 등)를 구분 "jet black hair"(1.2), "dark black hair color"(1.0)
Clothing 상의 색상을 기준으로 **무채색(Achromatic: 검정, 흰색, 회색)**과 **유채색(Colorful)**을 구분 "monochrome outfit"(1.0), "vivid colorful clothes"(1.2)
Accessory 안경, 가방, 모자 등 인물이 소지한 부가적인 액세서리 유무를 감지 "carrying a bag or wearing glasses"(1.2)

분석 알고리즘 특이사항: 인물의 전신이 아닌 **상단 60% 영역(Crop)**을 집중 분석함으로써 하단부 지면 노이즈를 제거하고 성별 및 머리색 판별의 정확도를 높였습니다.


개발 환경 및 설치 방법

시스템 요구 사항

  • OS: Windows 10/11 또는 Linux
  • Python: 3.9 이상
  • GPU: NVIDIA GPU 권장 (CUDA 지원)

설치 단계

필수 라이브러리 설치:

pip install -r requirement.txt

(주요 패키지: ultralytics, open_clip_torch, opencv-python, torch)


구동 방법 (Usage)

  1. 설정 확인: src/config.pymain.py에서 분석할 영상의 경로 및 모델 설정값을 확인합니다.
# src/config.py
YOLO_MODEL_PATH = 'yolo26x.pt'
ANALYSIS_FRAME_COUNT = 10
입력영상 경로지정 
  1. 프로그램 실행:
python main.py
  1. 결과 확인: * 실행 시 실시간으로 영상 위에 인물 ID, 현재 상태(Scanning/Finalized Label)가 표시됩니다.
  • 우측 상단 대시보드에 누적 통계가 업데이트되며, 최종 결과는 output.mp4로 저장됩니다.

끝으로

먼저 면접과 테스트 기회 주셔서 감사합니다.

조건에 fit한 데이터셋은 찾지못해 성능이 좋다고 알려진 최신 모델을 기준으로 제작했습니다. 조건에 AI툴 자율이라 설명되있어. 자유롭게 사용하며 개발했습니다. 결과물 테스트는 웹상의 무작위 영상들과 AI hub에서 CCTV 영상을 따로 받아서 확인했습니다. 확인 결과 화면전환이 잦은 영상에는 취약한 모습이었고 대상의 크기가 일정하면 bytetrack.yaml파일의 파라미터와 모델 파라미터를 조정해서 좋은 성능을 끌어낼 수 있었습니다. 현재 세팅값은 CCTV기준으로 맞췄던 값입니다.

감사합니다.

작성자: [염진봉]

제출일: 2026. 01. 29.


About

Company Test Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages