pms-nvidia-processor 2.8.0__tar.gz → 2.9.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.8.0 → pms_nvidia_processor-2.9.0}/PKG-INFO +1 -1
  2. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/__init__.py +3 -1
  3. pms_nvidia_processor-2.9.0/pms_nvidia_processor/processor/do_f3/config.py +27 -0
  4. pms_nvidia_processor-2.9.0/pms_nvidia_processor/processor/do_f3/context.py +42 -0
  5. pms_nvidia_processor-2.9.0/pms_nvidia_processor/processor/do_f3/processor.py +165 -0
  6. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/builder.py +3 -0
  7. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pyproject.toml +1 -1
  8. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/README.md +0 -0
  9. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/base/config.py +0 -0
  10. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/base/dependency.py +0 -0
  11. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/base/logger.py +0 -0
  12. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/base/processor.py +0 -0
  13. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/cdru_f2/config.py +0 -0
  14. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/cdru_f2/context.py +0 -0
  15. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/cdru_f2/processor.py +0 -0
  16. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/col_en/config.py +0 -0
  17. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/col_en/context.py +0 -0
  18. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/col_en/processor.py +0 -0
  19. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/color_resnet/config.py +0 -0
  20. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/color_resnet/context.py +0 -0
  21. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/color_resnet/processor_post.py +0 -0
  22. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/color_resnet/processor_pre.py +0 -0
  23. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dpir/config.py +0 -0
  24. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dpir/context.py +0 -0
  25. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dpir/processor.py +0 -0
  26. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_asm_sr_f3/config.py +0 -0
  27. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_asm_sr_f3/context.py +0 -0
  28. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_asm_sr_f3/processor.py +0 -0
  29. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_deinter_f3_gloss/config.py +0 -0
  30. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_deinter_f3_gloss/context.py +0 -0
  31. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_deinter_f3_gloss/processor.py +0 -0
  32. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/config.py +0 -0
  33. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/context.py +0 -0
  34. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/processor.py +0 -0
  35. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_sr_f3/config.py +0 -0
  36. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_sr_f3/context.py +0 -0
  37. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_sr_f3/processor.py +0 -0
  38. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_sr_f5/config.py +0 -0
  39. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_sr_f5/context.py +0 -0
  40. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/dru_rbpn_sr_f5/processor.py +0 -0
  41. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/fisf/config.py +0 -0
  42. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/fisf/context.py +0 -0
  43. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/fisf/processor.py +0 -0
  44. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/gg/config.py +0 -0
  45. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/gg/context.py +0 -0
  46. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/processor/gg/processor.py +0 -0
  47. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/batch.py +0 -0
  48. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/caster.py +0 -0
  49. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/normalizer/__init__.py +0 -0
  50. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/normalizer/_factory.py +0 -0
  51. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/normalizer/_multi_normalizer.py +0 -0
  52. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/normalizer/_normalization_param.py +0 -0
  53. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/normalizer/_single_normalizer.py +0 -0
  54. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/patcher/__init__.py +0 -0
  55. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/patcher/_patch_collection.py +0 -0
  56. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/patcher/_patch_position.py +0 -0
  57. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/patcher/_patcher.py +0 -0
  58. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/patcher/_patcher_v2.py +0 -0
  59. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/patcher/_patcher_w.py +0 -0
  60. {pms_nvidia_processor-2.8.0 → pms_nvidia_processor-2.9.0}/pms_nvidia_processor/utility/pip.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pms-nvidia-processor
3
- Version: 2.8.0
3
+ Version: 2.9.0
4
4
  Summary: lib for pms nvidia processors
5
5
  Author: HyeongSeok Kim
6
6
  Author-email: tiryul@gmail.com
@@ -12,6 +12,7 @@ from .processor.color_resnet.processor_post import COLORRESNETPOSTProcessor
12
12
  from .processor.gg.processor import GGProcessor
