mirror of
https://github.com/qurator-spk/eynollah.git
synced 2026-08-09 04:12:42 +02:00
do_prediction*: refactor into separate module
This commit is contained in:
parent
bad250fd72
commit
b2777a2562
6 changed files with 560 additions and 410 deletions
108
tests/test_tiling.py
Normal file
108
tests/test_tiling.py
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
import pytest
|
||||
import cv2
|
||||
import numpy as np
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from eynollah.utils.tiling import do_prediction, do_prediction_new_concept
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"height,width",
|
||||
[
|
||||
(448, 448),
|
||||
(672, 672),
|
||||
(1088, 832),
|
||||
(1152, 896),
|
||||
])
|
||||
def test_tiling_idem(image_resources, height, width):
|
||||
infile = image_resources[0]
|
||||
class PseudoModel:
|
||||
def predict(self, images, **kwargs):
|
||||
return images
|
||||
@property
|
||||
def input_shape(self):
|
||||
return None, height, width, None
|
||||
model = PseudoModel()
|
||||
in_img = cv2.imread(infile)
|
||||
outimg = do_prediction(in_img, model, patches=True, is_enhancement=True,
|
||||
marginal_of_patch_percent=0)
|
||||
assert in_img.shape == outimg.shape
|
||||
assert np.all(in_img == outimg)
|
||||
outimg = do_prediction(in_img, model, patches=True, is_enhancement=True,
|
||||
marginal_of_patch_percent=0.1)
|
||||
assert in_img.shape == outimg.shape
|
||||
assert np.all(in_img == outimg)
|
||||
outimg = do_prediction(in_img, model, patches=True, is_enhancement=True,
|
||||
marginal_of_patch_percent=0.2)
|
||||
assert in_img.shape == outimg.shape
|
||||
assert in_img.dtype == outimg.dtype
|
||||
assert np.all(in_img == outimg)
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"height,width",
|
||||
[
|
||||
(448, 448),
|
||||
(672, 672),
|
||||
(1088, 832),
|
||||
(1152, 896),
|
||||
])
|
||||
def test_tiling_min(image_resources, height, width):
|
||||
infile = image_resources[0]
|
||||
class PseudoModel:
|
||||
def predict(self, images, **kwargs):
|
||||
M = images.min(axis=(1, 2, 3))
|
||||
return 1. * (images == M)
|
||||
@property
|
||||
def input_shape(self):
|
||||
return None, height, width, None
|
||||
model = PseudoModel()
|
||||
in_img = cv2.imread(infile)
|
||||
outimg = do_prediction(in_img, model, patches=True,
|
||||
marginal_of_patch_percent=0)
|
||||
assert in_img.shape[:2] == outimg.shape
|
||||
assert np.any(outimg)
|
||||
outimg = do_prediction(in_img, model, patches=True,
|
||||
marginal_of_patch_percent=0.1)
|
||||
assert in_img.shape[:2] == outimg.shape
|
||||
assert np.any(outimg)
|
||||
outimg = do_prediction(in_img, model, patches=True,
|
||||
marginal_of_patch_percent=0.2)
|
||||
assert in_img.shape[:2] == outimg.shape
|
||||
assert np.any(outimg)
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"height,width",
|
||||
[
|
||||
(448, 448),
|
||||
(672, 672),
|
||||
(1088, 832),
|
||||
(1152, 896),
|
||||
])
|
||||
def test_tiling_min_conf(image_resources, height, width):
|
||||
infile = image_resources[0]
|
||||
class PseudoModel:
|
||||
def predict(self, images, **kwargs):
|
||||
M = images.min(axis=(1, 2, 3))
|
||||
return 1. * (images == M)
|
||||
@property
|
||||
def input_shape(self):
|
||||
return None, height, width, None
|
||||
model = PseudoModel()
|
||||
in_img = cv2.imread(infile)
|
||||
outimg, conf = do_prediction_new_concept(
|
||||
in_img, model, patches=True,
|
||||
marginal_of_patch_percent=0)
|
||||
assert in_img.shape[:2] == outimg.shape
|
||||
assert np.any(outimg)
|
||||
assert np.sum(conf) < conf.size
|
||||
outimg, conf = do_prediction_new_concept(
|
||||
in_img, model, patches=True,
|
||||
marginal_of_patch_percent=0.1)
|
||||
assert in_img.shape[:2] == outimg.shape
|
||||
assert np.any(outimg)
|
||||
assert np.sum(conf) < conf.size
|
||||
outimg, conf = do_prediction_new_concept(
|
||||
in_img, model, patches=True,
|
||||
marginal_of_patch_percent=0.2)
|
||||
assert in_img.shape[:2] == outimg.shape
|
||||
assert np.any(outimg)
|
||||
assert np.sum(conf) < conf.size
|
||||
Loading…
Add table
Add a link
Reference in a new issue