dtlpy 1.113.10__py3-none-any.whl → 1.114.13__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.
Files changed (243) hide show
  1. dtlpy/__init__.py +488 -488
  2. dtlpy/__version__.py +1 -1
  3. dtlpy/assets/__init__.py +26 -26
  4. dtlpy/assets/__pycache__/__init__.cpython-38.pyc +0 -0
  5. dtlpy/assets/code_server/config.yaml +2 -2
  6. dtlpy/assets/code_server/installation.sh +24 -24
  7. dtlpy/assets/code_server/launch.json +13 -13
  8. dtlpy/assets/code_server/settings.json +2 -2
  9. dtlpy/assets/main.py +53 -53
  10. dtlpy/assets/main_partial.py +18 -18
  11. dtlpy/assets/mock.json +11 -11
  12. dtlpy/assets/model_adapter.py +83 -83
  13. dtlpy/assets/package.json +61 -61
  14. dtlpy/assets/package_catalog.json +29 -29
  15. dtlpy/assets/package_gitignore +307 -307
  16. dtlpy/assets/service_runners/__init__.py +33 -33
  17. dtlpy/assets/service_runners/converter.py +96 -96
  18. dtlpy/assets/service_runners/multi_method.py +49 -49
  19. dtlpy/assets/service_runners/multi_method_annotation.py +54 -54
  20. dtlpy/assets/service_runners/multi_method_dataset.py +55 -55
  21. dtlpy/assets/service_runners/multi_method_item.py +52 -52
  22. dtlpy/assets/service_runners/multi_method_json.py +52 -52
  23. dtlpy/assets/service_runners/single_method.py +37 -37
  24. dtlpy/assets/service_runners/single_method_annotation.py +43 -43
  25. dtlpy/assets/service_runners/single_method_dataset.py +43 -43
  26. dtlpy/assets/service_runners/single_method_item.py +41 -41
  27. dtlpy/assets/service_runners/single_method_json.py +42 -42
  28. dtlpy/assets/service_runners/single_method_multi_input.py +45 -45
  29. dtlpy/assets/voc_annotation_template.xml +23 -23
  30. dtlpy/caches/base_cache.py +32 -32
  31. dtlpy/caches/cache.py +473 -473
  32. dtlpy/caches/dl_cache.py +201 -201
  33. dtlpy/caches/filesystem_cache.py +89 -89
  34. dtlpy/caches/redis_cache.py +84 -84
  35. dtlpy/dlp/__init__.py +20 -20
  36. dtlpy/dlp/cli_utilities.py +367 -367
  37. dtlpy/dlp/command_executor.py +764 -764
  38. dtlpy/dlp/dlp +1 -1
  39. dtlpy/dlp/dlp.bat +1 -1
  40. dtlpy/dlp/dlp.py +128 -128
  41. dtlpy/dlp/parser.py +651 -651
  42. dtlpy/entities/__init__.py +83 -83
  43. dtlpy/entities/analytic.py +311 -311
  44. dtlpy/entities/annotation.py +1879 -1879
  45. dtlpy/entities/annotation_collection.py +699 -699
  46. dtlpy/entities/annotation_definitions/__init__.py +20 -20
  47. dtlpy/entities/annotation_definitions/base_annotation_definition.py +100 -100
  48. dtlpy/entities/annotation_definitions/box.py +195 -195
  49. dtlpy/entities/annotation_definitions/classification.py +67 -67
  50. dtlpy/entities/annotation_definitions/comparison.py +72 -72
  51. dtlpy/entities/annotation_definitions/cube.py +204 -204
  52. dtlpy/entities/annotation_definitions/cube_3d.py +149 -149
  53. dtlpy/entities/annotation_definitions/description.py +32 -32
  54. dtlpy/entities/annotation_definitions/ellipse.py +124 -124
  55. dtlpy/entities/annotation_definitions/free_text.py +62 -62
  56. dtlpy/entities/annotation_definitions/gis.py +69 -69
  57. dtlpy/entities/annotation_definitions/note.py +139 -139
  58. dtlpy/entities/annotation_definitions/point.py +117 -117
  59. dtlpy/entities/annotation_definitions/polygon.py +182 -182
  60. dtlpy/entities/annotation_definitions/polyline.py +111 -111
  61. dtlpy/entities/annotation_definitions/pose.py +92 -92
  62. dtlpy/entities/annotation_definitions/ref_image.py +86 -86
  63. dtlpy/entities/annotation_definitions/segmentation.py +240 -240
  64. dtlpy/entities/annotation_definitions/subtitle.py +34 -34
  65. dtlpy/entities/annotation_definitions/text.py +85 -85
  66. dtlpy/entities/annotation_definitions/undefined_annotation.py +74 -74
  67. dtlpy/entities/app.py +220 -220
  68. dtlpy/entities/app_module.py +107 -107
  69. dtlpy/entities/artifact.py +174 -174
  70. dtlpy/entities/assignment.py +399 -399
  71. dtlpy/entities/base_entity.py +214 -214
  72. dtlpy/entities/bot.py +113 -113
  73. dtlpy/entities/codebase.py +296 -296
  74. dtlpy/entities/collection.py +38 -38
  75. dtlpy/entities/command.py +169 -169
  76. dtlpy/entities/compute.py +442 -442
  77. dtlpy/entities/dataset.py +1285 -1285
  78. dtlpy/entities/directory_tree.py +44 -44
  79. dtlpy/entities/dpk.py +470 -470
  80. dtlpy/entities/driver.py +222 -222
  81. dtlpy/entities/execution.py +397 -397
  82. dtlpy/entities/feature.py +124 -124
  83. dtlpy/entities/feature_set.py +145 -145
  84. dtlpy/entities/filters.py +641 -641
  85. dtlpy/entities/gis_item.py +107 -107
  86. dtlpy/entities/integration.py +184 -184
  87. dtlpy/entities/item.py +953 -953
  88. dtlpy/entities/label.py +123 -123
  89. dtlpy/entities/links.py +85 -85
  90. dtlpy/entities/message.py +175 -175
  91. dtlpy/entities/model.py +694 -691
  92. dtlpy/entities/node.py +1005 -1005
  93. dtlpy/entities/ontology.py +803 -803
  94. dtlpy/entities/organization.py +287 -287
  95. dtlpy/entities/package.py +657 -657
  96. dtlpy/entities/package_defaults.py +5 -5
  97. dtlpy/entities/package_function.py +185 -185
  98. dtlpy/entities/package_module.py +113 -113
  99. dtlpy/entities/package_slot.py +118 -118
  100. dtlpy/entities/paged_entities.py +290 -267
  101. dtlpy/entities/pipeline.py +593 -593
  102. dtlpy/entities/pipeline_execution.py +279 -279
  103. dtlpy/entities/project.py +394 -394
  104. dtlpy/entities/prompt_item.py +499 -499
  105. dtlpy/entities/recipe.py +301 -301
  106. dtlpy/entities/reflect_dict.py +102 -102
  107. dtlpy/entities/resource_execution.py +138 -138
  108. dtlpy/entities/service.py +958 -958
  109. dtlpy/entities/service_driver.py +117 -117
  110. dtlpy/entities/setting.py +294 -294
  111. dtlpy/entities/task.py +491 -491
  112. dtlpy/entities/time_series.py +143 -143
  113. dtlpy/entities/trigger.py +426 -426
  114. dtlpy/entities/user.py +118 -118
  115. dtlpy/entities/webhook.py +124 -124
  116. dtlpy/examples/__init__.py +19 -19
  117. dtlpy/examples/add_labels.py +135 -135
  118. dtlpy/examples/add_metadata_to_item.py +21 -21
  119. dtlpy/examples/annotate_items_using_model.py +65 -65
  120. dtlpy/examples/annotate_video_using_model_and_tracker.py +75 -75
  121. dtlpy/examples/annotations_convert_to_voc.py +9 -9
  122. dtlpy/examples/annotations_convert_to_yolo.py +9 -9
  123. dtlpy/examples/convert_annotation_types.py +51 -51
  124. dtlpy/examples/converter.py +143 -143
  125. dtlpy/examples/copy_annotations.py +22 -22
  126. dtlpy/examples/copy_folder.py +31 -31
  127. dtlpy/examples/create_annotations.py +51 -51
  128. dtlpy/examples/create_video_annotations.py +83 -83
  129. dtlpy/examples/delete_annotations.py +26 -26
  130. dtlpy/examples/filters.py +113 -113
  131. dtlpy/examples/move_item.py +23 -23
  132. dtlpy/examples/play_video_annotation.py +13 -13
  133. dtlpy/examples/show_item_and_mask.py +53 -53
  134. dtlpy/examples/triggers.py +49 -49
  135. dtlpy/examples/upload_batch_of_items.py +20 -20
  136. dtlpy/examples/upload_items_and_custom_format_annotations.py +55 -55
  137. dtlpy/examples/upload_items_with_modalities.py +43 -43
  138. dtlpy/examples/upload_segmentation_annotations_from_mask_image.py +44 -44
  139. dtlpy/examples/upload_yolo_format_annotations.py +70 -70
  140. dtlpy/exceptions.py +125 -125
  141. dtlpy/miscellaneous/__init__.py +20 -20
  142. dtlpy/miscellaneous/dict_differ.py +95 -95
  143. dtlpy/miscellaneous/git_utils.py +217 -217
  144. dtlpy/miscellaneous/json_utils.py +14 -14
  145. dtlpy/miscellaneous/list_print.py +105 -105
  146. dtlpy/miscellaneous/zipping.py +130 -130
  147. dtlpy/ml/__init__.py +20 -20
  148. dtlpy/ml/base_feature_extractor_adapter.py +27 -27
  149. dtlpy/ml/base_model_adapter.py +945 -940
  150. dtlpy/ml/metrics.py +461 -461
  151. dtlpy/ml/predictions_utils.py +274 -274
  152. dtlpy/ml/summary_writer.py +57 -57
  153. dtlpy/ml/train_utils.py +60 -60
  154. dtlpy/new_instance.py +252 -252
  155. dtlpy/repositories/__init__.py +56 -56
  156. dtlpy/repositories/analytics.py +85 -85
  157. dtlpy/repositories/annotations.py +916 -916
  158. dtlpy/repositories/apps.py +383 -383
  159. dtlpy/repositories/artifacts.py +452 -452
  160. dtlpy/repositories/assignments.py +599 -599
  161. dtlpy/repositories/bots.py +213 -213
  162. dtlpy/repositories/codebases.py +559 -559
  163. dtlpy/repositories/collections.py +332 -348
  164. dtlpy/repositories/commands.py +158 -158
  165. dtlpy/repositories/compositions.py +61 -61
  166. dtlpy/repositories/computes.py +434 -406
  167. dtlpy/repositories/datasets.py +1291 -1291
  168. dtlpy/repositories/downloader.py +895 -895
  169. dtlpy/repositories/dpks.py +433 -433
  170. dtlpy/repositories/drivers.py +266 -266
  171. dtlpy/repositories/executions.py +817 -817
  172. dtlpy/repositories/feature_sets.py +226 -226
  173. dtlpy/repositories/features.py +238 -238
  174. dtlpy/repositories/integrations.py +484 -484
  175. dtlpy/repositories/items.py +909 -915
  176. dtlpy/repositories/messages.py +94 -94
  177. dtlpy/repositories/models.py +877 -867
  178. dtlpy/repositories/nodes.py +80 -80
  179. dtlpy/repositories/ontologies.py +511 -511
  180. dtlpy/repositories/organizations.py +525 -525
  181. dtlpy/repositories/packages.py +1941 -1941
  182. dtlpy/repositories/pipeline_executions.py +448 -448
  183. dtlpy/repositories/pipelines.py +642 -642
  184. dtlpy/repositories/projects.py +539 -539
  185. dtlpy/repositories/recipes.py +399 -399
  186. dtlpy/repositories/resource_executions.py +137 -137
  187. dtlpy/repositories/schema.py +120 -120
  188. dtlpy/repositories/service_drivers.py +213 -213
  189. dtlpy/repositories/services.py +1704 -1704
  190. dtlpy/repositories/settings.py +339 -339
  191. dtlpy/repositories/tasks.py +1124 -1124
  192. dtlpy/repositories/times_series.py +278 -278
  193. dtlpy/repositories/triggers.py +536 -536
  194. dtlpy/repositories/upload_element.py +257 -257
  195. dtlpy/repositories/uploader.py +651 -651
  196. dtlpy/repositories/webhooks.py +249 -249
  197. dtlpy/services/__init__.py +22 -22
  198. dtlpy/services/aihttp_retry.py +131 -131
  199. dtlpy/services/api_client.py +1782 -1782
  200. dtlpy/services/api_reference.py +40 -40
  201. dtlpy/services/async_utils.py +133 -133
  202. dtlpy/services/calls_counter.py +44 -44
  203. dtlpy/services/check_sdk.py +68 -68
  204. dtlpy/services/cookie.py +115 -115
  205. dtlpy/services/create_logger.py +156 -156
  206. dtlpy/services/events.py +84 -84
  207. dtlpy/services/logins.py +235 -235
  208. dtlpy/services/reporter.py +256 -256
  209. dtlpy/services/service_defaults.py +91 -91
  210. dtlpy/utilities/__init__.py +20 -20
  211. dtlpy/utilities/annotations/__init__.py +16 -16
  212. dtlpy/utilities/annotations/annotation_converters.py +269 -269
  213. dtlpy/utilities/base_package_runner.py +264 -264
  214. dtlpy/utilities/converter.py +1650 -1650
  215. dtlpy/utilities/dataset_generators/__init__.py +1 -1
  216. dtlpy/utilities/dataset_generators/dataset_generator.py +670 -670
  217. dtlpy/utilities/dataset_generators/dataset_generator_tensorflow.py +23 -23
  218. dtlpy/utilities/dataset_generators/dataset_generator_torch.py +21 -21
  219. dtlpy/utilities/local_development/__init__.py +1 -1
  220. dtlpy/utilities/local_development/local_session.py +179 -179
  221. dtlpy/utilities/reports/__init__.py +2 -2
  222. dtlpy/utilities/reports/figures.py +343 -343
  223. dtlpy/utilities/reports/report.py +71 -71
  224. dtlpy/utilities/videos/__init__.py +17 -17
  225. dtlpy/utilities/videos/video_player.py +598 -598
  226. dtlpy/utilities/videos/videos.py +470 -470
  227. {dtlpy-1.113.10.data → dtlpy-1.114.13.data}/scripts/dlp +1 -1
  228. dtlpy-1.114.13.data/scripts/dlp.bat +2 -0
  229. {dtlpy-1.113.10.data → dtlpy-1.114.13.data}/scripts/dlp.py +128 -128
  230. {dtlpy-1.113.10.dist-info → dtlpy-1.114.13.dist-info}/LICENSE +200 -200
  231. {dtlpy-1.113.10.dist-info → dtlpy-1.114.13.dist-info}/METADATA +172 -172
  232. dtlpy-1.114.13.dist-info/RECORD +240 -0
  233. {dtlpy-1.113.10.dist-info → dtlpy-1.114.13.dist-info}/WHEEL +1 -1
  234. tests/features/environment.py +551 -550
  235. dtlpy-1.113.10.data/scripts/dlp.bat +0 -2
  236. dtlpy-1.113.10.dist-info/RECORD +0 -244
  237. tests/assets/__init__.py +0 -0
  238. tests/assets/models_flow/__init__.py +0 -0
  239. tests/assets/models_flow/failedmain.py +0 -52
  240. tests/assets/models_flow/main.py +0 -62
  241. tests/assets/models_flow/main_model.py +0 -54
  242. {dtlpy-1.113.10.dist-info → dtlpy-1.114.13.dist-info}/entry_points.txt +0 -0
  243. {dtlpy-1.113.10.dist-info → dtlpy-1.114.13.dist-info}/top_level.txt +0 -0
