Spaces:
Sleeping
Sleeping
| 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 | |
| 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) | |
| def model_tester(inference_cfg: Config): | |
| tester = InferenceModel(inference_cfg) | |
| return tester | |
| 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) | |
| 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) | |