aparsoft/yolo-streamlit-detection-tracking

YOLO Vision Studio: a free, open-source Streamlit app for detection, segmentation, pose, text prompts (YOLO World, YOLOE) and tracking with honest counts. Built on Ultralytics YOLO26.

🔬 YOLO Vision Studio – Ultralytics YOLO용 Streamlit UI

무엇인가요 – Streamlit으로 구축된 무료 오픈소스 웹 앱입니다. 이미지나 비디오 스트림에서 최신 YOLO 모델을 실행하고 실시간으로 결과를 확인할 수 있습니다. 객체 탐지, 인스턴스 세그멘테이션, 자세 추정, 텍스트 기반 객체 쿼리(YOLO World), 여러 현대적 트래커를 사용한 다중 객체 추적을 지원합니다.

왜 중요한가요 – 비디오 전체에서 다른 객체를 세는 것은 어렵습니다. 사람(또는 차량)이 사라졌다가 다시 나타나기 때문입니다. 이 앱은 각 프레임에 두 가지 수치를 표시합니다:

  • 프레임 내 – 현재 탐지기가 보는 것.
  • 지나간 / 추적된 – 최소 5프레임 이상 확인된 고유 ID로, 정직한 총합을 제공합니다. 또한 차운(churn) 메트릭을 표시하여 트랙이 얼마나 자주 끊기는지 알려줍니다.

주요 기능

기능 세부 사항
모델 Ultralytics YOLO-v8-26(nano → xlarge), YOLO-E, YOLO World v2, RT-DETR. 자동 가중치 다운로드.
작업 객체 탐지, 인스턴스 세그멘테이션, 자세 키포인트, 텍스트 프롬프트 기반 "입력한 것을 찾기".
추적 네 가지 내장 트래커 – ByteTrack, BoT-SORT, Deep OC-SORT, TrackTrack – 및 선택적 외형 ReID.
소스 로컬 비디오 파일, 웹캠(브라우저), RTSP 스트림, YouTube URL.
라이브 UI 사이드바에서 모드, 모델, 신뢰도, 클래스 필터, 프레임 스킵 요인, 트래커 설정을 선택 가능.
카운트 및 메트릭 클래스별 카운트, ID 발급 수 대비 확인된 트랙, 차운, 비디오 종료 후 요약 테이블.
다중 비디오 여러 비디오를 병렬로 표시 가능하며, 각각에 독립적인 트래커를 할당 가능.
배포 가능 로컬 또는 Streamlit Cloud(CPU만)에서 작동 가능.

빠른 시작 (Python 3.10+ 필요)

# 리포지토리 클론 및 진입
git clone https://github.com/aparsoft/yolo-streamlit-detection-tracking.git
cd yolo-streamlit-detection-tracking

# 추천: uv (빠르고 lock 파일 인식)
uv sync                     # 정확한 종속성으로 .venv 생성
uv run python scripts/get_sample_videos.py   # 선택적 샘플 클립 다운로드
uv run streamlit run app.py   # http://localhost:8501 열림

또는 pip으로:

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt   # 또는 exact 버전용 requirements-lock.txt
python scripts/get_sample_videos.py   # 선택적
streamlit run app.py

첫 실행 시 weights/에 필요한 YOLO 가중치가 다운로드됩니다.

사용 방법

  1. 사이드바에서 이미지 또는 비디오 모드 선택.
  2. 소스(파일, 웹캠, RTSP, YouTube) 선택.
  3. 모델 선택(nano는 속도, xlarge는 정확도) 및 신뢰도 임계값 설정.
  4. (비디오) 트래커 선택 및 ReID 옵션 활성화.
  5. 검출 버튼 클릭 – 프레임 스트림에 경계 상자, 마스크, 스켈레톤 또는 강조된 프롬프트가 표시되며 실시간 카운트도 제공.
  6. ⏹ 정지 버튼으로 조기 종료 가능. 비디오 종료 시 추적 요약이 표시됨.

설정 – 모든 기본값은 config.py에 저장됨(신뢰도, 최소 트랙 히트 수, 표시 크기 등). 커스텀 .pt 모델을 추가하려면 weights/에 파일을 넣고 config.py에 등록하기만 하면 됩니다.

프로젝트 구조

app.py                # Streamlit 진입점, UI 라우팅
config.py             # 모델 카탈로그, 기본 설정
model_loader.py       # 세션별 모델 캐시
image_service.py      # 이미지 업로드 및 추론 처리
video_service.py      # 비디오 소스 처리, 추적, 오버레이
scripts/get_sample_videos.py
docs/ (플레이그라운드 노트북, 메모)
assets/ (README 이미지)
weights/ (다운로드된 모델 파일)

라이선스 – 앱 코드는 Apache-2.0; 모델 가중치는 Ultralytics의 AGPL-3.0(상용 사용 시 Enterprise 라이선스 필요).

누구에게 어울릴까 – 코드를 작성하지 않고도 YOLO 탐지, 세그멘테이션, 자세, 추적을 실험하고 싶은 연구자나 애호가; 감시, 소매점 방문자 분석, 또는 어떤 동영상 기반 카운팅 작업을 위한 빠른 데모가 필요한 개발자.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트