vision model
This commit is contained in:
61
vision_classifier/README.md
Normal file
61
vision_classifier/README.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Vision Classifier — трек 3 (RealSense D415 на Orange PI)
|
||||
|
||||
## Правила ТЗ (фиксированные)
|
||||
|
||||
1. Габариты строго `>10×10×10` и `<450×320×320` мм → иначе **C**
|
||||
2. Иначе если `r_in/r_out ≥ 0.8` (вид сверху **или** ≥2 поперечных среза) → **D**
|
||||
3. Иначе → **B**
|
||||
|
||||
Стабилизация: медиана 12 кадров + голосование ≥2/3 окна → **LOCK**.
|
||||
После LOCK зона не меняется, пока объект не убрали. Без «достройки» круга на коробках.
|
||||
|
||||
**Пограничные случаи:** если консенсуса нет `uncertain_after_frames` кадров
|
||||
(ratio у порога 0.8, сторона у лимита 450/320) — товар помечается **«неуверенно»**
|
||||
и уходит в безопасную зону (`uncertain_fallback_zone: C`), а не в основной поток.
|
||||
Все LOCK-решения пишутся в `logs/decisions.jsonl` (метрики для отчёта: зоны,
|
||||
габариты, ratio, доля неуверенных).
|
||||
|
||||
## Калибровка (обязательно перед замером габаритов!)
|
||||
|
||||
Габариты считаются через фокусное `fx/fy`. Дефолт `670` — расчёт по спецификации
|
||||
D415 @ 640×480 (старое значение 430 завышало размеры в ~1.56 раза). Уточнить под
|
||||
свою камеру по коробке известного размера (рулеткой, высота коробки ≥ 30 мм):
|
||||
|
||||
```bash
|
||||
.venv/bin/python calibrate.py --length 300 --width 200
|
||||
```
|
||||
|
||||
Скрипт сам замерит высоту ленты и запишет `fx/fy` + `belt_distance_mm` в `config.yaml`.
|
||||
|
||||
## Фоновая карта глубины
|
||||
|
||||
Сегментация умеет работать относительно карты фона (а не одной высоты):
|
||||
товар не сливается с платформой/бортами накопителя, а предмет, лежащий
|
||||
на другом предмете, выделяется отдельно.
|
||||
|
||||
- `main.py`: `use_background_map: true` в конфиге — карта снимается при старте
|
||||
(лента должна быть **пустой**);
|
||||
- `demo.py`: кнопка **«Авто-высота»** снимает карту фона (уберите объекты);
|
||||
ручное движение ползунка высоты сбрасывает карту.
|
||||
|
||||
## Демо
|
||||
|
||||
```bash
|
||||
cd vision_classifier
|
||||
./demo.sh
|
||||
```
|
||||
|
||||
Браузер: **http://127.0.0.1:8080/** (Ctrl+F5 после перезапуска)
|
||||
|
||||
Ползунки сверху: высота ленты, уверенность, мин. высота, порог круга, площадь.
|
||||
**Авто-высота** — калибровка по пустой ленте. Выход: `Ctrl+C`.
|
||||
|
||||
Проверка без камеры:
|
||||
|
||||
```bash
|
||||
.venv/bin/python test_classify.py
|
||||
.venv/bin/python test_geometry.py
|
||||
```
|
||||
|
||||
**Полный запуск / стоп:** [START.md](START.md)
|
||||
Боевой режим (MQTT + шаговик + серво): [INTEGRATION.md](INTEGRATION.md)
|
||||
Reference in New Issue
Block a user