✅ [Pass] Test for using anchor config in Vec2Box
Browse files
tests/conftest.py
CHANGED
|
@@ -67,7 +67,7 @@ def model(train_cfg: Config, device) -> YOLO:
|
|
| 67 |
|
| 68 |
@pytest.fixture(scope="session")
|
| 69 |
def vec2box(train_cfg: Config, model: YOLO, device) -> Vec2Box:
|
| 70 |
-
vec2box = Vec2Box(model, train_cfg.image_size, device)
|
| 71 |
return vec2box
|
| 72 |
|
| 73 |
|
|
|
|
| 67 |
|
| 68 |
@pytest.fixture(scope="session")
|
| 69 |
def vec2box(train_cfg: Config, model: YOLO, device) -> Vec2Box:
|
| 70 |
+
vec2box = Vec2Box(model, train_cfg.model.anchor, train_cfg.image_size, device)
|
| 71 |
return vec2box
|
| 72 |
|
| 73 |
|
tests/test_tools/test_data_loader.py
CHANGED
|
@@ -31,10 +31,10 @@ def test_training_data_loader_correctness(train_dataloader: YoloDataLoader):
|
|
| 31 |
assert batch_size == 2
|
| 32 |
assert images.shape == (2, 3, 640, 640)
|
| 33 |
assert reverse_tensors.shape == (2, 5)
|
| 34 |
-
expected_paths =
|
| 35 |
Path("tests/data/images/train/000000050725.jpg"),
|
| 36 |
Path("tests/data/images/train/000000167848.jpg"),
|
| 37 |
-
|
| 38 |
assert image_paths == expected_paths
|
| 39 |
|
| 40 |
|
|
@@ -44,12 +44,12 @@ def test_validation_data_loader_correctness(validation_dataloader: YoloDataLoade
|
|
| 44 |
assert images.shape == (4, 3, 640, 640)
|
| 45 |
assert targets.shape == (4, 18, 5)
|
| 46 |
assert reverse_tensors.shape == (4, 5)
|
| 47 |
-
expected_paths =
|
| 48 |
Path("tests/data/images/val/000000151480.jpg"),
|
| 49 |
Path("tests/data/images/val/000000284106.jpg"),
|
| 50 |
Path("tests/data/images/val/000000323571.jpg"),
|
| 51 |
Path("tests/data/images/val/000000570456.jpg"),
|
| 52 |
-
|
| 53 |
assert image_paths == expected_paths
|
| 54 |
|
| 55 |
|
|
|
|
| 31 |
assert batch_size == 2
|
| 32 |
assert images.shape == (2, 3, 640, 640)
|
| 33 |
assert reverse_tensors.shape == (2, 5)
|
| 34 |
+
expected_paths = [
|
| 35 |
Path("tests/data/images/train/000000050725.jpg"),
|
| 36 |
Path("tests/data/images/train/000000167848.jpg"),
|
| 37 |
+
]
|
| 38 |
assert image_paths == expected_paths
|
| 39 |
|
| 40 |
|
|
|
|
| 44 |
assert images.shape == (4, 3, 640, 640)
|
| 45 |
assert targets.shape == (4, 18, 5)
|
| 46 |
assert reverse_tensors.shape == (4, 5)
|
| 47 |
+
expected_paths = [
|
| 48 |
Path("tests/data/images/val/000000151480.jpg"),
|
| 49 |
Path("tests/data/images/val/000000284106.jpg"),
|
| 50 |
Path("tests/data/images/val/000000323571.jpg"),
|
| 51 |
Path("tests/data/images/val/000000570456.jpg"),
|
| 52 |
+
]
|
| 53 |
assert image_paths == expected_paths
|
| 54 |
|
| 55 |
|
tests/test_tools/test_loss_functions.py
CHANGED
|
@@ -31,7 +31,7 @@ def model(cfg: Config):
|
|
| 31 |
@pytest.fixture
|
| 32 |
def vec2box(cfg: Config, model):
|
| 33 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 34 |
-
return Vec2Box(model, cfg.image_size, device)
|
| 35 |
|
| 36 |
|
| 37 |
@pytest.fixture
|
|
|
|
| 31 |
@pytest.fixture
|
| 32 |
def vec2box(cfg: Config, model):
|
| 33 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 34 |
+
return Vec2Box(model, cfg.model.anchor, cfg.image_size, device)
|
| 35 |
|
| 36 |
|
| 37 |
@pytest.fixture
|
tests/test_utils/test_bounding_box_utils.py
CHANGED
|
@@ -4,7 +4,7 @@ from pathlib import Path
|
|
| 4 |
import pytest
|
| 5 |
import torch
|
| 6 |
from hydra import compose, initialize
|
| 7 |
-
from torch import
|
| 8 |
|
| 9 |
project_root = Path(__file__).resolve().parent.parent.parent
|
| 10 |
sys.path.append(str(project_root))
|
|
@@ -117,7 +117,7 @@ def test_vec2box_autoanchor():
|
|
| 117 |
cfg: Config = compose(config_name="config", overrides=["model=v9-m"])
|
| 118 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 119 |
model = create_model(cfg.model, weight_path=None).to(device)
|
| 120 |
-
vec2box = Vec2Box(model, cfg.image_size, device)
|
| 121 |
assert vec2box.strides == [8, 16, 32]
|
| 122 |
|
| 123 |
vec2box.update((320, 640))
|
|
|
|
| 4 |
import pytest
|
| 5 |
import torch
|
| 6 |
from hydra import compose, initialize
|
| 7 |
+
from torch import allclose, float32, isclose, tensor
|
| 8 |
|
| 9 |
project_root = Path(__file__).resolve().parent.parent.parent
|
| 10 |
sys.path.append(str(project_root))
|
|
|
|
| 117 |
cfg: Config = compose(config_name="config", overrides=["model=v9-m"])
|
| 118 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 119 |
model = create_model(cfg.model, weight_path=None).to(device)
|
| 120 |
+
vec2box = Vec2Box(model, cfg.model.anchor, cfg.image_size, device)
|
| 121 |
assert vec2box.strides == [8, 16, 32]
|
| 122 |
|
| 123 |
vec2box.update((320, 640))
|
yolo/lazy.py
CHANGED
|
@@ -27,7 +27,7 @@ def main(cfg: Config):
|
|
| 27 |
model = create_model(cfg.model, class_num=cfg.class_num, weight_path=cfg.weight)
|
| 28 |
model = model.to(device)
|
| 29 |
|
| 30 |
-
vec2box = Vec2Box(model, cfg.image_size, device)
|
| 31 |
if cfg.task.task == "train":
|
| 32 |
solver = ModelTrainer(cfg, model, vec2box, progress, device, use_ddp)
|
| 33 |
if cfg.task.task == "validation":
|
|
|
|
| 27 |
model = create_model(cfg.model, class_num=cfg.class_num, weight_path=cfg.weight)
|
| 28 |
model = model.to(device)
|
| 29 |
|
| 30 |
+
vec2box = Vec2Box(model, cfg.model.anchor, cfg.image_size, device)
|
| 31 |
if cfg.task.task == "train":
|
| 32 |
solver = ModelTrainer(cfg, model, vec2box, progress, device, use_ddp)
|
| 33 |
if cfg.task.task == "validation":
|
yolo/utils/bounding_box_utils.py
CHANGED
|
@@ -364,7 +364,7 @@ class Anc2Box:
|
|
| 364 |
return preds_cls, None, preds_box, preds_cnf.sigmoid()
|
| 365 |
|
| 366 |
|
| 367 |
-
def bbox_nms(cls_dist: Tensor, bbox: Tensor, nms_cfg: NMSConfig, confidence: Optional[Tensor]):
|
| 368 |
cls_dist = cls_dist.sigmoid() * (1 if confidence is None else confidence)
|
| 369 |
|
| 370 |
# filter class by confidence
|
|
|
|
| 364 |
return preds_cls, None, preds_box, preds_cnf.sigmoid()
|
| 365 |
|
| 366 |
|
| 367 |
+
def bbox_nms(cls_dist: Tensor, bbox: Tensor, nms_cfg: NMSConfig, confidence: Optional[Tensor] = None):
|
| 368 |
cls_dist = cls_dist.sigmoid() * (1 if confidence is None else confidence)
|
| 369 |
|
| 370 |
# filter class by confidence
|