File size: 2,557 Bytes
88e45b9 c6e3994 88e45b9 c6e3994 88e45b9 6a39ae1 c6e3994 0ae4269 4b46de4 88e45b9 c6e3994 6a39ae1 88e45b9 c6e3994 6a39ae1 c6e3994 88e45b9 c6e3994 cdd9a11 bd0409b 88e45b9 0ae4269 6a39ae1 88e45b9 4b46de4 0ae4269 4b46de4 0ae4269 6a39ae1 0ae4269 88e45b9 0ae4269 88e45b9 0ae4269 4b46de4 88e45b9 0ae4269 6a39ae1 c6e3994 6a39ae1 88e45b9 c6e3994 6a39ae1 c6e3994 88e45b9 44abd6c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
import sys
from math import isclose
from pathlib import Path
import pytest
from lightning.pytorch import Trainer
from torch.utils.data import DataLoader
project_root = Path(__file__).resolve().parent.parent.parent
sys.path.append(str(project_root))
from yolo.config.config import Config
from yolo.model.yolo import YOLO
from yolo.tools.data_loader import StreamDataLoader
from yolo.tools.solver import InferenceModel, TrainModel, ValidateModel
from yolo.utils.bounding_box_utils import Anc2Box, Vec2Box
@pytest.fixture
def model_validator(validation_cfg: Config):
validator = ValidateModel(validation_cfg)
return validator
def test_model_validator_initialization(solver: Trainer, model_validator: ValidateModel):
assert isinstance(model_validator.model, YOLO)
assert hasattr(solver, "validate")
def test_model_validator_solve_mock_dataset(
solver: Trainer, model_validator: ValidateModel, validation_dataloader: DataLoader
):
mAPs = solver.validate(model_validator, dataloaders=validation_dataloader)[0]
except_mAPs = {"map_50": 0.7379, "map": 0.5617}
assert isclose(mAPs["map_50"], except_mAPs["map_50"], abs_tol=0.1)
assert isclose(mAPs["map"], except_mAPs["map"], abs_tol=0.1)
@pytest.fixture
def model_tester(inference_cfg: Config):
tester = InferenceModel(inference_cfg)
return tester
@pytest.fixture
def modelv7_tester(inference_v7_cfg: Config):
tester = InferenceModel(inference_v7_cfg)
return tester
def test_model_tester_initialization(solver: Trainer, model_tester: InferenceModel):
assert isinstance(model_tester.model, YOLO)
assert hasattr(solver, "predict")
def test_model_tester_solve_single_image(
solver: Trainer, model_tester: InferenceModel, file_stream_data_loader: StreamDataLoader
):
solver.predict(model_tester, file_stream_data_loader)
def test_modelv7_tester_solve_single_image(
solver: Trainer, modelv7_tester: InferenceModel, file_stream_data_loader_v7: StreamDataLoader
):
solver.predict(modelv7_tester, file_stream_data_loader_v7)
@pytest.fixture
def model_trainer(train_cfg: Config):
train_cfg.task.epoch = 2
trainer = TrainModel(train_cfg)
return trainer
def test_model_trainer_initialization(solver: Trainer, model_trainer: TrainModel):
assert isinstance(model_trainer.model, YOLO)
assert hasattr(solver, "fit")
assert solver.optimizers is not None
# def test_model_trainer_solve_mock_dataset(model_trainer: ModelTrainer, train_dataloader: YoloDataLoader):
# model_trainer.solve(train_dataloader)
|