tf-models-nightly 2.14.0.dev20231112__py2.py3-none-any.whl → 2.14.0.dev20231114__py2.py3-none-any.whl
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.
- official/projects/yolo/dataloaders/classification_input.py +18 -0
- official/projects/yolo/serving/export_module_factory.py +1 -1
- orbit/actions/export_saved_model.py +13 -3
- orbit/actions/export_saved_model_test.py +5 -0
- {tf_models_nightly-2.14.0.dev20231112.dist-info → tf_models_nightly-2.14.0.dev20231114.dist-info}/METADATA +1 -1
- {tf_models_nightly-2.14.0.dev20231112.dist-info → tf_models_nightly-2.14.0.dev20231114.dist-info}/RECORD +10 -10
- {tf_models_nightly-2.14.0.dev20231112.dist-info → tf_models_nightly-2.14.0.dev20231114.dist-info}/AUTHORS +0 -0
- {tf_models_nightly-2.14.0.dev20231112.dist-info → tf_models_nightly-2.14.0.dev20231114.dist-info}/LICENSE +0 -0
- {tf_models_nightly-2.14.0.dev20231112.dist-info → tf_models_nightly-2.14.0.dev20231114.dist-info}/WHEEL +0 -0
- {tf_models_nightly-2.14.0.dev20231112.dist-info → tf_models_nightly-2.14.0.dev20231114.dist-info}/top_level.txt +0 -0
@@ -13,6 +13,8 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
"""Classification decoder and parser."""
|
16
|
+
from typing import List
|
17
|
+
|
16
18
|
import tensorflow as tf, tf_keras
|
17
19
|
from official.vision.dataloaders import classification_input
|
18
20
|
from official.vision.ops import preprocess_ops
|
@@ -90,3 +92,19 @@ class Parser(classification_input.Parser):
|
|
90
92
|
image = tf.image.convert_image_dtype(image, self._dtype)
|
91
93
|
image = image / 255.0
|
92
94
|
return image
|
95
|
+
|
96
|
+
@classmethod
|
97
|
+
def inference_fn(
|
98
|
+
cls, image: tf.Tensor, input_image_size: List[int], num_channels: int = 3
|
99
|
+
) -> tf.Tensor:
|
100
|
+
"""Builds image model inputs for serving."""
|
101
|
+
|
102
|
+
image = tf.cast(image, dtype=tf.float32)
|
103
|
+
image = preprocess_ops.center_crop_image(image)
|
104
|
+
image = tf.image.resize(
|
105
|
+
image, input_image_size, method=tf.image.ResizeMethod.BILINEAR
|
106
|
+
)
|
107
|
+
|
108
|
+
image.set_shape(input_image_size + [num_channels])
|
109
|
+
image = image / 255.0
|
110
|
+
return image
|
@@ -23,11 +23,11 @@ from official.core import export_base
|
|
23
23
|
from official.projects.yolo.configs import darknet_classification
|
24
24
|
from official.projects.yolo.configs import yolo
|
25
25
|
from official.projects.yolo.configs import yolov7
|
26
|
+
from official.projects.yolo.dataloaders import classification_input
|
26
27
|
from official.projects.yolo.modeling import factory as yolo_factory
|
27
28
|
from official.projects.yolo.modeling.backbones import darknet # pylint: disable=unused-import
|
28
29
|
from official.projects.yolo.modeling.decoders import yolo_decoder # pylint: disable=unused-import
|
29
30
|
from official.projects.yolo.serving import model_fn as yolo_model_fn
|
30
|
-
from official.vision.dataloaders import classification_input
|
31
31
|
from official.vision.modeling import factory
|
32
32
|
from official.vision.serving import export_utils
|
33
33
|
|
@@ -22,6 +22,16 @@ from typing import Callable, Optional
|
|
22
22
|
import tensorflow as tf, tf_keras
|
23
23
|
|
24
24
|
|
25
|
+
_GS_PREFIX = r'gs://' # Google Cloud Storage Prefix
|
26
|
+
|
27
|
+
|
28
|
+
def safe_normpath(path: str) -> str:
|
29
|
+
"""Normalize path safely to get around gfile.glob limitations."""
|
30
|
+
if path.startswith(_GS_PREFIX):
|
31
|
+
return _GS_PREFIX + os.path.normpath(path[len(_GS_PREFIX):])
|
32
|
+
return os.path.normpath(path)
|
33
|
+
|
34
|
+
|
25
35
|
def _id_key(filename):
|
26
36
|
_, id_num = filename.rsplit('-', maxsplit=1)
|
27
37
|
return int(id_num)
|
@@ -84,7 +94,7 @@ class ExportFileManager:
|
|
84
94
|
{base_name}-{id}. Then the file manager will manage
|
85
95
|
{base_name}-{id}/{subdirectory} files.
|
86
96
|
"""
|
87
|
-
self._base_name =
|
97
|
+
self._base_name = safe_normpath(base_name)
|
88
98
|
self._max_to_keep = max_to_keep
|
89
99
|
self._next_id_fn = next_id_fn or _CounterIdFn(self._base_name)
|
90
100
|
self._subdirectory = subdirectory or ''
|
@@ -100,7 +110,7 @@ class ExportFileManager:
|
|
100
110
|
"""
|
101
111
|
files = _find_managed_files(self._base_name)
|
102
112
|
return [
|
103
|
-
|
113
|
+
safe_normpath(os.path.join(f, self._subdirectory)) for f in files
|
104
114
|
]
|
105
115
|
|
106
116
|
def clean_up(self):
|
@@ -119,7 +129,7 @@ class ExportFileManager:
|
|
119
129
|
def next_name(self) -> str:
|
120
130
|
"""Returns a new file name based on `base_name` and `next_id_fn()`."""
|
121
131
|
base_path = f'{self._base_name}-{self._next_id_fn()}'
|
122
|
-
return
|
132
|
+
return safe_normpath(os.path.join(base_path, self._subdirectory))
|
123
133
|
|
124
134
|
|
125
135
|
class ExportSavedModel:
|
@@ -17,6 +17,7 @@
|
|
17
17
|
import os
|
18
18
|
|
19
19
|
from orbit import actions
|
20
|
+
from orbit.actions import export_saved_model
|
20
21
|
|
21
22
|
import tensorflow as tf, tf_keras
|
22
23
|
|
@@ -220,6 +221,10 @@ class ExportSavedModelTest(tf.test.TestCase):
|
|
220
221
|
reloaded_model = tf.saved_model.load(file_manager.managed_files[-1])
|
221
222
|
self.assertEqual(reloaded_model(), 7)
|
222
223
|
|
224
|
+
def test_safe_normpath_gs(self):
|
225
|
+
path = export_saved_model.safe_normpath('gs://foo//bar')
|
226
|
+
self.assertEqual(path, 'gs://foo/bar')
|
227
|
+
|
223
228
|
|
224
229
|
if __name__ == '__main__':
|
225
230
|
tf.test.main()
|
@@ -775,7 +775,7 @@ official/projects/yolo/configs/decoders.py,sha256=NRtd96kfDWgyxzZtd_zvbJ-UZWC_ra
|
|
775
775
|
official/projects/yolo/configs/yolo.py,sha256=S3Ct_MQOeMvs5PqE6_RSizk6BRSVuQbMq4rwdOqX1CY,18648
|
776
776
|
official/projects/yolo/configs/yolov7.py,sha256=ZjoMQSeBdESO8QirKSW9n4q0Is3toah0jTxlTwVAprY,12932
|
777
777
|
official/projects/yolo/dataloaders/__init__.py,sha256=wrNoNRP6wGQBFDLVCYB01k1HgwOGlQ8iZnfqimxlDyk,610
|
778
|
-
official/projects/yolo/dataloaders/classification_input.py,sha256=
|
778
|
+
official/projects/yolo/dataloaders/classification_input.py,sha256=LrSjUFywNn4r2q9BDg3-mg5QQ2uU0Tud7bDBsPTxw08,3800
|
779
779
|
official/projects/yolo/dataloaders/tf_example_decoder.py,sha256=NFmXcEJEHB9y_pr6VHNupwzXkhZnaWBqaf7Raypt-9E,4820
|
780
780
|
official/projects/yolo/dataloaders/yolo_input.py,sha256=1Jhw5pOOdonZyMlEA2JzCoWJ2g6MhZ4vEN3NG4_uaig,14616
|
781
781
|
official/projects/yolo/losses/__init__.py,sha256=1ToRMjre4mErL4Ek4_dMVxMjXNPossNXggV8fqbISao,609
|
@@ -827,7 +827,7 @@ official/projects/yolo/optimization/configs/__init__.py,sha256=1ToRMjre4mErL4Ek4
|
|
827
827
|
official/projects/yolo/optimization/configs/optimization_config.py,sha256=kl0F8qjqtgNbeuDH4mFxwna0Unm6bl49a6dfE4Z_s8A,2084
|
828
828
|
official/projects/yolo/optimization/configs/optimizer_config.py,sha256=F5qE0kaUxGk9dW5R_I3Ofp-Myd_T3i1-p1eJ58-O6KM,2283
|
829
829
|
official/projects/yolo/serving/__init__.py,sha256=1ToRMjre4mErL4Ek4_dMVxMjXNPossNXggV8fqbISao,609
|
830
|
-
official/projects/yolo/serving/export_module_factory.py,sha256=
|
830
|
+
official/projects/yolo/serving/export_module_factory.py,sha256=jx0LyHEaUNDv9IkjUN_uY1XTwhc5UlImWLuk5V0YkLw,9955
|
831
831
|
official/projects/yolo/serving/export_saved_model.py,sha256=wFjN6wAJ-ckNEtSTwMY6Kj4jDz7CSAytOqFy1AVCt7w,4584
|
832
832
|
official/projects/yolo/serving/export_tflite.py,sha256=Pt1rkKu9TxVYB8HtLadJQ_buWzNXqWL8Zp0TFDPUXzw,902
|
833
833
|
official/projects/yolo/serving/model_fn.py,sha256=_T28osfXUtnBU9GqULbJ6HMd44pJMRWYZfitjrhWnlo,3018
|
@@ -1134,8 +1134,8 @@ orbit/standard_runner_test.py,sha256=iNd9TJiZu0r74ukZhqBHrgfiXMhSbk2nTqT-369Vugg
|
|
1134
1134
|
orbit/actions/__init__.py,sha256=F3js6WTEprpgwo0mqJlGiaXJok85A1bZgRr0HZSGP0E,3327
|
1135
1135
|
orbit/actions/conditional_action.py,sha256=cEDxd3d61kmCjhOKxlPO7XE41W6chidW7VP0VvS0-aU,1988
|
1136
1136
|
orbit/actions/conditional_action_test.py,sha256=vjLolfB6qEHfu1JnC3LCqpZjRgdJG4XLsTVwbtsy6eA,1335
|
1137
|
-
orbit/actions/export_saved_model.py,sha256=
|
1138
|
-
orbit/actions/export_saved_model_test.py,sha256=
|
1137
|
+
orbit/actions/export_saved_model.py,sha256=fyGHRyD_b8vsj5qE5vclFNyEU9rbEsdGhBVI7OF4ITM,5834
|
1138
|
+
orbit/actions/export_saved_model_test.py,sha256=Xee3ZnaK3cFEwAFgu6JyPh9nL6I2JHnfgVwBD9BYvUY,8716
|
1139
1139
|
orbit/actions/new_best_metric.py,sha256=JgExcdxrUuFyoCYwZIkERfbYwbYrmDskfUNNnIpy1mA,8489
|
1140
1140
|
orbit/actions/new_best_metric_test.py,sha256=_FBHlxLHXNRMCpDbzJSorZUC4Jt93VeYjSMsh_Hz9lg,4024
|
1141
1141
|
orbit/actions/save_checkpoint_if_preempted.py,sha256=VdbCldR8qW7jvJndgebSBAw_Ss4DRqzo8JmmjGxklYw,2329
|
@@ -1158,9 +1158,9 @@ tensorflow_models/__init__.py,sha256=Ciz_YBke6teb6y42QyQTUBDdXJAiV7Qdu1zOoZvYiKw
|
|
1158
1158
|
tensorflow_models/tensorflow_models_test.py,sha256=qUBLFZg7rmKkVQ3cHJVlkoid8cPqjjyc2ZiWtjQO5_o,1395
|
1159
1159
|
tensorflow_models/nlp/__init__.py,sha256=3dULDpUBpDi9vljpXadq6oJrWH4y6z42Bz2d3hopYZw,807
|
1160
1160
|
tensorflow_models/vision/__init__.py,sha256=4y77XkHaH8qLls3-6ta4tMp3Xj8CLbB0ihH91HsQ9z4,833
|
1161
|
-
tf_models_nightly-2.14.0.
|
1162
|
-
tf_models_nightly-2.14.0.
|
1163
|
-
tf_models_nightly-2.14.0.
|
1164
|
-
tf_models_nightly-2.14.0.
|
1165
|
-
tf_models_nightly-2.14.0.
|
1166
|
-
tf_models_nightly-2.14.0.
|
1161
|
+
tf_models_nightly-2.14.0.dev20231114.dist-info/AUTHORS,sha256=1dG3fXVu9jlo7bul8xuix5F5vOnczMk7_yWn4y70uw0,337
|
1162
|
+
tf_models_nightly-2.14.0.dev20231114.dist-info/LICENSE,sha256=WxeBS_DejPZQabxtfMOM_xn8qoZNJDQjrT7z2wG1I4U,11512
|
1163
|
+
tf_models_nightly-2.14.0.dev20231114.dist-info/METADATA,sha256=iapp0upkgITxQsnBFx0Rfb0AYSu-OVgytPfKrv6Etdw,1414
|
1164
|
+
tf_models_nightly-2.14.0.dev20231114.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110
|
1165
|
+
tf_models_nightly-2.14.0.dev20231114.dist-info/top_level.txt,sha256=gum2FfO5R4cvjl2-QtP-S1aNmsvIZaFFT6VFzU0f4-g,33
|
1166
|
+
tf_models_nightly-2.14.0.dev20231114.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|