def test_batch(): """Test the batch-wise to submission.""" base_path = Path(__file__).parent / "data" test_img_path = base_path / "rgb_mask_example.png" mask = read_rgb_mask(test_img_path) tensor_mask = from_numpy(mask) batch = [ ("alpha.jpg", "Pead", "Haricot", tensor_mask), ("bravo.jpg", "Bipbip", "Haricot", tensor_mask), ("charlie.jpg", "Roseau", "Mais", tensor_mask), ] submission = { filename: asdict(_sub) for filename, _sub in [sample_to_submission(a, b, c, d) for a, b, c, d in batch] } for _file, _team, _crop, _ in batch: assert _file in submission assert submission[_file]["shape"] == [1536, 2048] assert submission[_file]["team"] == _team assert submission[_file]["crop"] == _crop assert submission[_file]["segmentation"]["crop"] is not None assert submission[_file]["segmentation"]["weed"] is not None
def test_mask_to_json(): """Test that the mask can be wrapped up as specified.""" base_path = Path(__file__).parent / "data" test_img_path = base_path / "rgb_mask_example.png" mask = read_rgb_mask(test_img_path) tensor_mask = from_numpy(mask) batch = ("arr_mask_example", "Bipbip", "Haricot", tensor_mask) submission_dict = sample_to_submission(*batch) assert submission_dict.filename == "arr_mask_example" assert submission_dict.shape == [1536, 2048] assert submission_dict.team == "Bipbip" assert submission_dict.crop == "Haricot" assert submission_dict.segmentation.crop is not None assert submission_dict.segmentation.weed is not None submission_dict = asdict(submission_dict) submission_dict = {submission_dict.pop("filename"): submission_dict} sample = base_path / "sample_submission.json" with open(f"{sample}") as json_file: sample_json = json.load(json_file) assert sample_json == submission_dict
def test_step(self, batch: TestBatch, batch_idx: int) -> Dict[str, Dict[str, Any]]: """"Predict the mask of a single test image and prepare it for submission.""" predicted_mask = self(batch.image).argmax(dim=1) submission_i = sample_to_submission( filename=batch.filename[0], team_name=batch.team[0], crop_name=batch.crop[0], mask=predicted_mask.squeeze().cpu().detach().numpy(), ) submission_dict_i = asdict(submission_i) return {submission_dict_i.pop("filename"): submission_dict_i}
def test_mask_to_json(): """Test that the mask can be wrapped up as specified.""" base_path = Path(__file__).parent / "data" test_img_path = base_path / "rgb_mask_example.png" mask = read_rgb_mask(test_img_path) tensor_mask = from_numpy(mask) batch = ("bob.jpg", "Bipbip", "Haricot", tensor_mask) filename, submission_dict = sample_to_submission(*batch) assert filename == "bob.jpg" assert submission_dict.shape == [1536, 2048] assert submission_dict.team == "Bipbip" assert submission_dict.crop == "Haricot" assert submission_dict.segmentation.crop is not None assert submission_dict.segmentation.weed is not None