3.8 KiB
Configuration
Three layers: environment file → zone polygons → tracker/counter tuning.
Template: .env.example. Production values live in .env (git-ignored).
1. .env (production keys — predict.py / counter_dashboard.py)
| Key | Default | Meaning |
|---|---|---|
OUTPUT_DIR |
/opt/jetson-counter |
Base dir for DB + state files |
DB_PATH |
$OUTPUT_DIR/jetson_counter.db |
SQLite batches/daily summaries |
STATE_FILE |
$OUTPUT_DIR/current_batch.json |
Live batch state (recovered on restart) |
BATCH_MODE_FILE |
$OUTPUT_DIR/batch_mode.json |
Manual vs auto batch mode |
LIVE_STREAM_FRAME_PATH |
/dev/shm/jetson-counter/live_frame.jpg |
Latest annotated frame (RAM disk, dashboard MJPEG reads this) |
CAMERA_NAME |
CC1 |
Camera tag stored per batch |
OBJECT_LABEL |
karung-pakan |
Object tag stored per batch |
DAILY_CUTOFF_TIME |
06:00 |
Counting-day boundary (get_counting_date) |
SECRET_KEY |
— | Flask session key (change in production) |
DASHBOARD_HOST / DASHBOARD_PORT |
0.0.0.0 / 5000 |
Dashboard bind |
OFFICE_PORT |
5721 |
Second dashboard port |
FLASK_DEBUG |
false |
Flask debug |
RTSP_URL |
— | Camera stream URL |
MODEL_PATH |
auto (models/v4-best.engine > .pt > v4-best (1).pt > models/model_karung_truk.engine > .pt) |
Override combined-model weights (predict.py) |
MODEL_MODE |
B |
Model pipeline mode A/B/C/D (see models/README.md); also settable via --model-mode or dashboard (applies on restart) |
BATCH_MERGE_THRESHOLD_SECONDS |
300 |
Merge window for adjacent batches |
On Windows dev machines these resolve to d:/Belajar/menghitung karung/....
2. src/config.py keys (v3 src/main.py --env)
⚠️ Different names from the table above — the v3 loader uses its own keys:
| Key | Default |
|---|---|
LOCAL_RTSP / JETSON_RTSP |
"" |
MODEL_SACK_PATH / MODEL_TRUCK_PATH |
./models/best.engine, ./models/truck-detector.engine |
COUNTING_LINE_Y / _X_START / _X_END |
0.60 / 0.38 / 0.72 (fractions; initial line before ROI sync) |
SACK_CONF_THRESHOLD / TRUCK_CONF_THRESHOLD |
0.40 / 0.50 |
BATCH_TIMEOUT_SECONDS |
30 |
CSV_OUTPUT_DIR |
./output |
DATA_SEED |
42 |
CLI: python -m src.main --source video.mp4 --env .env.
3. zones.json (calibrated polygons, 1920×1080 reference)
palet/truck/counting— zone polygons (override the hardcoded defaults inpredict_new.py:429-437); scaled to actual resolution at startup.left_limit/right_limit(0.27578/0.72578) — counting X band.duplicate_circle_radius/jarak_toleransi_duplikat— spatial anti-double-count.min_valid_area(15000) — perspective-area floor for valid sacks.max_reid_transit_distance(400),circle_stay_timeout_sec(10.0).inference_stride(2),confirm_delay_sec(0.5),exit_confirm_delay_sec(6.0).external_stream_url— MediaMTX restream endpoint.
Recalibrate with get_coordinates.py / get_calib_frame.py (calib_frame.jpg).
4. cfg/tracker.yaml (FastTrack/ByteTrack tuning)
track_buffer=60 (~2.4 s lost-track hold for worker occlusion), new_track_thresh=0.30
(anti-duplicate IDs), track_high/low_thresh=0.20/0.05, match_thresh=0.85,
active_occ_to_lost_thresh=15, occ_reappear_window=60, enlarge_bbox_occ=1.15,
occ_cover_thresh=0.6, Kalman offsets + init_iou_suppress=0.65.
Falls back to stock bytetrack.yaml if the file is missing (src/tracking.py:39).
5. rpo_iki/configs/ (alternate engine)
area_truk*.json (per-camera truck areas), cameras.json (cam1/cam2 RTSP),
counting_params.json (+ counting_params_last_truck.json, hot-reloaded by
count.py), model_registry.json (pinned model + metrics), telegram.json
(notification settings).