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.
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/PKG-INFO +1 -1
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/__init__.py +1 -1
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/col_en/config.py +2 -2
- pms_nvidia_processor-2.6.1/pms_nvidia_processor/utility/builder.py +361 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/_patcher_w.py +40 -9
- pms_nvidia_processor-2.6.1/pms_nvidia_processor/utility/pip.py +76 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pyproject.toml +1 -1
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/README.md +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/base/config.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/base/dependency.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/base/logger.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/base/processor.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/cdru_f2/config.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/cdru_f2/context.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/cdru_f2/processor.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/col_en/context.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/col_en/processor.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/color_resnet/config.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/color_resnet/context.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/color_resnet/processor_post.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/color_resnet/processor_pre.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dpir/config.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dpir/context.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dpir/processor.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_asm_sr_f3/config.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_asm_sr_f3/context.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_asm_sr_f3/processor.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f3/config.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f3/context.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f3/processor.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f5/config.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f5/context.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/dru_rbpn_sr_f5/processor.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/fisf/config.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/fisf/context.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/fisf/processor.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/gg/config.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/gg/context.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/processor/gg/processor.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/batch.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/caster.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/normalizer/__init__.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/normalizer/_factory.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/normalizer/_multi_normalizer.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/normalizer/_normalization_param.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/normalizer/_single_normalizer.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/__init__.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/_patch_collection.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/_patch_position.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/_patcher.py +0 -0
- {pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/patcher/_patcher_v2.py +0 -0
|
@@ -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 =
|
|
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.
|
|
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
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/batch.py
RENAMED
|
File without changes
|
{pms_nvidia_processor-2.6.0 → pms_nvidia_processor-2.6.1}/pms_nvidia_processor/utility/caster.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|