Add margin check to multi-ref matching to reduce false positives
The multi-ref matching method was missing a margin check against other logos, causing excessive false positives. This fix adds: - margin parameter to find_best_match_multi_ref() that requires the best logo's score to exceed the second-best by a minimum margin - Test script now passes --margin to both matching methods - Updated documentation to reflect margin applies to both methods Also adds run_comparison_tests.sh to run all three matching methods and compare results.
This commit is contained in:
@ -40,12 +40,7 @@ The system uses a two-stage pipeline:
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| `--matching-method` | margin | Matching method: `margin` or `multi-ref` |
|
||||
|
||||
#### Margin Method Parameters (when `--matching-method margin`)
|
||||
|
||||
| Parameter | Default | Description |
|
||||
|-----------|---------|-------------|
|
||||
| `--margin` | 0.05 | Required margin between best and second-best match |
|
||||
| `--margin` | 0.05 | Required margin between best and second-best match (applies to both methods) |
|
||||
|
||||
#### Multi-Ref Method Parameters (when `--matching-method multi-ref`)
|
||||
|
||||
@ -275,8 +270,8 @@ Matched Logo Labels
|
||||
|
||||
| Goal | Adjustments |
|
||||
|------|-------------|
|
||||
| **Reduce false positives** | Increase `--threshold`, increase `--min-matching-refs`, use mean similarity |
|
||||
| **Reduce false negatives** | Decrease `--threshold`, decrease `--min-matching-refs`, use `--use-max-similarity` |
|
||||
| **Reduce false positives** | Increase `--threshold`, increase `--margin`, increase `--min-matching-refs`, use mean similarity |
|
||||
| **Reduce false negatives** | Decrease `--threshold`, decrease `--margin`, decrease `--min-matching-refs`, use `--use-max-similarity` |
|
||||
|
||||
### General Tuning
|
||||
|
||||
@ -295,13 +290,13 @@ Matched Logo Labels
|
||||
# Default margin-based matching
|
||||
python test_logo_detection.py -n 20 --threshold 0.75 --margin 0.05
|
||||
|
||||
# Multi-ref matching with mean similarity
|
||||
# Multi-ref matching with margin (recommended for reducing false positives)
|
||||
python test_logo_detection.py -n 20 --matching-method multi-ref \
|
||||
--refs-per-logo 5 --min-matching-refs 2 --threshold 0.70
|
||||
--refs-per-logo 5 --min-matching-refs 2 --threshold 0.70 --margin 0.05
|
||||
|
||||
# Multi-ref matching with max similarity (more lenient)
|
||||
python test_logo_detection.py -n 20 --matching-method multi-ref \
|
||||
--refs-per-logo 5 --min-matching-refs 1 --use-max-similarity
|
||||
--refs-per-logo 5 --min-matching-refs 1 --use-max-similarity --margin 0.03
|
||||
|
||||
# Reproducible test with seed
|
||||
python test_logo_detection.py -n 50 --seed 42 --clear-cache
|
||||
|
||||
Reference in New Issue
Block a user