13
13
  from .processor.col_en.processor import COLENProcessor
14
14
  from .processor.cdru_f2.processor import CDRUF2Processor
15
+ from .processor.do_f3.processor import DOF3Processor
15
16
 
16
17
 
17
18
  __all__: list[str] = [
@@ -27,6 +28,7 @@ __all__: list[str] = [
27
28
  "GGProcessor",
28
29
  "COLENProcessor",
29
30
  "CDRUF2Processor",
31
+ "DOF3Processor",
30
32
  ]
31
33
 
32
- __version__ = "2.8.0"
34
+ __version__ = "2.9.0"
@@ -0,0 +1,27 @@
1
+ from ..base.config import *
2
+
3
+
4
+ class DOF3Config:
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 = 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,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 DOF3Context:
8
+
9
+ def __init__(
10
+ self,
11
+ input_vector: np.ndarray,
12
+ input_patcher: patcher.Patcher,
13
+ ) -> None:
14
+ config = DOF3Config
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,165 @@
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
+
14
+ for batch_idx in range(b):
15
+ image = batch_input_images[batch_idx]
16
+ h, w, c = image.shape
17
+ for channel_idx in range(c):
18
+ input_buffer[batch_idx, channel_idx, :h, :w] = image[:, :, channel_idx]
19
+
20
+
21
+ def _post_processing(
22
+ output_buffer: np.ndarray, # BxCxHxW
23
+ output_image: np.ndarray, # BxHxWxC
24
+ ) -> None:
25
+
26
+ b, h, w, c = output_image.shape
27
+ for i in range(3):
28
+ np.copyto(src=output_buffer[:b, i, :h, :w], dst=output_image[:, :, :, i])
29
+
30
+
31
+ @register
32
+ class DOF3Processor(NVIDIAProcessorBase[EngineIOData, EngineIOData]):
33
+
34
+ def __init__(
35
+ self,
36
+ concurrency: int,
37
+ index: int,
38
+ model_path: str,
39
+ device: Literal["auto"] | int = "auto",
40
+ normalization: str = "color-basic",
41
+ ):
42
+ # super
43
+ super().__init__(
44
+ concurrency=concurrency,
45
+ index=index,
46
+ model_path=model_path,
47
+ device=device,
48
+ )
49
+ self.config = DOF3Config
50
+ self.normalizer = normalizer.NormalizerFactory.create_multi(normalization)
51
+
52
+ async def inference(
53
+ self,
54
+ batch_input_data: list[np.ndarray],
55
+ batch_output_data: np.ndarray,
56
+ ):
57
+ session = self.session
58
+ batch = len(batch_input_data)
59
+
60
+ _pre_processing(
61
+ batch_input_images=batch_input_data,
62
+ input_buffer=self.input_buffer,
63
+ )
64
+ session.run()
65
+ _post_processing(
66
+ output_buffer=self.output_buffer,
67
+ output_image=batch_output_data,
68
+ )
69
+
70
+ async def _run(self, input_data: EngineIOData) -> EngineIOData:
71
+ max_batch_size = self.io_shapes["input"][0][0]
72
+
73
+ # 여기서 patching
74
+ input_vector = self.caster.cast(input_data.frame)
75
+ [
76
+ self.normalizer.normalize(input_vector[:, :, i * 3 : (i + 1) * 3], 2)
77
+ for i in range(self.config.NUMBER_OF_FRAMES)
78
+ ]
79
+ context = DOF3Context(input_vector, self.patcher)
80
+
81
+ # batch inference
82
+ for batch_input_patches, batch_output_patches in zip(
83
+ batch.BatchTool.batch_list(context.input_patches, max_batch_size),
84
+ batch.BatchTool.batch_vector(context.output_patches, max_batch_size),
85
+ ):
86
+ await self.inference(
87
+ batch_input_data=batch_input_patches,
88
+ batch_output_data=batch_output_patches,
89
+ )
90
+
91
+ self.patcher.merge(
92
+ output_vector=context.output_vector,
93
+ patches=context.output_patches,
94
+ )
95
+
96
+ self.normalizer.denormalize(context.output_vector, 2)
97
+ return EngineIOData(
98
+ frame_id=input_data.frame_id,
99
+ frame=self.caster.uncast(context.output_vector),
100
+ )
101
+
102
+ def _ready_processor(self) -> bool:
103
+ return True
104
+
105
+ def _bind_io(self, input_data: EngineIOData):
106
+ self.caster = caster.Caster(input_data.frame)
107
+
108
+ patcher_config = self.config.PATCHER_CONFIG
109
+ trt_config = self.config.TRT_CONFIG
110
+
111
+ input_image: np.ndarray = input_data.frame # type: ignore
112
+ padded_input_image = patcher.pad_vector(
113
+ input_image,
114
+ overlap_length=patcher_config.input_overlab_length,
115
+ )
116
+ output_image: np.ndarray = np.zeros(
117
+ (
118
+ input_image.shape[0] * self.config.UPSCALE_RATIO,
119
+ input_image.shape[1] * self.config.UPSCALE_RATIO,
120
+ self.config.NUMBER_OF_OUTPUT_CHANNELS,
121
+ )
122
+ )
123
+ self.patcher = patcher.Patcher(
124
+ **patcher_config.build_patcher_params(
125
+ input_vector=padded_input_image,
126
+ output_vector=output_image,
127
+ )
128
+ )
129
+ n_patches = len(self.patcher.slice(input_vector=padded_input_image))
130
+
131
+ # set io shape
132
+ self.batch_size = min(n_patches, self.config.MAX_BATCH_SIZE)
133
+ self.io_shapes = {
134
+ "input": (
135
+ [self.batch_size, *trt_config.input_shape],
136
+ np.float32,
137
+ ),
138
+ "output": (
139
+ [self.batch_size, *trt_config.output_shape],
140
+ np.float32,
141
+ ),
142
+ }
143
+
144
+ # init trt engine
145
+ self.initialize_trt_session(
146
+ required_batch_size=self.batch_size,
147
+ io_shape=self.io_shapes,
148
+ )
149
+
150
+ # set io buffer
151
+ self.input_buffer = self.session._input_bindings[0].host_buffer.reshape(
152
+ self.io_shapes["input"][0]
153
+ )
154
+ self.input_buffer.fill(1.0 / 255.0)
155
+ self.output_buffer = self.session._output_bindings[0].host_buffer.reshape(
156
+ *self.io_shapes["output"][0]
157
+ )
158
+
159
+ return True
160
+
161
+ def _get_live(self) -> bool:
162
+ return True
163
+
164
+ def _get_concurrency(self) -> int:
165
+ return self._concurrency
@@ -20,6 +20,7 @@ from ..processor.fisf.config import FISFConfig
20
20
  from ..processor.gg.config import GGConfig
21
21
  from ..processor.col_en.config import ColEnConfig
22
22
  from ..processor.cdru_f2.config import CDRUF2Config
23
+ from ..processor.do_f3.config import DOF3Config
23
24
 
24
25
  __MODEL_CONFIG_MAP = {
25
26
  "DPIR": DPIRConfig,
@@ -34,6 +35,8 @@ __MODEL_CONFIG_MAP = {
34
35
  "GG": GGConfig,
35
36
  "COL-EN": ColEnConfig,
36
37
  "CDRU-F2": CDRUF2Config,
38
+ "DO-L-F3": DOF3Config,
39
+ "DO-H-F3": DOF3Config,
37
40
  }
38
41
 
39
42
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pms-nvidia-processor"
3
- version = "2.8.0"
3
+ version = "2.9.0"
4
4
  description = "lib for pms nvidia processors"
5
5
  authors = ["HyeongSeok Kim <tiryul@gmail.com>"]
6
6
  readme = "README.md"