@@ -1,135 +1,135 @@
1
- def main(project_name, dataset_name):
2
- # Imports the SDK package
3
- import dtlpy as dl
4
-
5
- """
6
- Label dictionary format:
7
-
8
- {
9
- 'label_name': 'dog',
10
- 'displayLabel': 'Dog',
11
- 'attributes': ['list of attributes'],
12
- 'color': (34, 6, 231),
13
- 'children': ['list of label dictionaries']
14
- }
15
-
16
- """
17
-
18
- # prep
19
- project = dl.projects.get(project_name=project_name)
20
- dataset = project.datasets.get(dataset_name=dataset_name)
21
-
22
- #########################
23
- # View dataset's labels #
24
- #########################
25
- # as objects
26
- labels = dataset.labels
27
-
28
- # as instance map
29
- labels = dataset.instance_map
30
-
31
- ###############################
32
- # add label to dataset entity #
33
- ###############################
34
- dataset.add_label(label_name='Horse', color=(2, 43, 123))
35
-
36
- #############################
37
- # add label with sub-labels #
38
- #############################
39
- dataset.add_label(label_name='CEO', color=(2, 43, 123),
40
- children=[{'label_name': 'Manager',
41
- 'children': [{'label_name': 'Employee'}]}])
42
-
43
- ################################
44
- # add labels to dataset entity #
45
- ################################
46
- labels = [
47
- {'label_name': 'Dog',
48
- 'color': (34, 6, 231),
49
- 'children': [{'label_name': 'Puppy',
50
- 'color': (24, 16, 130)}]},
51
- {'label_name': 'Cat',
52
- 'color': (24, 25, 31),
53
- 'children': [{'label_name': 'Kitten',
54
- 'color': (124, 116, 140)}]}
55
- ]
56
- dataset.add_labels(label_list=labels)
57
-
58
- #################
59
- # Delete Labels #
60
- #################
61
- dataset.delete_labels(label_names=['Cat', 'Dog'])
62
-
63
- ########################################
64
- # Copy dataset labels to a new dataset #
65
- ########################################
66
- new_dataset = project.datasets.create(dataset_name='new_dataset_with_labels',
67
- labels=dataset.labels)
68
-
69
- ##########################################
70
- # Copy dataset ontology to a new dataset #
71
- ##########################################
72
- new_dataset = project.datasets.create(dataset_name='new_dataset_with_ontology',
73
- ontology_ids=dataset.ontology_ids)
74
-
75
- ##############################################
76
- # Copy dataset labels to an existing dataset #
77
- ##############################################
78
- new_dataset = project.datasets.create(dataset_name='new_dataset_without_labels')
79
-
80
- # Get from a list or recipes
81
- recipe = new_dataset.recipes.list()[0]
82
- # Or get recipe by id
83
- # recipe = new_dataset.recipes.get(recipe_id='recipe_id')
84
-
85
- # Get from the list of ontologies
86
- ontology = recipe.ontologies.list()[0]
87
- # Or get ontology by id
88
- # ontology = recipe.ontologies.get(ontology='ontology_id')
89
-
90
- # Add the labels to the dataset
91
- ontology.add_labels(label_list=dataset.labels)
92
- ontology.update()
93
-
94
- #########################################################
95
- # Copy dataset ontology to an existing dataset's recipe #
96
- #########################################################
97
- new_dataset = project.datasets.create(dataset_name='new_dataset_without_ontology')
98
- # get recipe
99
- new_dataset_recipe = new_dataset.recipes.list()[0]
100
- # Copy from a different dataset
101
- new_dataset_recipe.ontology_ids = dataset.ontology_ids
102
- # Update the new dataset
103
- new_dataset_recipe.update()
104
-
105
- ##########################
106
- # update existing recipe #
107
- ##########################
108
- # Get recipe from list
109
- recipe = dataset.recipes.list()[0]
110
- # Or get specific recipe:
111
- # recipe = dataset.recipes.get(recipe_id='id')
112
-
113
- # Get ontology from list
114
- ontology = recipe.ontologies.list()[0]
115
- # Or get specific ontology:
116
- # ontology = recipe.ontologies.get(ontology_id='id')
117
-
118
- # Add one label
119
- ontology.add_label(label_name='Lion', color=(35, 234, 123))
120
-
121
- # Add a list of labels
122
- labels = [{'label_name': 'Shark', 'color': (1, 1, 1)}, {'label_name': 'Whale', 'color': (34, 56, 7)},
123
- {'label_name': 'Dolphin', 'color': (100, 14, 150)}]
124
- ontology.add_labels(label_list=labels)
125
-
126
- # After adding - update ontology
127
- ontology.update()
128
-
129
- #####################
130
- # Create new recipe #
131
- #####################
132
- # Label list
133
- labels = [{'tag': 'Donkey', 'color': (1, 1, 1)}, {'tag': 'Mammoth', 'color': (34, 56, 7)},
134
- {'tag': 'Bird', 'color': (100, 14, 150)}]
135
- recipe = dataset.recipes.create(recipe_name='My Recipe', labels=labels)
1
+ def main(project_name, dataset_name):
2
+ # Imports the SDK package
3
+ import dtlpy as dl
4
+
5
+ """
6
+ Label dictionary format:
7
+
8
+ {
9
+ 'label_name': 'dog',
10
+ 'displayLabel': 'Dog',
11
+ 'attributes': ['list of attributes'],
12
+ 'color': (34, 6, 231),
13
+ 'children': ['list of label dictionaries']
14
+ }
15
+
16
+ """
17
+
18
+ # prep
19
+ project = dl.projects.get(project_name=project_name)
20
+ dataset = project.datasets.get(dataset_name=dataset_name)
21
+
22
+ #########################
23
+ # View dataset's labels #
24
+ #########################
25
+ # as objects
26
+ labels = dataset.labels
27
+
28
+ # as instance map
29
+ labels = dataset.instance_map
30
+
31
+ ###############################
32
+ # add label to dataset entity #
33
+ ###############################
34
+ dataset.add_label(label_name='Horse', color=(2, 43, 123))
35
+
36
+ #############################
37
+ # add label with sub-labels #
38
+ #############################
39
+ dataset.add_label(label_name='CEO', color=(2, 43, 123),
40
+ children=[{'label_name': 'Manager',
41
+ 'children': [{'label_name': 'Employee'}]}])
42
+
43
+ ################################
44
+ # add labels to dataset entity #
45
+ ################################
46
+ labels = [
47
+ {'label_name': 'Dog',
48
+ 'color': (34, 6, 231),
49
+ 'children': [{'label_name': 'Puppy',
50
+ 'color': (24, 16, 130)}]},
51
+ {'label_name': 'Cat',
52
+ 'color': (24, 25, 31),
53
+ 'children': [{'label_name': 'Kitten',
54
+ 'color': (124, 116, 140)}]}
55
+ ]
56
+ dataset.add_labels(label_list=labels)
57
+
58
+ #################
59
+ # Delete Labels #
60
+ #################
61
+ dataset.delete_labels(label_names=['Cat', 'Dog'])
62
+
63
+ ########################################
64
+ # Copy dataset labels to a new dataset #
65
+ ########################################
66
+ new_dataset = project.datasets.create(dataset_name='new_dataset_with_labels',
67
+ labels=dataset.labels)
68
+
69
+ ##########################################
70
+ # Copy dataset ontology to a new dataset #
71
+ ##########################################
72
+ new_dataset = project.datasets.create(dataset_name='new_dataset_with_ontology',
73
+ ontology_ids=dataset.ontology_ids)
74
+
75
+ ##############################################
76
+ # Copy dataset labels to an existing dataset #
77
+ ##############################################
78
+ new_dataset = project.datasets.create(dataset_name='new_dataset_without_labels')
79
+
80
+ # Get from a list or recipes
81
+ recipe = new_dataset.recipes.list()[0]
82
+ # Or get recipe by id
83
+ # recipe = new_dataset.recipes.get(recipe_id='recipe_id')
84
+
85
+ # Get from the list of ontologies
86
+ ontology = recipe.ontologies.list()[0]
87
+ # Or get ontology by id
88
+ # ontology = recipe.ontologies.get(ontology='ontology_id')
89
+
90
+ # Add the labels to the dataset
91
+ ontology.add_labels(label_list=dataset.labels)
92
+ ontology.update()
93
+
94
+ #########################################################
95
+ # Copy dataset ontology to an existing dataset's recipe #
96
+ #########################################################
97
+ new_dataset = project.datasets.create(dataset_name='new_dataset_without_ontology')
98
+ # get recipe
99
+ new_dataset_recipe = new_dataset.recipes.list()[0]
100
+ # Copy from a different dataset
101
+ new_dataset_recipe.ontology_ids = dataset.ontology_ids
102
+ # Update the new dataset
103
+ new_dataset_recipe.update()
104
+
105
+ ##########################
106
+ # update existing recipe #
107
+ ##########################
108
+ # Get recipe from list
109
+ recipe = dataset.recipes.list()[0]
110
+ # Or get specific recipe:
111
+ # recipe = dataset.recipes.get(recipe_id='id')
112
+
113
+ # Get ontology from list
114
+ ontology = recipe.ontologies.list()[0]
115
+ # Or get specific ontology:
116
+ # ontology = recipe.ontologies.get(ontology_id='id')
117
+
118
+ # Add one label
119
+ ontology.add_label(label_name='Lion', color=(35, 234, 123))
120
+
121
+ # Add a list of labels
122
+ labels = [{'label_name': 'Shark', 'color': (1, 1, 1)}, {'label_name': 'Whale', 'color': (34, 56, 7)},
123
+ {'label_name': 'Dolphin', 'color': (100, 14, 150)}]
124
+ ontology.add_labels(label_list=labels)
125
+
126
+ # After adding - update ontology
127
+ ontology.update()
128
+
129
+ #####################
130
+ # Create new recipe #
131
+ #####################
132
+ # Label list
133
+ labels = [{'tag': 'Donkey', 'color': (1, 1, 1)}, {'tag': 'Mammoth', 'color': (34, 56, 7)},
134
+ {'tag': 'Bird', 'color': (100, 14, 150)}]
135
+ recipe = dataset.recipes.create(recipe_name='My Recipe', labels=labels)
@@ -1,21 +1,21 @@
1
- def main(project_name, dataset_name, item_path):
2
- """
3
- Add any metadata to item
4
- :return:
5
- """
6
- # import Dataloop SDK
7
- import dtlpy as dl
8
-
9
- # get dataset
10
- dataset = dl.projects.get(project_name=project_name).datasets.get(dataset_name=dataset_name)
11
-
12
- # upload and claim item
13
- item = dataset.items.upload(local_path=item_path)
14
-
15
- # modify metadata
16
- item.metadata['user'] = dict()
17
- item.metadata['user']['MyKey'] = 'MyVal'
18
- # update and reclaim item
19
- item = item.update()
20
-
21
- # item in platform should have section 'user' in metadata with field 'MyKey' and value 'MyVal'
1
+ def main(project_name, dataset_name, item_path):
2
+ """
3
+ Add any metadata to item
4
+ :return:
5
+ """
6
+ # import Dataloop SDK
7
+ import dtlpy as dl
8
+
9
+ # get dataset
10
+ dataset = dl.projects.get(project_name=project_name).datasets.get(dataset_name=dataset_name)
11
+
12
+ # upload and claim item
13
+ item = dataset.items.upload(local_path=item_path)
14
+
15
+ # modify metadata
16
+ item.metadata['user'] = dict()
17
+ item.metadata['user']['MyKey'] = 'MyVal'
18
+ # update and reclaim item
19
+ item = item.update()
20
+
21
+ # item in platform should have section 'user' in metadata with field 'MyKey' and value 'MyVal'
@@ -1,65 +1,65 @@
1
- def main():
2
- """
3
- Annotate a batch of images using a model and upload to platform
4
- :return:
5
- """
6
- import numpy as np
7
- from PIL import Image
8
- from keras.applications.imagenet_utils import decode_predictions
9
- from keras.applications.inception_v3 import InceptionV3, preprocess_input
10
- import dtlpy as dl
11
-
12
- ##############
13
- # load model #
14
- ##############
15
- model = InceptionV3()
16
-
17
- ##########################
18
- # init platform instance #
19
- ##########################
20
- project = dl.projects.get(project_name='ImageNet')
21
- dataset = project.datasets.get(dataset_name='sample')
22
-
23
- # get pages of images from dataset
24
- pages = dataset.items.list()
25
- ####################
26
- # start annotating #
27
- ####################
28
- for page in pages:
29
- for item in page:
30
- if item.type == 'dir':
31
- continue
32
- img_batch = [item.download(save_locally=False)]
33
- # load images
34
- img_batch = [Image.open(buf) for buf in img_batch]
35
- # get original images shapes before reshaping for model
36
- orig_img_shape = [img.size[::-1] for img in img_batch]
37
- # reshape and load images
38
- batch = np.array([np.array(img.resize((299, 299))) for img in img_batch])
39
- # preprocess batch
40
- batch = preprocess_input(batch)
41
- # inference the model
42
- predictions = model.predict(batch)
43
- # get ImageNet labels
44
- labels = decode_predictions(predictions, top=1)
45
- # create platform annotations instance
46
- builder = item.annotations.builder()
47
- for i_pred, label in enumerate(labels):
48
-
49
- # add the class labels
50
- ##############################
51
- # If model is classification #
52
- ##############################
53
- builder.add(annotation_definition=dl.Classification(label=label[0][1]))
54
- #############################
55
- # If model outputs polygons #
56
- #############################
57
- builder.add(annotation_definition=dl.Polyline(geo=pred['polygon_pts'],
58
- label=labels[i_pred][0][1]))
59
- #########################
60
- # If model outputs mask #
61
- #########################
62
- builder.add(annotation_definition=dl.Segmentation(geo=pred['mask'],
63
- label=labels[i_pred][0][1]))
64
- # upload a annotations to matching items in platform
65
- builder.upload()
1
+ def main():
2
+ """
3
+ Annotate a batch of images using a model and upload to platform
4
+ :return:
5
+ """
6
+ import numpy as np
7
+ from PIL import Image
8
+ from keras.applications.imagenet_utils import decode_predictions
9
+ from keras.applications.inception_v3 import InceptionV3, preprocess_input
10
+ import dtlpy as dl
11
+
12
+ ##############
13
+ # load model #
14
+ ##############
15
+ model = InceptionV3()
16
+
17
+ ##########################
18
+ # init platform instance #
19
+ ##########################
20
+ project = dl.projects.get(project_name='ImageNet')
21
+ dataset = project.datasets.get(dataset_name='sample')
22
+
23
+ # get pages of images from dataset
24
+ pages = dataset.items.list()
25
+ ####################
26
+ # start annotating #
27
+ ####################
28
+ for page in pages:
29
+ for item in page:
30
+ if item.type == 'dir':
31
+ continue
32
+ img_batch = [item.download(save_locally=False)]
33
+ # load images
34
+ img_batch = [Image.open(buf) for buf in img_batch]
35
+ # get original images shapes before reshaping for model
36
+ orig_img_shape = [img.size[::-1] for img in img_batch]
37
+ # reshape and load images
38
+ batch = np.array([np.array(img.resize((299, 299))) for img in img_batch])
39
+ # preprocess batch
40
+ batch = preprocess_input(batch)
41
+ # inference the model
42
+ predictions = model.predict(batch)
43
+ # get ImageNet labels
44
+ labels = decode_predictions(predictions, top=1)
45
+ # create platform annotations instance
46
+ builder = item.annotations.builder()
47
+ for i_pred, label in enumerate(labels):
48
+
49
+ # add the class labels
50
+ ##############################
51
+ # If model is classification #
52
+ ##############################
53
+ builder.add(annotation_definition=dl.Classification(label=label[0][1]))
54
+ #############################
55
+ # If model outputs polygons #
56
+ #############################
57
+ builder.add(annotation_definition=dl.Polyline(geo=pred['polygon_pts'],
58
+ label=labels[i_pred][0][1]))
59
+ #########################
60
+ # If model outputs mask #
61
+ #########################
62
+ builder.add(annotation_definition=dl.Segmentation(geo=pred['mask'],
63
+ label=labels[i_pred][0][1]))
64
+ # upload a annotations to matching items in platform
65
+ builder.upload()
@@ -1,75 +1,75 @@
1
- def main():
2
- """
3
- Detect and track (using model and some tracker) and upload annotation to platform
4
- :return:
5
- """
6
- import cv2
7
- import dtlpy as dl
8
-
9
- ##########################
10
- # Load model and tracker #
11
- ##########################
12
- # load your model for detection
13
- model = load_some_model()
14
- # load any tracking algorithm to track detected elements
15
- tracker = load_some_tracker()
16
-
17
- ##############
18
- # load video #
19
- ##############
20
- video_path = 'some/video/path'
21
-
22
- vid = cv2.VideoCapture(video_path)
23
- if not vid.isOpened():
24
- raise IOError("Couldn't open webcam or video")
25
- video_fps = vid.get(cv2.CAP_PROP_FPS)
26
- video_size = (int(vid.get(cv2.CAP_PROP_FRAME_WIDTH)),
27
- int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT)))
28
- video_frames = int(vid.get(cv2.CAP_PROP_FRAME_COUNT))
29
-
30
- ############
31
- # Platform #
32
- ###########
33
- # get the item from platform
34
- item = dl.projects.get(project_name='MyProject') \
35
- .datasets.get(dataset_name='MyDataset') \
36
- .items.get(filepath='/path/to/video.mp4')
37
- builder = item.annotations.builder()
38
-
39
- #######
40
- # Run #
41
- #######
42
- frame_num = 0
43
- while True:
44
- # get new frame from video
45
- return_value, frame = vid.read()
46
- if not return_value:
47
- break
48
-
49
- # get detection
50
- detections = model.predict(frame)
51
-
52
- # update tracker
53
- tracked_elements = tracker.update(detections, frame)
54
-
55
- # update annotations object
56
- for element in tracked_elements:
57
- # element.bb - format of the bounding box is 2 points in 1 array - [x_left, y_top, x_right, y_bottom])
58
- # tracking id of each element is in element.id. to keep the ids of the detected elements
59
- left, top, bottom, right = element.bb # points bounding box annotation
60
- builder.add(annotation_definition=dl.Box(top=top,
61
- left=left,
62
- right=right,
63
- bottom=bottom,
64
- label=element.label),
65
- object_id=element.id,
66
- frame_num=frame_num)
67
- # increase frame number
68
- frame_num += 1
69
- if cv2.waitKey(1) & 0xFF == ord('q'):
70
- break
71
-
72
- ##################################
73
- # Upload annotations to platform #
74
- ##################################
75
- item.annotations.upload(builder.to_platform())
1
+ def main():
2
+ """
3
+ Detect and track (using model and some tracker) and upload annotation to platform
4
+ :return:
5
+ """
6
+ import cv2
7
+ import dtlpy as dl
8
+
9
+ ##########################
10
+ # Load model and tracker #
11
+ ##########################
12
+ # load your model for detection
13
+ model = load_some_model()
14
+ # load any tracking algorithm to track detected elements
15
+ tracker = load_some_tracker()
16
+
17
+ ##############
18
+ # load video #
19
+ ##############
20
+ video_path = 'some/video/path'
21
+
22
+ vid = cv2.VideoCapture(video_path)
23
+ if not vid.isOpened():
24
+ raise IOError("Couldn't open webcam or video")
25
+ video_fps = vid.get(cv2.CAP_PROP_FPS)
26
+ video_size = (int(vid.get(cv2.CAP_PROP_FRAME_WIDTH)),
27
+ int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT)))
28
+ video_frames = int(vid.get(cv2.CAP_PROP_FRAME_COUNT))
29
+
30
+ ############
31
+ # Platform #
32
+ ###########
33
+ # get the item from platform
34
+ item = dl.projects.get(project_name='MyProject') \
35
+ .datasets.get(dataset_name='MyDataset') \
36
+ .items.get(filepath='/path/to/video.mp4')
37
+ builder = item.annotations.builder()
38
+
39
+ #######
40
+ # Run #
41
+ #######
42
+ frame_num = 0
43
+ while True:
44
+ # get new frame from video
45
+ return_value, frame = vid.read()
46
+ if not return_value:
47
+ break
48
+
49
+ # get detection
50
+ detections = model.predict(frame)
51
+
52
+ # update tracker
53
+ tracked_elements = tracker.update(detections, frame)
54
+
55
+ # update annotations object
56
+ for element in tracked_elements:
57
+ # element.bb - format of the bounding box is 2 points in 1 array - [x_left, y_top, x_right, y_bottom])
58
+ # tracking id of each element is in element.id. to keep the ids of the detected elements
59
+ left, top, bottom, right = element.bb # points bounding box annotation
60
+ builder.add(annotation_definition=dl.Box(top=top,
61
+ left=left,
62
+ right=right,
63
+ bottom=bottom,
64
+ label=element.label),
65
+ object_id=element.id,
66
+ frame_num=frame_num)
67
+ # increase frame number
68
+ frame_num += 1
69
+ if cv2.waitKey(1) & 0xFF == ord('q'):
70
+ break
71
+
72
+ ##################################
73
+ # Upload annotations to platform #
74
+ ##################################
75
+ item.annotations.upload(builder.to_platform())
@@ -1,9 +1,9 @@
1
- def main():
2
- import dtlpy as dl
3
-
4
- project = dl.projects.get(project_name='Ocean')
5
- dataset = project.datasets.get(dataset_name='Sharks')
6
-
7
- converter = dl.Converter()
8
- converter.convert_dataset(dataset=dataset, to_format='voc',
9
- local_path='home/voc_annotations/sharks')
1
+ def main():
2
+ import dtlpy as dl
3
+
4
+ project = dl.projects.get(project_name='Ocean')
5
+ dataset = project.datasets.get(dataset_name='Sharks')
6
+
7
+ converter = dl.Converter()
8
+ converter.convert_dataset(dataset=dataset, to_format='voc',
9
+ local_path='home/voc_annotations/sharks')
@@ -1,9 +1,9 @@
1
- def main():
2
- import dtlpy as dl
3
-
4
- project = dl.projects.get(project_name='Jungle')
5
- dataset = project.datasets.get(dataset_name='Tigers')
6
-
7
- converter = dl.Converter()
8
- converter.convert_dataset(dataset=dataset, to_format='yolo',
9
- local_path='home/yolo_annotations/tigers')
1
+ def main():
2
+ import dtlpy as dl
3
+
4
+ project = dl.projects.get(project_name='Jungle')
5
+ dataset = project.datasets.get(dataset_name='Tigers')
6
+
7
+ converter = dl.Converter()
8
+ converter.convert_dataset(dataset=dataset, to_format='yolo',
9
+ local_path='home/yolo_annotations/tigers')