pms-nvidia-processor 2.6.0__tar.gz → 2.6.1__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 (57) hide show
  1. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/PKG-INFO +1 -1
  2. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/__init__.py +1 -1
  3. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/col_en/config.py +2 -2
  4. pms_nvidia_processor-2.6.1/pms_nvidia_processor/utility/builder.py +361 -0
  5. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/_patcher_w.py +40 -9
  6. pms_nvidia_processor-2.6.1/pms_nvidia_processor/utility/pip.py +76 -0
  7. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pyproject.toml +1 -1
  8. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/README.md +0 -0
  9. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/base/config.py +0 -0
  10. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/base/dependency.py +0 -0
  11. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/base/logger.py +0 -0
  12. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/base/processor.py +0 -0
  13. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/cdru_f2/config.py +0 -0
  14. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/cdru_f2/context.py +0 -0
  15. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/cdru_f2/processor.py +0 -0
  16. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/col_en/context.py +0 -0
  17. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/col_en/processor.py +0 -0
  18. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/color_resnet/config.py +0 -0
  19. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/color_resnet/context.py +0 -0
  20. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/color_resnet/processor_post.py +0 -0
  21. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/color_resnet/processor_pre.py +0 -0
  22. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dpir/config.py +0 -0
  23. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dpir/context.py +0 -0
  24. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dpir/processor.py +0 -0
  25. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_asm_sr_f3/config.py +0 -0
  26. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_asm_sr_f3/context.py +0 -0
  27. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_asm_sr_f3/processor.py +0 -0
  28. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_deinter_f3_gloss/config.py +0 -0
  29. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_deinter_f3_gloss/context.py +0 -0
  30. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_deinter_f3_gloss/processor.py +0 -0
  31. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/config.py +0 -0
  32. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/context.py +0 -0
  33. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_deinter_pc_f2/processor.py +0 -0
  34. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f3/config.py +0 -0
  35. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f3/context.py +0 -0
  36. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f3/processor.py +0 -0
  37. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f5/config.py +0 -0
  38. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f5/context.py +0 -0
  39. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f5/processor.py +0 -0
  40. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/fisf/config.py +0 -0
  41. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/fisf/context.py +0 -0
  42. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/fisf/processor.py +0 -0
  43. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/gg/config.py +0 -0
  44. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/gg/context.py +0 -0
  45. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/gg/processor.py +0 -0
  46. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/batch.py +0 -0
  47. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/caster.py +0 -0
  48. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/normalizer/__init__.py +0 -0
  49. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/normalizer/_factory.py +0 -0
  50. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/normalizer/_multi_normalizer.py +0 -0
  51. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/normalizer/_normalization_param.py +0 -0
  52. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/normalizer/_single_normalizer.py +0 -0
  53. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/__init__.py +0 -0
  54. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/_patch_collection.py +0 -0
  55. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/_patch_position.py +0 -0
  56. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/_patcher.py +0 -0
  57. {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/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.6.0
3
+ Version: 2.6.1
4
4
  Summary: lib for pms nvidia processors
5
5
  Author: HyeongSeok Kim
6
6
  Author-email: tiryul@gmail.com
@@ -29,4 +29,4 @@ __all__: list[str] = [
29
29
  "CDRUF2Processor",
30
30
  ]
31
31
 
32
- __version__ = "2.6.0"
32
+ __version__ = "2.6.1"
@@ -6,11 +6,11 @@ class ColEnConfig:
6
6
  NUMBER_OF_INPUT_CHANNELS: int = 3 * NUMBER_OF_FRAMES
7
7
  NUMBER_OF_OUTPUT_CHANNELS: int = 3
8
8
  UPSCALE_RATIO: int = 1
9
- PATCH_SIZE = 1536
9
+ PATCH_SIZE = 1280
10
10
  MAX_BATCH_SIZE = 1
11
11
  MIN_BATCH_SIZE = 1
12
12
  OPT_BATCH_SIZE = 1
13
- INPUT_OVERLAB_LENGTH = PATCH_SIZE // 2
13
+ INPUT_OVERLAB_LENGTH = 640 # PATCH_SIZE // 2
14
14
 
15
15
  PATCHER_CONFIG = PatcherWIOConfig(
16
16
  patch_size=PATCH_SIZE,
@@ -0,0 +1,361 @@
1
+ import os
2
+ import tempfile as tf
3
+ import pms_tensorrt as trt
4
+ import pms_model_manager as pmm
5
+ from ..processor.dpir.config import DPIRConfig
6
+ from ..processor.dru_asm_sr_f3.config import DRUASMSRF3Config
7
+ from ..processor.dru_rbpn_deinter_f3_gloss.config import (
8
+ DRURBPNDEINTERF3GLOSSConfig,
9
+ )
10
+ from ..processor.dru_rbpn_deinter_pc_f2.config import (
11
+ DRURBPNDEINTERPCF2Config,
12
+ )
13
+ from ..processor.dru_rbpn_sr_f3.config import DRURBPNSRF3Config
14
+ from ..processor.dru_rbpn_sr_f5.config import DRURBPNSRF5Config
15
+ from ..processor.color_resnet.config import (
16
+ ColorResnetPostConfig,
17
+ ColorResnetPreConfig,
18
+ )
19
+ from ..processor.fisf.config import FISFConfig
20
+ from ..processor.gg.config import GGConfig
21
+ from ..processor.col_en.config import ColEnConfig
22
+ from ..processor.cdru_f2.config import CDRUF2Config
23
+
24
+ __MODEL_CONFIG_MAP = {
25
+ "DPIR": DPIRConfig,
26
+ "DRU-RBPN-SR-F3": DRURBPNSRF3Config,
27
+ "DRU-RBPN-SR-F5": DRURBPNSRF5Config,
28
+ "DRU-ASM-SR-F3": DRUASMSRF3Config,
29
+ "DRU-RBPN-DEINTER-F3-GLOSS": DRURBPNDEINTERF3GLOSSConfig,
30
+ "DRU-RBPN-DEINTER-PC-F2": DRURBPNDEINTERPCF2Config,
31
+ "FISF": FISFConfig,
32
+ "COLOR-RESNET-PRE": ColorResnetPreConfig,
33
+ "COLOR-RESNET-POST": ColorResnetPostConfig,
34
+ "GG": GGConfig,
35
+ "COL-EN": ColEnConfig,
36
+ "CDRU-F2": CDRUF2Config,
37
+ }
38
+
39
+
40
+ def create_build_params(
41
+ model_name: str,
42
+ device: int = 0,
43
+ downlaod_model_alias="newest",
44
+ ): # -> dict[str, Any]:
45
+ import pms_tensorrt as trt
46
+
47
+ assert (
48
+ model_name in __MODEL_CONFIG_MAP
49
+ ), f"ERROR!, model_name={model_name} is not in the list. {__MODEL_CONFIG_MAP.keys()}"
50
+ params: dict = {
51
+ "model_name": model_name,
52
+ "device": device,
53
+ "downlaod_model_alias": downlaod_model_alias,
54
+ }
55
+ config = __MODEL_CONFIG_MAP[model_name]
56
+ if config is FISFConfig:
57
+ params.update(
58
+ {
59
+ "build_config_flags": [],
60
+ "shape_profile": {
61
+ "input0": {
62
+ "min_shape": [
63
+ config.MIN_BATCH_SIZE,
64
+ *config.TRT_CONFIG.input_shape,
65
+ ],
66
+ "opt_shape": [
67
+ config.OPT_BATCH_SIZE,
68
+ *config.TRT_CONFIG.input_shape,
69
+ ],
70
+ "max_shape": [
71
+ config.MAX_BATCH_SIZE,
72
+ *config.TRT_CONFIG.input_shape,
73
+ ],
74
+ },
75
+ "input1": {
76
+ "min_shape": [
77
+ config.MIN_BATCH_SIZE,
78
+ *config.TRT_CONFIG.input_shape,
79
+ ],
80
+ "opt_shape": [
81
+ config.OPT_BATCH_SIZE,
82
+ *config.TRT_CONFIG.input_shape,
83
+ ],
84
+ "max_shape": [
85
+ config.MAX_BATCH_SIZE,
86
+ *config.TRT_CONFIG.input_shape,
87
+ ],
88
+ },
89
+ "output": {
90
+ "min_shape": [
91
+ config.MIN_BATCH_SIZE,
92
+ *config.TRT_CONFIG.output_shape,
93
+ ],
94
+ "opt_shape": [
95
+ config.OPT_BATCH_SIZE,
96
+ *config.TRT_CONFIG.output_shape,
97
+ ],
98
+ "max_shape": [
99
+ config.MAX_BATCH_SIZE,
100
+ *config.TRT_CONFIG.output_shape,
101
+ ],
102
+ },
103
+ },
104
+ }
105
+ )
106
+ elif config is ColorResnetPreConfig:
107
+ params.update(
108
+ {
109
+ "build_config_flags": [],
110
+ "shape_profile": {
111
+ "input": {
112
+ "min_shape": [
113
+ config.MIN_BATCH_SIZE,
114
+ *config.TRT_SHAPE_INPUT,
115
+ ],
116
+ "opt_shape": [
117
+ config.OPT_BATCH_SIZE,
118
+ *config.TRT_SHAPE_INPUT,
119
+ ],
120
+ "max_shape": [
121
+ config.MAX_BATCH_SIZE,
122
+ *config.TRT_SHAPE_INPUT,
123
+ ],
124
+ },
125
+ "output": {
126
+ "min_shape": [
127
+ config.MIN_BATCH_SIZE,
128
+ *config.TRT_SHAPE_OUTPUT,
129
+ ],
130
+ "opt_shape": [
131
+ config.OPT_BATCH_SIZE,
132
+ *config.TRT_SHAPE_OUTPUT,
133
+ ],
134
+ "max_shape": [
135
+ config.MAX_BATCH_SIZE,
136
+ *config.TRT_SHAPE_OUTPUT,
137
+ ],
138
+ },
139
+ },
140
+ }
141
+ )
142
+ elif config is ColorResnetPostConfig:
143
+ params.update(
144
+ {
145
+ "build_config_flags": [],
146
+ "shape_profile": {
147
+ "input": {
148
+ "min_shape": [
149
+ config.MIN_BATCH_SIZE,
150
+ *config.TRT_CONFIG.input_shape,
151
+ ],
152
+ "opt_shape": [
153
+ config.OPT_BATCH_SIZE,
154
+ *config.TRT_CONFIG.input_shape,
155
+ ],
156
+ "max_shape": [
157
+ config.MAX_BATCH_SIZE,
158
+ *config.TRT_CONFIG.input_shape,
159
+ ],
160
+ },
161
+ "model_output": {
162
+ "min_shape": [
163
+ config.MIN_BATCH_SIZE,
164
+ *config.TRT_SHAPE_MODEL_OUTPUT,
165
+ ],
166
+ "opt_shape": [
167
+ config.MIN_BATCH_SIZE,
168
+ *config.TRT_SHAPE_MODEL_OUTPUT,
169
+ ],
170
+ "max_shape": [
171
+ config.MIN_BATCH_SIZE,
172
+ *config.TRT_SHAPE_MODEL_OUTPUT,
173
+ ],
174
+ },
175
+ "output": {
176
+ "min_shape": [
177
+ config.MIN_BATCH_SIZE,
178
+ *config.TRT_CONFIG.output_shape,
179
+ ],
180
+ "opt_shape": [
181
+ config.OPT_BATCH_SIZE,
182
+ *config.TRT_CONFIG.output_shape,
183
+ ],
184
+ "max_shape": [
185
+ config.MAX_BATCH_SIZE,
186
+ *config.TRT_CONFIG.output_shape,
187
+ ],
188
+ },
189
+ },
190
+ }
191
+ )
192
+ elif config is GGConfig:
193
+ params.update(
194
+ {
195
+ "build_config_flags": [],
196
+ "shape_profile": {
197
+ "input_image": {
198
+ "min_shape": [
199
+ config.MIN_BATCH_SIZE,
200
+ *config.TRT_CONFIG.input_shape,
201
+ ],
202
+ "opt_shape": [
203
+ config.OPT_BATCH_SIZE,
204
+ *config.TRT_CONFIG.input_shape,
205
+ ],
206
+ "max_shape": [
207
+ config.MAX_BATCH_SIZE,
208
+ *config.TRT_CONFIG.input_shape,
209
+ ],
210
+ },
211
+ "grain_level": {
212
+ "min_shape": [config.MIN_BATCH_SIZE, 1, 1, 1],
213
+ "opt_shape": [config.OPT_BATCH_SIZE, 1, 1, 1],
214
+ "max_shape": [config.MAX_BATCH_SIZE, 1, 1, 1],
215
+ },
216
+ "grain_noise": {
217
+ "min_shape": [
218
+ config.MIN_BATCH_SIZE,
219
+ *config.TRT_CONFIG.input_shape,
220
+ ],
221
+ "opt_shape": [
222
+ config.OPT_BATCH_SIZE,
223
+ *config.TRT_CONFIG.input_shape,
224
+ ],
225
+ "max_shape": [
226
+ config.MAX_BATCH_SIZE,
227
+ *config.TRT_CONFIG.input_shape,
228
+ ],
229
+ },
230
+ "output": {
231
+ "min_shape": [
232
+ config.MIN_BATCH_SIZE,
233
+ *config.TRT_CONFIG.output_shape,
234
+ ],
235
+ "opt_shape": [
236
+ config.OPT_BATCH_SIZE,
237
+ *config.TRT_CONFIG.output_shape,
238
+ ],
239
+ "max_shape": [
240
+ config.MAX_BATCH_SIZE,
241
+ *config.TRT_CONFIG.output_shape,
242
+ ],
243
+ },
244
+ },
245
+ }
246
+ )
247
+ else:
248
+ params.update(
249
+ {
250
+ "build_config_flags": [
251
+ trt.TRTBuilderFlag.FP16,
252
+ ],
253
+ "shape_profile": {
254
+ "input": {
255
+ "min_shape": [
256
+ config.MIN_BATCH_SIZE,
257
+ *config.TRT_CONFIG.input_shape,
258
+ ],
259
+ "opt_shape": [
260
+ config.OPT_BATCH_SIZE,
261
+ *config.TRT_CONFIG.input_shape,
262
+ ],
263
+ "max_shape": [
264
+ config.MAX_BATCH_SIZE,
265
+ *config.TRT_CONFIG.input_shape,
266
+ ],
267
+ },
268
+ "output": {
269
+ "min_shape": [
270
+ config.MIN_BATCH_SIZE,
271
+ *config.TRT_CONFIG.output_shape,
272
+ ],
273
+ "opt_shape": [
274
+ config.OPT_BATCH_SIZE,
275
+ *config.TRT_CONFIG.output_shape,
276
+ ],
277
+ "max_shape": [
278
+ config.MAX_BATCH_SIZE,
279
+ *config.TRT_CONFIG.output_shape,
280
+ ],
281
+ },
282
+ },
283
+ }
284
+ )
285
+ return params
286
+
287
+
288
+ def build_and_upload_plan(
289
+ model_name: str,
290
+ shape_profile: dict[str, dict[str, list[int]]],
291
+ build_config_flags: list[trt.TRTBuilderFlag],
292
+ device: int = 0,
293
+ onnx_model_file_name="model.onnx",
294
+ plan_model_file_name="model.plan",
295
+ downlaod_model_alias="newest",
296
+ ):
297
+ download_model_name = f"{model_name}#onnx"
298
+ device_name = "nvidia-" + "-".join(
299
+ s for s in trt.get_device_list()[0].split(":")[1].lower().split(" ")[2:-1]
300
+ )
301
+ if device_name.endswith("-d"):
302
+ device_name = device_name[:-2]
303
+ upload_model_name = f"{model_name}#{device_name}"
304
+ upload_model_alias = "newest"
305
+
306
+ number_of_devices = trt.get_device_count()
307
+ assert number_of_devices > 0, "There is no NVIDIA GPUs."
308
+ assert number_of_devices > device, f"device {device} is not exist."
309
+ assert device > -1, f"device_id {device} is not exist."
310
+ os.environ["CUDA_VISIBLE_DEVICES"] = str(device)
311
+
312
+ upload_tag = {
313
+ f"{io_name}.{shape_name}": str(shape_profile[io_name][shape_name])
314
+ for io_name in shape_profile
315
+ for shape_name in shape_profile[io_name]
316
+ }
317
+ for flag in build_config_flags:
318
+ upload_tag.update({flag.name: ""})
319
+ print(upload_tag)
320
+ with tf.TemporaryDirectory() as temp_dir:
321
+ print(f"Temporary Directory is {temp_dir}")
322
+ model_manager = pmm.ModelManager(temp_dir)
323
+ model_manager.download(
324
+ model_name=download_model_name, alias=downlaod_model_alias
325
+ )
326
+ meta_data = pmm.MLFlowModel.load_metadata(
327
+ model_manager.get_metadata_path(
328
+ model_name=download_model_name, alias=downlaod_model_alias
329
+ )
330
+ )
331
+ upload_tag["source_version"] = str(meta_data["version"])
332
+ upload_tag["source_aliases"] = str(meta_data["aliases"])
333
+ upload_tag["source_run_id"] = str(meta_data["run_id"])
334
+ model_onnx_dir = model_manager.get_local_model_dir(
335
+ model_name=download_model_name,
336
+ alias=downlaod_model_alias,
337
+ )
338
+ model_plan_dir = model_manager.get_local_model_dir(
339
+ model_name=upload_model_name,
340
+ alias=upload_model_alias,
341
+ )
342
+ os.makedirs(model_plan_dir, exist_ok=False)
343
+ onnx_model_path = os.path.join(model_onnx_dir, onnx_model_file_name)
344
+ plan_model_path = os.path.join(model_plan_dir, plan_model_file_name)
345
+ builder = trt.EngineBuilder()
346
+ builder.build_from_onnx(
347
+ onnx_path=onnx_model_path,
348
+ plan_path=plan_model_path,
349
+ config_flags=build_config_flags,
350
+ shape_profiles=[
351
+ trt.ShapeProfile(name=io_name, **shape_profile[io_name])
352
+ for io_name in shape_profile
353
+ ],
354
+ )
355
+ os.system(f"ls {os.path.dirname(plan_model_path)}")
356
+ model_manager.upload(
357
+ model_name=upload_model_name,
358
+ model_dir=model_plan_dir,
359
+ aliases=[upload_model_alias],
360
+ tag=upload_tag,
361
+ )
@@ -32,7 +32,7 @@ class PatcherW:
32
32
  self._input_overlap_length = input_overlap_length
33
33
 
34
34
  self._patch_pos_list = self._get_patch_pos_list()
35
- self._weight_mask = self._make_weight_mask(output_patch_shape)
35
+ self._weight_mask = self._make_hanning_weight_mask(output_patch_shape)
36
36
 
37
37
  def _get_patch_pos_list(self):
38
38
  input_vector_width = self._input_vector_shape[1]
@@ -52,7 +52,7 @@ class PatcherW:
52
52
  patchs.append((slice(y0, y1), slice(x0, x1)))
53
53
  return patchs
54
54
 
55
- def _make_weight_mask(
55
+ def _make_gaussian_weight_mask(
56
56
  self,
57
57
  shape: tuple[int, int, int],
58
58
  min_val=0.0,
@@ -63,7 +63,6 @@ class PatcherW:
63
63
  h, w: 패치 높이/너비
64
64
  sigma_scale: 중심에서 분포하는 정도 (0.25이면 가우시안 표준편차가 크기 대비 1/4)
65
65
  """
66
- import cv2
67
66
 
68
67
  h, w, c = shape
69
68
  y = np.linspace(-1, 1, h)
@@ -75,12 +74,44 @@ class PatcherW:
75
74
  np.subtract(weights, weights.min(), out=weights)
76
75
  np.divide(weights, weights.max(), out=weights)
77
76
  weights = weights * (max_val - min_val) + min_val
78
- cv2.imwrite(
79
- "/home/hskim/pms-nvidia-processor/.pytest_cache/weights.png",
80
- (weights * 255).astype(np.uint8),
81
- )
82
- return weights.astype(np.float32)[:, :, None] # type cast and add dimension
83
- # return np.stack([weights for _ in range(c)], axis=-1, dtype=np.float32)
77
+ return weights.astype(np.float32)[:, :, None]
78
+
79
+ def _make_hanning_weight_mask(
80
+ self,
81
+ shape: tuple[int, int, int],
82
+ min_val=0.0,
83
+ max_val=1.0,
84
+ ):
85
+ """
86
+ Hanning window 기반의 weight mask를 생성합니다.
87
+
88
+ Parameters:
89
+ shape (tuple[int, int, int]): (h, w, c) - 패치의 높이, 너비, 채널 수
90
+ min_val (float): weight의 최소값 (스케일 조정용)
91
+ max_val (float): weight의 최대값 (스케일 조정용)
92
+
93
+ Returns:
94
+ np.ndarray: shape = (h, w, c), float32 타입의 Hanning weight mask
95
+ """
96
+ h, w, c = shape
97
+
98
+ hann_y = np.hanning(h)
99
+ hann_x = np.hanning(w)
100
+ hann_2d = np.outer(hann_y, hann_x).astype(np.float32)
101
+ # import cv2
102
+ # cv2.imwrite(
103
+ # ".pytest_cache/hanning_wight_mask.png", (hann_2d * 255).astype(np.uint8)
104
+ # )
105
+
106
+ # 정규화 및 스케일 조정
107
+ # hann_2d -= hann_2d.min()
108
+ # hann_2d /= hann_2d.max()
109
+ # hann_2d = hann_2d * (max_val - min_val) + min_val
110
+
111
+ # (h, w, 1)로 reshape
112
+ weight = hann_2d[:, :, None]
113
+
114
+ return weight.astype(np.float32)
84
115
 
85
116
  def slice(self, input_vector: np.ndarray) -> list[np.ndarray]:
86
117
  patchs = []
@@ -0,0 +1,76 @@
1
+ import subprocess
2
+ import tomllib # Python 3.11+
3
+ import re
4
+ from pathlib import Path
5
+ from packaging.version import Version
6
+
7
+
8
+ def get_pip_list_from_poetry_lock(direcotry: str) -> list[str]:
9
+ req_txt = subprocess.check_output(
10
+ [
11
+ "poetry",
12
+ "export",
13
+ "--direcotry",
14
+ direcotry,
15
+ "--without-hashes",
16
+ "-f",
17
+ "requirements.txt",
18
+ ],
19
+ text=True,
20
+ )
21
+ pip_packages = [
22
+ line.strip()
23
+ for line in req_txt.splitlines()
24
+ if line.strip() and not line.startswith("#")
25
+ ]
26
+ return pip_packages
27
+
28
+
29
+ def _convert_caret_version(ver: str) -> str:
30
+ try:
31
+ v = Version(ver.strip("^"))
32
+ if v.major > 0:
33
+ return f">={v},<{v.major + 1}.0.0"
34
+ else:
35
+ return f">={v},<{v.major}.{v.minor + 1}.0"
36
+ except Exception:
37
+ return ver # fallback
38
+
39
+
40
+ def _convert_tilde_version(ver: str) -> str:
41
+ try:
42
+ v = Version(ver.strip("~"))
43
+ return f">={v},<{v.major}.{v.minor + 1}.0"
44
+ except Exception:
45
+ return ver
46
+
47
+
48
+ def _format_dependancy(pkg, ver):
49
+ if isinstance(ver, str):
50
+ ver = ver.strip()
51
+ if ver in {"*", ""} or "*" in ver:
52
+ return pkg
53
+ elif ver.startswith("^"):
54
+ return f"{pkg}{_convert_caret_version(ver)}"
55
+ elif ver.startswith("~"):
56
+ return f"{pkg}{_convert_tilde_version(ver)}"
57
+ else:
58
+ return f"{pkg}{ver}"
59
+ else:
60
+ return pkg # 복잡한 경우 이름만
61
+
62
+
63
+ def get_pip_list_from_pyproject_toml(pyproject_path: str) -> list[str]:
64
+ with open(pyproject_path, "rb") as f:
65
+ pyproject = tomllib.load(f)
66
+
67
+ poetry_tool = pyproject.get("tool", {}).get("poetry", {})
68
+ dependencies = poetry_tool.get("dependencies", {})
69
+
70
+ # python 자체는 제외
71
+ deps = [
72
+ _format_dependancy(pkg, ver)
73
+ for pkg, ver in dependencies.items()
74
+ if pkg.lower() != "python"
75
+ ]
76
+ return deps
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pms-nvidia-processor"
3
- version = "2.6.0"
3
+ version = "2.6.1"
4
4
  description = "lib for pms nvidia processors"
5
5
  authors = ["HyeongSeok Kim <tiryul@gmail.com>"]
6
6
  readme = "README.md"