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.
Files changed (60) hide show
  1. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/PKG-INFO +1 -1
  2. pms_nvidia_processor-2.4.0/pms_nvidia_processor/__init__.py +28 -0
  3. {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
  4. 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
  5. pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/config.py +27 -0
  6. pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/context.py +37 -0
  7. pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/processor.py +161 -0
  8. pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_sr_f3/config.py +27 -0
  9. pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_sr_f3/context.py +42 -0
  10. pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_sr_f5/config.py +27 -0
  11. pms_nvidia_processor-2.4.0/pms_nvidia_processor/processor/dru_rbpn_sr_f5/context.py +42 -0
  12. 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
  13. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pyproject.toml +1 -1
  14. pms_nvidia_processor-2.2.2/pms_nvidia_processor/__init__.py +0 -13
  15. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/color_resnet/processor_post.py +0 -208
  16. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/color_resnet/processor_pre.py +0 -110
  17. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dpir/processor.py +0 -151
  18. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_asm_sr/processor_f3.py +0 -191
  19. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_deinter/processor_f3_gloss.py +0 -173
  20. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_sr/config.py +0 -53
  21. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_sr/context.py +0 -80
  22. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_sr/processor_f3.py +0 -174
  23. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/dru_rbpn_sr/processor_f5.py +0 -174
  24. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/fisf/processor.py +0 -229
  25. pms_nvidia_processor-2.2.2/pms_nvidia_processor/processor/gg/processor.py +0 -153
  26. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/README.md +0 -0
  27. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/base/config.py +0 -0
  28. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/base/dependency.py +0 -0
  29. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/base/logger.py +0 -0
  30. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/base/processor.py +0 -0
  31. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/color_resnet/config.py +0 -0
  32. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/color_resnet/context.py +0 -0
  33. 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
  34. 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
  35. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/dpir/config.py +0 -0
  36. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/dpir/context.py +0 -0
  37. 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
  38. {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
  39. {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
  40. {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
  41. 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
  42. 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
  43. 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
  44. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/fisf/config.py +0 -0
  45. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/fisf/context.py +0 -0
  46. /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
  47. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/gg/config.py +0 -0
  48. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/processor/gg/context.py +0 -0
  49. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/batch.py +0 -0
  50. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/caster.py +0 -0
  51. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/normalizer/__init__.py +0 -0
  52. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/normalizer/_factory.py +0 -0
  53. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/normalizer/_multi_normalizer.py +0 -0
  54. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/normalizer/_normalization_param.py +0 -0
  55. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/normalizer/_single_normalizer.py +0 -0
  56. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/patcher/__init__.py +0 -0
  57. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/patcher/_patch_collection.py +0 -0
  58. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/patcher/_patch_position.py +0 -0
  59. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/patcher/_patcher.py +0 -0
  60. {pms_nvidia_processor-2.2.2 → pms_nvidia_processor-2.4.0}/pms_nvidia_processor/utility/patcher/_patcher_v2.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pms-nvidia-processor
3
- Version: 2.2.2
3
+ Version: 2.4.0
4
4
  Summary: lib for pms nvidia processors
5
5
  Author: HyeongSeok Kim
6
6
  Author-email: tiryul@gmail.com
@@ -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 + 1,
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
- np.sum(_usm_sharp(img=(img[:, :, 3:6])) * e, axis=-1)
25
- for img in batch_input_images
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
- input_buffer: np.ndarray,
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
- input_buffer[batch_idx, channel_idx, :h, :w] = image[:, :, channel_idx]
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
- input_buffer=self.input_buffer_0,
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,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pms-nvidia-processor"
3
- version = "2.2.2"
3
+ version = "2.4.0"
4
4
  description = "lib for pms nvidia processors"
5
5
  authors = ["HyeongSeok Kim <tiryul@gmail.com>"]
6
6
  readme = "README.md"
@@ -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"