тест масштаба вида мозга

This commit is contained in:
Данил Омелечко 2026-09-26 20:01:02 +03:00
parent e0999ad870
commit d7c9cca1c0
2 changed files with 27 additions and 1 deletions

View file

@ -97,7 +97,7 @@ flyguard/ ядро: стадии обработки, память, сч
export.py 3D-рамки, время до столкновения, маркеры RViz export.py 3D-рамки, время до столкновения, маркеры RViz
synth.py вставка предметов трассировкой лучей synth.py вставка предметов трассировкой лучей
tools/ обучение, оценка, разбор, полигон с аугментациями tools/ обучение, оценка, разбор, полигон с аугментациями
tests/ 52 теста, запускаются без данных и без ROS tests/ 53 теста, запускаются без данных и без ROS
docs/ методика и результаты docs/ методика и результаты
artifacts/ обученные модели artifacts/ обученные модели
``` ```

View file

@ -1079,3 +1079,29 @@ def test_gpu_failing_to_warm_up_leaves_cpu(monkeypatch):
assert "no kernel image" in fg.gpu_error assert "no kernel image" in fg.gpu_error
finally: finally:
reset_device_cache() reset_device_cache()
def test_brain_view_scales_for_high_resolution():
"""Мозг для экрана в 2×: вдвое больше по обеим осям, облако из атласа
своего размера, а в целом та же картинка, что у узла."""
cv2 = pytest.importorskip("cv2")
# в выгрузке для команды вида мозга нет — там тест пропускается
BrainHybrid = pytest.importorskip("flyguard.brain_hybrid").BrainHybrid
from flyguard.bag import Bag
from flyguard.pipeline import FlyGuard, Params
if not DATA.exists():
pytest.skip("нет записей")
one, two = BrainHybrid(), BrainHybrid(scale=2)
if not one.enabled:
pytest.skip("нет атласа нейронов")
fg = FlyGuard(Params(enable_looming=True))
a = b = None
for _, pc in Bag(next(p for p in DATA.iterdir() if p.is_dir())).frames(stop=20):
res = fg.process(pc, keep_debug=True)
if res is not None:
a, b = one.render(res), two.render(res)
assert a is not None
assert b.shape == (2 * a.shape[0], 2 * a.shape[1], 3)
small = cv2.resize(b, (a.shape[1], a.shape[0]), interpolation=cv2.INTER_AREA)
assert abs(float(small.mean()) - float(a.mean())) < 0.15 * float(a.mean())