Stabilization, short-track removal, and vehicle dimension estimation for 'geotrax extract'. The extract stage also consumes the 'ultralytics:' (YOLO detection) and 'tracker:' sections below; object-detection CUDA/GPU is set there via ultralytics -> device (default: auto, uses CUDA/GPU when available).
Generated from geotrax/cfg/default.yaml; every row below is a key of that file with its shipped default and its inline comment.
Detection model: a local file path OR an 'hf://<org>/<repo>/<path/to/file>.pt' reference (auto-downloaded & cached); default = the bundled geo-trax model
class_rename
null
--class-names
class-id → label override, e.g. {0: vehicle, 1: bus, 2: truck, 3: bike}; or a .yaml/.json path; null = model's own names
stabilize
true
Stabilize extracted bounding boxes; appends 4 columns (x_stab, y_stab, w_stab, h_stab) to results/video.txt
save_stab
true
Save per-frame stabilization homographies to results/video_vid_transf.txt
min_track_length
3
Discard tracks shorter than this many frames; [1, inf)
interpolate
false
--interpolate, --no-interpolate
Fill per-track frame gaps with linear interpolation; adds is_interpolated column to output
class_conf
null
--set class_conf='{2: 0.4}'
Per-class confidence thresholds, e.g. {1: 0.15, 2: 0.4}; unlisted classes keep ultralytics -> conf; null = one global threshold
Slicing Aided Hyper Inference: sliced detection for small objects (requires: python -m pip install 'geo-trax[sahi]'); ~10x the per-frame detection cost on 4K with the defaults below (3 x 3 slices plus a full-frame pass)
Key
Default
CLI
Description
enable
false
--sahi, --no-sahi
Run detection on overlapping frame slices and merge the results
slice_height
1080
Slice height [px]; default = half of a 4K frame height; [1, inf)
slice_width
1920
Slice width [px]; default = half of a 4K frame width; [1, inf)
overlap_height_ratio
0.2
Vertical overlap between adjacent slices, as a fraction of slice height; [0.0, 1.0)
overlap_width_ratio
0.2
Horizontal overlap between adjacent slices, as a fraction of slice width; [0.0, 1.0)
perform_standard_pred
true
Also run one full-frame prediction and merge it with the sliced detections (catches large objects)
postprocess_type
GREEDYNMM
Strategy for merging overlapping slice detections; choices: [GREEDYNMM, NMM, NMS]
postprocess_match_metric
IOS
Overlap metric used by the merge step; choices: [IOS, IOU]
postprocess_match_threshold
0.5
Overlap threshold above which two detections are merged; [0.0, 1.0]
class_agnostic
true
Merge overlapping detections across classes (mirrors ultralytics -> agnostic_nms)