Проверил обобщение на незнакомые формы: каталог модель не выучила

This commit is contained in:
Данил Омелечко 2026-09-22 16:13:43 +03:00
parent 852af35873
commit d76c99eb60

View file

@ -1690,3 +1690,60 @@ P@150 0.32), а на всём, что меньше, — заметно хуже:
Что не смягчает ничего: на приватном тесте будет другая линия, и сами пороги Что не смягчает ничего: на приватном тесте будет другая линия, и сами пороги
там могут оказаться не оптимальными. Поэтому все они вынесены в `Params` там могут оказаться не оптимальными. Поэтому все они вынесены в `Params`
одним местом и меняются без правки кода. одним местом и меняются без правки кода.
---
## 14. Обобщение на форму, которой не было в обучении
На приватном тесте почти наверняка окажется предмет, которого нет в нашем
каталоге из девяти форм. Вопрос, выучило ли считывание **геометрию предмета**
или шесть конкретных силуэтов, решается замером: обучить без одного класса и
проверить на нём.
Из обучающей выборки выбрасываются только **предметы** этого вида; вся
обстановка остаётся. Проверка — на предметах этого вида против всей
обстановки.
| предмет | кандидатов | AUC, класс в обучении | AUC, класс исключён | потеря |
|---|---:|---:|---:|---:|
| бутылка | 312 | 0.999 | 0.984 | −0.016 |
| ведро | 2 091 | 0.999 | 0.997 | −0.002 |
| человек сидя | 4 479 | 0.996 | 0.993 | −0.003 |
| человек стоя | 5 668 | 0.993 | **0.965** | −0.028 |
| чемодан | 3 529 | 0.995 | 0.993 | −0.002 |
| ящик | 4 071 | 0.997 | 0.994 | −0.002 |
Потеря не превышает **0.028 AUC**, а обычно составляет 0.002–0.003.
Считывание опирается не на каталог, а на общую геометрию: предмет целиком
помещается в габарит, компактен вдоль пути, стоит на полотне и не тянется
дальше, как лоток или стена.
**Что это НЕ доказывает.** Все шесть форм собраны из одних примитивов
(параллелепипед, цилиндр, шар) и ставятся одинаково — на путь, вертикально,
без наклона. Это устойчивость внутри семейства компактных предметов на пути,
а не к чему угодно. Каска, камень и кабель в таблицу не попали: они дают
меньше двух лучей и кандидатов не образуют вовсе — об этом п. 9.
### 14.1. Почему не стали добавлять случайные формы
В [SynRailObs](https://arxiv.org/abs/2505.10784) — синтетическом датасете
препятствий для железной дороги — ровно эта проблема решается иначе: авторы
генерируют случайные полигоны, заливают их случайными текстурами и учат
отдельный класс «неизвестное препятствие». Приём напрашивался и у нас:
добавить в каталог составные тела случайных пропорций.
Замер выше показал, что это не нужно: привязки к каталогу нет, и добавлять
формы было бы решением несуществующей задачи. Полтора часа работы сэкономлены
одним прогоном на двадцать минут.
Попутно та же статья даёт точку сравнения по дальности. Их детекторы
(YOLOv5-m, nanodet, Faster-RCNN, RT-DETR), обученные с учителем на специально
сделанном датасете, на **открытом пути** дают mAP 72/69/62/52/44 на полосах
0–15, 15–30, 30–45, 45–60 и 60–75 м, и собственный вывод авторов — надёжная
работа в диапазоне **0–45 м**; на 70 м препятствие занимает меньше 20
пикселей. Сравнивать напрямую нельзя (mAP — не наша вероятность обнаружения в
кадре, открытый путь — не тоннель), но масштаб заявлений в поле понятен.
И отдельно: о ложных тревогах в той работе не сказано **ничего** — ни одного
упоминания false positive или false alarm. У нас они измерены на двух сценах
и выражены в треках на километр пути.