init: project skeleton with pyproject.toml, config, tracker.yaml, README
This commit is contained in:
1 parent
43a959d0b0
commit
7fb017488c
7 files changed
+124
No files matched your search
@@ -0,0 +1,13 @@
|
||||
# Video processing
|
||||
UPLOAD_DIR=./uploads
|
||||
OUTPUT_DIR=./output
|
||||
MODELS_DIR=./models
|
||||
|
||||
# Web UI
|
||||
WEB_HOST=0.0.0.0
|
||||
WEB_PORT=9000
|
||||
SECRET_KEY=change-me
|
||||
|
||||
# Detection defaults
|
||||
SACK_CONF=0.4
|
||||
TRUCK_CONF=0.5
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*.so
|
||||
env/
|
||||
venv/
|
||||
.venv/
|
||||
|
||||
# Environment & state
|
||||
.env
|
||||
*.db
|
||||
|
||||
# Media & outputs (gitignored per global constraints)
|
||||
*.mp4
|
||||
*.avi
|
||||
*.mkv
|
||||
*.jpg
|
||||
*.jpeg
|
||||
*.png
|
||||
output/
|
||||
uploads/
|
||||
|
||||
# TensorRT engines are Jetson build artifacts — rebuildable
|
||||
*.engine
|
||||
|
||||
# Model weights are reused from karung_counter_semarang and stay local
|
||||
models/
|
||||
|
||||
# Test artifacts
|
||||
.pytest_cache/
|
||||
.coverage
|
||||
|
||||
# IDE & OS
|
||||
.idea/
|
||||
.vscode/
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
@@ -0,0 +1,21 @@
|
||||
# Feedmill Recounter
|
||||
|
||||
AI video analysis tool for counting objects (sacks, boxes) in feedmill videos.
|
||||
Built on top of [karung_counter_semarang](https://git.proit.id/andrew/karung-counting-feedmill-semarang).
|
||||
|
||||
## Features
|
||||
|
||||
- **CLI**: Process videos from the command line with any model + class filter
|
||||
- **Web UI**: Upload videos, select models, download annotated output (port 9000)
|
||||
- **Multiple Models**: Run multiple model configurations on the same video for comparison
|
||||
- **Class Filtering**: Choose which classes to count (sack, box, truck)
|
||||
- **Annotated Output**: Download MP4 videos with detection overlays for human review
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
pip install -e ".[dev]"
|
||||
recounter --list-models --models-dir ./models
|
||||
recounter-web
|
||||
# Open http://localhost:9000
|
||||
```
|
||||
@@ -0,0 +1,26 @@
|
||||
# Custom FastTrack config tuned for sack counting:
|
||||
# - track_buffer=60: hold lost tracks for 60 frames (~2.4s at 25fps)
|
||||
# to survive worker occlusion
|
||||
# - new_track_thresh=0.3: harder to spawn duplicate IDs
|
||||
# - track_low_thresh=0.05: recover faint detections behind workers
|
||||
# - active_occ_to_lost_thresh=15: tolerate 15 occluded frames
|
||||
# - occ_reappear_window=60: re-find tracks after long occlusion
|
||||
# - enlarge_bbox_occ=1.15: widen search region during occlusion
|
||||
|
||||
tracker_type: bytetrack
|
||||
track_high_thresh: 0.20
|
||||
track_low_thresh: 0.05
|
||||
new_track_thresh: 0.30
|
||||
track_buffer: 60
|
||||
match_thresh: 0.85
|
||||
fuse_score: true
|
||||
|
||||
# Occlusion handling (FastTrack-specific)
|
||||
reset_velocity_offset_occ: 5
|
||||
reset_pos_offset_occ: 3
|
||||
enlarge_bbox_occ: 1.15
|
||||
dampen_motion_occ: 0.4
|
||||
active_occ_to_lost_thresh: 15
|
||||
occ_cover_thresh: 0.6
|
||||
occ_reappear_window: 60
|
||||
init_iou_suppress: 0.65
|
||||
@@ -0,0 +1,27 @@
|
||||
[build-system]
|
||||
requires = ["setuptools>=68.0"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "feedmill-recounter"
|
||||
version = "0.1.0"
|
||||
description = "AI video analysis tool for counting objects in feedmill videos"
|
||||
requires-python = ">=3.10"
|
||||
dependencies = [
|
||||
"ultralytics",
|
||||
"opencv-python",
|
||||
"numpy",
|
||||
"shapely",
|
||||
"flask",
|
||||
"python-dotenv",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = ["pytest"]
|
||||
|
||||
[project.scripts]
|
||||
recounter = "cli:main"
|
||||
recounter-web = "app:main"
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
testpaths = ["tests"]
|
||||
Whitespace-only changes.
Whitespace-only changes.
Reference in new issue
Block a user