pms-nvidia-processor 2.2.2__tar.gz → 2.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/PKG-INFO +1 -1
- pms_nvidia_processor-2.4.0/pms_nvidia_processor/__init__.py +28 -0
- {pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_asm_sr → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_asm_sr_f3}/config.py +1 -1
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_asm_sr/processor_f3_v2.py → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_asm_sr_f3/processor.py +6 -7
- pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/config.py +27 -0
- pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/context.py +37 -0
- pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/processor.py +161 -0
- pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_sr_f3/config.py +27 -0
- pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_sr_f3/context.py +42 -0
- pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_sr_f5/config.py +27 -0
- pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_sr_f5/context.py +42 -0
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/gg/processor_v2.py → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/gg/processor.py +14 -4
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pyproject.toml +1 -1
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/__init__.py +0 -13
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/color_resnet/processor_post.py +0 -208
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/color_resnet/processor_pre.py +0 -110
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dpir/processor.py +0 -151
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_asm_sr/processor_f3.py +0 -191
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_deinter/processor_f3_gloss.py +0 -173
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_sr/config.py +0 -53
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_sr/context.py +0 -80
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_sr/processor_f3.py +0 -174
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_sr/processor_f5.py +0 -174
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/fisf/processor.py +0 -229
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/gg/processor.py +0 -153
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/README.md +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/base/config.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/base/dependency.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/base/logger.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/base/processor.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/color_resnet/config.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/color_resnet/context.py +0 -0
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/color_resnet/processor_post_v2.py → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/color_resnet/processor_post.py +0 -0
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/color_resnet/processor_pre_v2.py → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/color_resnet/processor_pre.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/dpir/config.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/dpir/context.py +0 -0
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dpir/processor_v2.py → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dpir/processor.py +0 -0
- {pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_asm_sr → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_asm_sr_f3}/context.py +0 -0
- {pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_deinter → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_deinter_f3_gloss}/config.py +0 -0
- {pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_deinter → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_deinter_f3_gloss}/context.py +0 -0
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_deinter/processor_f3_gloss_v2.py → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_deinter_f3_gloss/processor.py +0 -0
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_sr/processor_f3_v2.py → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_sr_f3/processor.py +2 -2
- pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_sr/processor_f5_v2.py → pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_sr_f5/processor.py +2 -2
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/fisf/config.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/fisf/context.py +0 -0
- /pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/fisf/processor_v2.py → /pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/fisf/processor.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/gg/config.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/gg/context.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/batch.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/caster.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/normalizer/__init__.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/normalizer/_factory.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/normalizer/_multi_normalizer.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/normalizer/_normalization_param.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/normalizer/_single_normalizer.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/patcher/__init__.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/patcher/_patch_collection.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/patcher/_patch_position.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/patcher/_patcher.py +0 -0
- {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/patcher/_patcher_v2.py +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from .processor.dpir.processor import DPIRProcessor
|
|
2
|
+
from .processor.dru_rbpn_sr_f3.processor import DRURBPNSRF3Processor
|
|
3
|
+
from .processor.dru_rbpn_sr_f5.processor import DRURBPNSRF5Processor
|
|
4
|
+
from .processor.dru_asm_sr_f3.processor import DRUASMSRF3Processor
|
|
5
|
+
from .processor.dru_rbpn_deinter_f3_gloss.processor import (
|
|
6
|
+
DRURBPNDEINTERF3GLOSSProcessor,
|
|
7
|
+
)
|
|
8
|
+
from .processor.dru_rbpn_deinter_pc_f2.processor import DRURBPNDEINTERPCF2Processor
|
|
9
|
+
from .processor.fisf.processor import FISFProcessor
|
|
10
|
+
from .processor.color_resnet.processor_pre import COLORRESNETPREProcessor
|
|
11
|
+
from .processor.color_resnet.processor_post import COLORRESNETPOSTProcessor
|
|
12
|
+
from .processor.gg.processor import GGProcessor
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
__all__: list[str] = [
|
|
16
|
+
"DPIRProcessor",
|
|
17
|
+
"DRURBPNSRF3Processor",
|
|
18
|
+
"DRURBPNSRF5Processor",
|
|
19
|
+
"DRUASMSRF3Processor",
|
|
20
|
+
"DRURBPNDEINTERF3GLOSSProcessor",
|
|
21
|
+
"DRURBPNDEINTERPCF2Processor",
|
|
22
|
+
"FISFProcessor",
|
|
23
|
+
"COLORRESNETPREProcessor",
|
|
24
|
+
"COLORRESNETPOSTProcessor",
|
|
25
|
+
"GGProcessor",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
__version__ = "2.4.0"
|
|
@@ -22,6 +22,6 @@ class DRUASMSRF3Config:
|
|
|
22
22
|
TRT_CONFIG = TRTIOConfig(
|
|
23
23
|
patch_size=PATCH_SIZE,
|
|
24
24
|
upscale_ratio=UPSCALE_RATIO,
|
|
25
|
-
number_of_input_channels=NUMBER_OF_INPUT_CHANNELS
|
|
25
|
+
number_of_input_channels=NUMBER_OF_INPUT_CHANNELS,
|
|
26
26
|
number_of_output_channels=NUMBER_OF_OUTPUT_CHANNELS,
|
|
27
27
|
)
|
|
@@ -19,11 +19,11 @@ def _pre_processing(
|
|
|
19
19
|
) -> None:
|
|
20
20
|
b = len(batch_input_images)
|
|
21
21
|
# 0.299 * img[..., 2:3, :, :] + 0.587 * img[..., 1:2, :, :] + 0.114 * img[..., 0:1, :, :]
|
|
22
|
-
e = np.array([0.299, 0.587, 0.114]) # for RGB
|
|
23
|
-
usm_edge_images = [
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
]
|
|
22
|
+
# e = np.array([0.299, 0.587, 0.114]) # for RGB
|
|
23
|
+
# usm_edge_images = [
|
|
24
|
+
# np.sum(_usm_sharp(img=(img[:, :, 3:6])) * e, axis=-1)
|
|
25
|
+
# for img in batch_input_images
|
|
26
|
+
# ]
|
|
27
27
|
|
|
28
28
|
for batch_idx in range(b):
|
|
29
29
|
image = batch_input_images[batch_idx]
|
|
@@ -31,7 +31,7 @@ def _pre_processing(
|
|
|
31
31
|
for channel_idx in range(c):
|
|
32
32
|
input_buffer[batch_idx, channel_idx, :h, :w] = image[:, :, channel_idx]
|
|
33
33
|
|
|
34
|
-
input_buffer[batch_idx, -1, :h, :w] = usm_edge_images[batch_idx][:h, :w]
|
|
34
|
+
# input_buffer[batch_idx, -1, :h, :w] = usm_edge_images[batch_idx][:h, :w]
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
def _post_processing(
|
|
@@ -62,7 +62,6 @@ class DRUASMSRF3Processor(NVIDIAProcessorBase[EngineIOData, EngineIOData]):
|
|
|
62
62
|
model_path=model_path,
|
|
63
63
|
device=device,
|
|
64
64
|
)
|
|
65
|
-
|
|
66
65
|
self.config = DRUASMSRF3Config
|
|
67
66
|
self.normalizer = normalizer.NormalizerFactory.create_multi(normalization)
|
|
68
67
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from ..base.config import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class DRURBPNDEINTERPCF2Config:
|
|
5
|
+
NUMBER_OF_FRAMES = 2
|
|
6
|
+
NUMBER_OF_INPUT_CHANNELS: int = 3 * NUMBER_OF_FRAMES
|
|
7
|
+
NUMBER_OF_OUTPUT_CHANNELS: int = 3
|
|
8
|
+
UPSCALE_RATIO: int = 1
|
|
9
|
+
PATCH_SIZE = 512
|
|
10
|
+
MAX_BATCH_SIZE = 8
|
|
11
|
+
MIN_BATCH_SIZE = 1
|
|
12
|
+
OPT_BATCH_SIZE = MAX_BATCH_SIZE // 2
|
|
13
|
+
INPUT_OVERLAB_LENGTH = 16
|
|
14
|
+
|
|
15
|
+
PATCHER_CONFIG = PatcherIOConfig(
|
|
16
|
+
patch_size=PATCH_SIZE,
|
|
17
|
+
upscale_ratio=UPSCALE_RATIO,
|
|
18
|
+
number_of_input_channels=NUMBER_OF_INPUT_CHANNELS,
|
|
19
|
+
number_of_output_channels=NUMBER_OF_OUTPUT_CHANNELS,
|
|
20
|
+
input_overlab_length=INPUT_OVERLAB_LENGTH,
|
|
21
|
+
)
|
|
22
|
+
TRT_CONFIG = TRTIOConfig(
|
|
23
|
+
patch_size=PATCH_SIZE,
|
|
24
|
+
upscale_ratio=UPSCALE_RATIO,
|
|
25
|
+
number_of_input_channels=NUMBER_OF_INPUT_CHANNELS,
|
|
26
|
+
number_of_output_channels=NUMBER_OF_OUTPUT_CHANNELS,
|
|
27
|
+
)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
from .config import *
|
|
2
|
+
from ..base.dependency import *
|
|
3
|
+
from ..base.processor import *
|
|
4
|
+
from ...utility import patcher, normalizer
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class DRURBPNDeinterPCF2Context:
|
|
8
|
+
|
|
9
|
+
def __init__(
|
|
10
|
+
self,
|
|
11
|
+
input_vector: np.ndarray,
|
|
12
|
+
input_patcher: patcher.Patcher,
|
|
13
|
+
) -> None:
|
|
14
|
+
config = DRURBPNDEINTERPCF2Config
|
|
15
|
+
|
|
16
|
+
self.input_vector = input_vector
|
|
17
|
+
self.input_pathcer = input_patcher
|
|
18
|
+
self.padded_input_image = patcher.pad_vector(
|
|
19
|
+
vector=self.input_vector,
|
|
20
|
+
overlap_length=config.PATCHER_CONFIG.input_overlab_length,
|
|
21
|
+
mode="edge",
|
|
22
|
+
)
|
|
23
|
+
self.input_patches: list[np.ndarray] = self.input_pathcer.slice(
|
|
24
|
+
self.padded_input_image
|
|
25
|
+
)
|
|
26
|
+
self.output_patches: np.ndarray = np.zeros(
|
|
27
|
+
(len(self.input_patches), config.PATCH_SIZE, config.PATCH_SIZE, 3),
|
|
28
|
+
np.float32,
|
|
29
|
+
)
|
|
30
|
+
self.output_vector: np.ndarray = np.zeros(
|
|
31
|
+
(
|
|
32
|
+
input_vector.shape[0] * config.UPSCALE_RATIO,
|
|
33
|
+
input_vector.shape[1] * config.UPSCALE_RATIO,
|
|
34
|
+
config.NUMBER_OF_OUTPUT_CHANNELS,
|
|
35
|
+
),
|
|
36
|
+
np.float32,
|
|
37
|
+
)
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
from .config import *
|
|
2
|
+
from .context import *
|
|
3
|
+
from ..base.dependency import *
|
|
4
|
+
from ..base.processor import *
|
|
5
|
+
from ...utility import patcher, normalizer, batch, caster
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def _pre_processing(
|
|
9
|
+
batch_input_images: list[np.ndarray],
|
|
10
|
+
input_buffer: np.ndarray,
|
|
11
|
+
) -> None:
|
|
12
|
+
b = len(batch_input_images)
|
|
13
|
+
for batch_idx in range(b):
|
|
14
|
+
image = batch_input_images[batch_idx]
|
|
15
|
+
h, w, c = image.shape
|
|
16
|
+
input_buffer[batch_idx, 0:c, :h, :w] = image.transpose(2, 0, 1)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _post_processing(
|
|
20
|
+
output_buffer: np.ndarray, # BxCxHxW
|
|
21
|
+
output_image: np.ndarray, # BxHxWxC
|
|
22
|
+
) -> None:
|
|
23
|
+
b, h, w, c = output_image.shape
|
|
24
|
+
x = output_buffer[:b, :, :h, :w]
|
|
25
|
+
for i in range(3):
|
|
26
|
+
np.copyto(
|
|
27
|
+
src=x[:b, i, :h, :w],
|
|
28
|
+
dst=output_image[:, :, :, i],
|
|
29
|
+
casting="safe",
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@register
|
|
34
|
+
class DRURBPNDEINTERPCF2Processor(NVIDIAProcessorBase[EngineIOData, EngineIOData]):
|
|
35
|
+
|
|
36
|
+
def __init__(
|
|
37
|
+
self,
|
|
38
|
+
concurrency: int,
|
|
39
|
+
index: int,
|
|
40
|
+
model_path: str,
|
|
41
|
+
device: Literal["auto"] | int = "auto",
|
|
42
|
+
normalization: str = "color-basic",
|
|
43
|
+
):
|
|
44
|
+
# super
|
|
45
|
+
super().__init__(
|
|
46
|
+
concurrency=concurrency,
|
|
47
|
+
index=index,
|
|
48
|
+
model_path=model_path,
|
|
49
|
+
device=device,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
self.config = DRURBPNDEINTERPCF2Config
|
|
53
|
+
self.normalizer = normalizer.NormalizerFactory.create_multi(normalization)
|
|
54
|
+
|
|
55
|
+
async def inference(
|
|
56
|
+
self,
|
|
57
|
+
batch_input_data: list[np.ndarray],
|
|
58
|
+
batch_output_data: np.ndarray,
|
|
59
|
+
):
|
|
60
|
+
session = self.session
|
|
61
|
+
_pre_processing(
|
|
62
|
+
batch_input_images=batch_input_data,
|
|
63
|
+
input_buffer=self.input_buffer,
|
|
64
|
+
)
|
|
65
|
+
session.run()
|
|
66
|
+
_post_processing(
|
|
67
|
+
output_buffer=self.output_buffer,
|
|
68
|
+
output_image=batch_output_data,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
async def _run(self, input_data: EngineIOData) -> EngineIOData:
|
|
72
|
+
max_batch_size = self.io_shapes["input"][0][0]
|
|
73
|
+
input_vector = self.caster.cast(input_data.frame)
|
|
74
|
+
[
|
|
75
|
+
self.normalizer.normalize(input_vector[:, :, i * 3 : (i + 1) * 3], 2)
|
|
76
|
+
for i in range(self.config.NUMBER_OF_FRAMES)
|
|
77
|
+
]
|
|
78
|
+
context = DRURBPNDeinterPCF2Context(input_vector, self.patcher)
|
|
79
|
+
# batch inference
|
|
80
|
+
for batch_input_patches, batch_output_patches in zip(
|
|
81
|
+
batch.BatchTool.batch_list(context.input_patches, max_batch_size),
|
|
82
|
+
batch.BatchTool.batch_vector(context.output_patches, max_batch_size),
|
|
83
|
+
):
|
|
84
|
+
await self.inference(
|
|
85
|
+
batch_input_data=batch_input_patches,
|
|
86
|
+
batch_output_data=batch_output_patches,
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
self.patcher.merge(
|
|
90
|
+
output_vector=context.output_vector,
|
|
91
|
+
patches=context.output_patches,
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
self.normalizer.denormalize(context.output_vector, 2)
|
|
95
|
+
return EngineIOData(
|
|
96
|
+
frame_id=input_data.frame_id,
|
|
97
|
+
frame=self.caster.uncast(context.output_vector),
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
def _ready_processor(self) -> bool:
|
|
101
|
+
return True
|
|
102
|
+
|
|
103
|
+
def _bind_io(self, input_data: EngineIOData):
|
|
104
|
+
self.caster = caster.Caster(input_data.frame)
|
|
105
|
+
patcher_config = self.config.PATCHER_CONFIG
|
|
106
|
+
trt_config = self.config.TRT_CONFIG
|
|
107
|
+
|
|
108
|
+
input_image: np.ndarray = input_data.frame # type: ignore
|
|
109
|
+
padded_input_image = patcher.pad_vector(
|
|
110
|
+
input_image,
|
|
111
|
+
overlap_length=patcher_config.input_overlab_length,
|
|
112
|
+
)
|
|
113
|
+
output_image: np.ndarray = np.zeros(
|
|
114
|
+
(
|
|
115
|
+
input_image.shape[0] * self.config.UPSCALE_RATIO,
|
|
116
|
+
input_image.shape[1] * self.config.UPSCALE_RATIO,
|
|
117
|
+
self.config.NUMBER_OF_OUTPUT_CHANNELS,
|
|
118
|
+
)
|
|
119
|
+
)
|
|
120
|
+
self.patcher = patcher.Patcher(
|
|
121
|
+
**patcher_config.build_patcher_params(
|
|
122
|
+
input_vector=padded_input_image,
|
|
123
|
+
output_vector=output_image,
|
|
124
|
+
)
|
|
125
|
+
)
|
|
126
|
+
n_patches = len(self.patcher.slice(input_vector=padded_input_image))
|
|
127
|
+
|
|
128
|
+
# set io shape
|
|
129
|
+
self.batch_size = min(n_patches, self.config.MAX_BATCH_SIZE)
|
|
130
|
+
self.io_shapes = {
|
|
131
|
+
"input": (
|
|
132
|
+
[self.batch_size, *trt_config.input_shape],
|
|
133
|
+
np.float32,
|
|
134
|
+
),
|
|
135
|
+
"output": (
|
|
136
|
+
[self.batch_size, *trt_config.output_shape],
|
|
137
|
+
np.float32,
|
|
138
|
+
),
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
# init trt engine
|
|
142
|
+
self.initialize_trt_session(
|
|
143
|
+
required_batch_size=self.batch_size,
|
|
144
|
+
io_shape=self.io_shapes,
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
# set io buffer
|
|
148
|
+
self.input_buffer = self.session._input_bindings[0].host_buffer.reshape(
|
|
149
|
+
self.io_shapes["input"][0]
|
|
150
|
+
)
|
|
151
|
+
self.output_buffer = self.session._output_bindings[0].host_buffer.reshape(
|
|
152
|
+
*self.io_shapes["output"][0]
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
return True
|
|
156
|
+
|
|
157
|
+
def _get_live(self) -> bool:
|
|
158
|
+
return True
|
|
159
|
+
|
|
160
|
+
def _get_concurrency(self) -> int:
|
|
161
|
+
return self._concurrency
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from ..base.config import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class DRURBPNSRF3Config:
|
|
5
|
+
NUMBER_OF_FRAMES = 3
|
|
6
|
+
NUMBER_OF_INPUT_CHANNELS: int = 3 * NUMBER_OF_FRAMES
|
|
7
|
+
NUMBER_OF_OUTPUT_CHANNELS: int = 3
|
|
8
|
+
UPSCALE_RATIO: int = 2
|
|
9
|
+
PATCH_SIZE = 512
|
|
10
|
+
MAX_BATCH_SIZE = 8
|
|
11
|
+
MIN_BATCH_SIZE = 1
|
|
12
|
+
OPT_BATCH_SIZE = MAX_BATCH_SIZE // 2
|
|
13
|
+
INPUT_OVERLAB_LENGTH = 32
|
|
14
|
+
|
|
15
|
+
PATCHER_CONFIG = PatcherIOConfig(
|
|
16
|
+
patch_size=PATCH_SIZE,
|
|
17
|
+
upscale_ratio=UPSCALE_RATIO,
|
|
18
|
+
number_of_input_channels=NUMBER_OF_INPUT_CHANNELS,
|
|
19
|
+
number_of_output_channels=NUMBER_OF_OUTPUT_CHANNELS,
|
|
20
|
+
input_overlab_length=INPUT_OVERLAB_LENGTH,
|
|
21
|
+
)
|
|
22
|
+
TRT_CONFIG = TRTIOConfig(
|
|
23
|
+
patch_size=PATCH_SIZE,
|
|
24
|
+
upscale_ratio=UPSCALE_RATIO,
|
|
25
|
+
number_of_input_channels=NUMBER_OF_INPUT_CHANNELS,
|
|
26
|
+
number_of_output_channels=NUMBER_OF_OUTPUT_CHANNELS,
|
|
27
|
+
)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from .config import *
|
|
2
|
+
from ..base.dependency import *
|
|
3
|
+
from ..base.processor import *
|
|
4
|
+
from ...utility import patcher, normalizer
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class DRURBPNSRF3Context:
|
|
8
|
+
|
|
9
|
+
def __init__(
|
|
10
|
+
self,
|
|
11
|
+
input_vector: np.ndarray,
|
|
12
|
+
input_patcher: patcher.Patcher,
|
|
13
|
+
) -> None:
|
|
14
|
+
config = DRURBPNSRF3Config
|
|
15
|
+
|
|
16
|
+
self.input_vector = input_vector
|
|
17
|
+
self.input_pathcer = input_patcher
|
|
18
|
+
self.padded_input_image = patcher.pad_vector(
|
|
19
|
+
vector=self.input_vector,
|
|
20
|
+
overlap_length=config.PATCHER_CONFIG.input_overlab_length,
|
|
21
|
+
mode="edge",
|
|
22
|
+
)
|
|
23
|
+
self.input_patches: list[np.ndarray] = self.input_pathcer.slice(
|
|
24
|
+
self.padded_input_image
|
|
25
|
+
)
|
|
26
|
+
self.output_patches: np.ndarray = np.zeros(
|
|
27
|
+
(
|
|
28
|
+
len(self.input_patches),
|
|
29
|
+
config.PATCH_SIZE * config.UPSCALE_RATIO,
|
|
30
|
+
config.PATCH_SIZE * config.UPSCALE_RATIO,
|
|
31
|
+
3,
|
|
32
|
+
),
|
|
33
|
+
np.float32,
|
|
34
|
+
)
|
|
35
|
+
self.output_vector: np.ndarray = np.zeros(
|
|
36
|
+
(
|
|
37
|
+
self.input_vector.shape[0] * config.UPSCALE_RATIO,
|
|
38
|
+
self.input_vector.shape[1] * config.UPSCALE_RATIO,
|
|
39
|
+
3,
|
|
40
|
+
),
|
|
41
|
+
np.float32,
|
|
42
|
+
)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from ..base.config import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class DRURBPNSRF5Config:
|
|
5
|
+
NUMBER_OF_FRAMES = 5
|
|
6
|
+
NUMBER_OF_INPUT_CHANNELS: int = 3 * NUMBER_OF_FRAMES
|
|
7
|
+
NUMBER_OF_OUTPUT_CHANNELS: int = 3
|
|
8
|
+
UPSCALE_RATIO: int = 2
|
|
9
|
+
PATCH_SIZE = 512
|
|
10
|
+
MAX_BATCH_SIZE = 8
|
|
11
|
+
MIN_BATCH_SIZE = 1
|
|
12
|
+
OPT_BATCH_SIZE = MAX_BATCH_SIZE // 2
|
|
13
|
+
INPUT_OVERLAB_LENGTH = 32
|
|
14
|
+
|
|
15
|
+
PATCHER_CONFIG = PatcherIOConfig(
|
|
16
|
+
patch_size=PATCH_SIZE,
|
|
17
|
+
upscale_ratio=UPSCALE_RATIO,
|
|
18
|
+
number_of_input_channels=NUMBER_OF_INPUT_CHANNELS,
|
|
19
|
+
number_of_output_channels=NUMBER_OF_OUTPUT_CHANNELS,
|
|
20
|
+
input_overlab_length=INPUT_OVERLAB_LENGTH,
|
|
21
|
+
)
|
|
22
|
+
TRT_CONFIG = TRTIOConfig(
|
|
23
|
+
patch_size=PATCH_SIZE,
|
|
24
|
+
upscale_ratio=UPSCALE_RATIO,
|
|
25
|
+
number_of_input_channels=NUMBER_OF_INPUT_CHANNELS,
|
|
26
|
+
number_of_output_channels=NUMBER_OF_OUTPUT_CHANNELS,
|
|
27
|
+
)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from .config import *
|
|
2
|
+
from ..base.dependency import *
|
|
3
|
+
from ..base.processor import *
|
|
4
|
+
from ...utility import patcher, normalizer
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class DRURBPNSRF5Context:
|
|
8
|
+
|
|
9
|
+
def __init__(
|
|
10
|
+
self,
|
|
11
|
+
input_vector: np.ndarray,
|
|
12
|
+
input_patcher: patcher.Patcher,
|
|
13
|
+
) -> None:
|
|
14
|
+
config = DRURBPNSRF5Config
|
|
15
|
+
|
|
16
|
+
self.input_vector = input_vector
|
|
17
|
+
self.input_pathcer = input_patcher
|
|
18
|
+
self.padded_input_image = patcher.pad_vector(
|
|
19
|
+
vector=self.input_vector,
|
|
20
|
+
overlap_length=config.PATCHER_CONFIG.input_overlab_length,
|
|
21
|
+
mode="edge",
|
|
22
|
+
)
|
|
23
|
+
self.input_patches: list[np.ndarray] = self.input_pathcer.slice(
|
|
24
|
+
self.padded_input_image
|
|
25
|
+
)
|
|
26
|
+
self.output_patches: np.ndarray = np.zeros(
|
|
27
|
+
(
|
|
28
|
+
len(self.input_patches),
|
|
29
|
+
config.PATCH_SIZE * config.UPSCALE_RATIO,
|
|
30
|
+
config.PATCH_SIZE * config.UPSCALE_RATIO,
|
|
31
|
+
3,
|
|
32
|
+
),
|
|
33
|
+
np.float32,
|
|
34
|
+
)
|
|
35
|
+
self.output_vector: np.ndarray = np.zeros(
|
|
36
|
+
(
|
|
37
|
+
self.input_vector.shape[0] * config.UPSCALE_RATIO,
|
|
38
|
+
self.input_vector.shape[1] * config.UPSCALE_RATIO,
|
|
39
|
+
3,
|
|
40
|
+
),
|
|
41
|
+
np.float32,
|
|
42
|
+
)
|
|
@@ -7,14 +7,16 @@ from ...utility import patcher, normalizer, batch, caster
|
|
|
7
7
|
|
|
8
8
|
def _pre_processing(
|
|
9
9
|
batch_input_images: list[np.ndarray],
|
|
10
|
-
|
|
10
|
+
input_buffer_0: np.ndarray,
|
|
11
|
+
input_buffer_2: np.ndarray,
|
|
11
12
|
) -> None:
|
|
12
13
|
b = len(batch_input_images)
|
|
13
14
|
for batch_idx in range(b):
|
|
14
15
|
image = batch_input_images[batch_idx]
|
|
15
16
|
h, w, c = image.shape
|
|
16
17
|
for channel_idx in range(c):
|
|
17
|
-
|
|
18
|
+
input_buffer_0[batch_idx, channel_idx, :h, :w] = image[:, :, channel_idx]
|
|
19
|
+
input_buffer_2[:] = np.random.randn(*input_buffer_2.shape).astype(np.float32)[:]
|
|
18
20
|
|
|
19
21
|
|
|
20
22
|
def _post_processing(
|
|
@@ -50,7 +52,7 @@ class GGProcessor(NVIDIAProcessorBase[EngineIOData, EngineIOData]):
|
|
|
50
52
|
model_path=model_path,
|
|
51
53
|
device=device,
|
|
52
54
|
)
|
|
53
|
-
|
|
55
|
+
np.random.seed(index)
|
|
54
56
|
self.config = GGConfig
|
|
55
57
|
self.grain_level = grain_level
|
|
56
58
|
self.normalizer = normalizer.NormalizerFactory.create_multi(normalization)
|
|
@@ -63,7 +65,8 @@ class GGProcessor(NVIDIAProcessorBase[EngineIOData, EngineIOData]):
|
|
|
63
65
|
session = self.session
|
|
64
66
|
_pre_processing(
|
|
65
67
|
batch_input_images=batch_input_data,
|
|
66
|
-
|
|
68
|
+
input_buffer_0=self.input_buffer_0,
|
|
69
|
+
input_buffer_2=self.input_buffer_2,
|
|
67
70
|
)
|
|
68
71
|
session.run()
|
|
69
72
|
_post_processing(
|
|
@@ -131,6 +134,10 @@ class GGProcessor(NVIDIAProcessorBase[EngineIOData, EngineIOData]):
|
|
|
131
134
|
[self.batch_size, 1, 1, 1],
|
|
132
135
|
np.float32,
|
|
133
136
|
),
|
|
137
|
+
"grain_noise": (
|
|
138
|
+
[self.batch_size, *trt_config.input_shape],
|
|
139
|
+
np.float32,
|
|
140
|
+
),
|
|
134
141
|
"output_image": (
|
|
135
142
|
[self.batch_size, *trt_config.output_shape],
|
|
136
143
|
np.float32,
|
|
@@ -151,6 +158,9 @@ class GGProcessor(NVIDIAProcessorBase[EngineIOData, EngineIOData]):
|
|
|
151
158
|
self.io_shapes["grain_level"][0]
|
|
152
159
|
)
|
|
153
160
|
self.input_buffer_1.fill(self.grain_level)
|
|
161
|
+
self.input_buffer_2 = self.session._input_bindings[2].host_buffer.reshape(
|
|
162
|
+
self.io_shapes["grain_noise"][0]
|
|
163
|
+
)
|
|
154
164
|
self.output_buffer = self.session._output_bindings[0].host_buffer.reshape(
|
|
155
165
|
*self.io_shapes["output_image"][0]
|
|
156
166
|
)
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
from .processor.dpir.processor_v2 import DPIRProcessor
|
|
2
|
-
from .processor.dru_rbpn_sr.processor_f3_v2 import DRURBPNSRF3Processor
|
|
3
|
-
from .processor.dru_rbpn_sr.processor_f5_v2 import DRURBPNSRF5Processor
|
|
4
|
-
from .processor.dru_asm_sr.processor_f3_v2 import DRUASMSRF3Processor
|
|
5
|
-
from .processor.dru_rbpn_deinter.processor_f3_gloss_v2 import (
|
|
6
|
-
DRURBPNDEINTERF3GLOSSProcessor,
|
|
7
|
-
)
|
|
8
|
-
from .processor.fisf.processor_v2 import FISFProcessor
|
|
9
|
-
from .processor.color_resnet.processor_pre_v2 import COLORRESNETPREProcessor
|
|
10
|
-
from .processor.color_resnet.processor_post_v2 import COLORRESNETPOSTProcessor
|
|
11
|
-
from .processor.gg.processor_v2 import GGProcessor
|
|
12
|
-
|
|
13
|
-
__version__ = "2.2.2"
|