supervisely 6.73.420__py3-none-any.whl → 6.73.421__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 (76) hide show
  1. supervisely/api/api.py +10 -5
  2. supervisely/api/app_api.py +71 -4
  3. supervisely/api/module_api.py +4 -0
  4. supervisely/api/nn/deploy_api.py +15 -9
  5. supervisely/api/nn/ecosystem_models_api.py +201 -0
  6. supervisely/api/nn/neural_network_api.py +12 -3
  7. supervisely/api/project_api.py +35 -6
  8. supervisely/api/task_api.py +5 -1
  9. supervisely/app/widgets/__init__.py +8 -1
  10. supervisely/app/widgets/agent_selector/template.html +1 -0
  11. supervisely/app/widgets/deploy_model/__init__.py +0 -0
  12. supervisely/app/widgets/deploy_model/deploy_model.py +729 -0
  13. supervisely/app/widgets/dropdown_checkbox_selector/__init__.py +0 -0
  14. supervisely/app/widgets/dropdown_checkbox_selector/dropdown_checkbox_selector.py +87 -0
  15. supervisely/app/widgets/dropdown_checkbox_selector/template.html +12 -0
  16. supervisely/app/widgets/ecosystem_model_selector/__init__.py +0 -0
  17. supervisely/app/widgets/ecosystem_model_selector/ecosystem_model_selector.py +190 -0
  18. supervisely/app/widgets/experiment_selector/experiment_selector.py +447 -264
  19. supervisely/app/widgets/fast_table/fast_table.py +402 -74
  20. supervisely/app/widgets/fast_table/script.js +364 -96
  21. supervisely/app/widgets/fast_table/style.css +24 -0
  22. supervisely/app/widgets/fast_table/template.html +43 -3
  23. supervisely/app/widgets/radio_table/radio_table.py +10 -2
  24. supervisely/app/widgets/select/select.py +6 -4
  25. supervisely/app/widgets/select_dataset_tree/select_dataset_tree.py +18 -0
  26. supervisely/app/widgets/tabs/tabs.py +22 -6
  27. supervisely/app/widgets/tabs/template.html +5 -1
  28. supervisely/nn/artifacts/__init__.py +1 -1
  29. supervisely/nn/artifacts/artifacts.py +10 -2
  30. supervisely/nn/artifacts/detectron2.py +1 -0
  31. supervisely/nn/artifacts/hrda.py +1 -0
  32. supervisely/nn/artifacts/mmclassification.py +20 -0
  33. supervisely/nn/artifacts/mmdetection.py +5 -3
  34. supervisely/nn/artifacts/mmsegmentation.py +1 -0
  35. supervisely/nn/artifacts/ritm.py +1 -0
  36. supervisely/nn/artifacts/rtdetr.py +1 -0
  37. supervisely/nn/artifacts/unet.py +1 -0
  38. supervisely/nn/artifacts/utils.py +3 -0
  39. supervisely/nn/artifacts/yolov5.py +2 -0
  40. supervisely/nn/artifacts/yolov8.py +1 -0
  41. supervisely/nn/benchmark/semantic_segmentation/metric_provider.py +18 -18
  42. supervisely/nn/experiments.py +9 -0
  43. supervisely/nn/inference/gui/serving_gui_template.py +39 -13
  44. supervisely/nn/inference/inference.py +160 -94
  45. supervisely/nn/inference/predict_app/__init__.py +0 -0
  46. supervisely/nn/inference/predict_app/gui/__init__.py +0 -0
  47. supervisely/nn/inference/predict_app/gui/classes_selector.py +91 -0
  48. supervisely/nn/inference/predict_app/gui/gui.py +710 -0
  49. supervisely/nn/inference/predict_app/gui/input_selector.py +165 -0
  50. supervisely/nn/inference/predict_app/gui/model_selector.py +79 -0
  51. supervisely/nn/inference/predict_app/gui/output_selector.py +139 -0
  52. supervisely/nn/inference/predict_app/gui/preview.py +93 -0
  53. supervisely/nn/inference/predict_app/gui/settings_selector.py +184 -0
  54. supervisely/nn/inference/predict_app/gui/tags_selector.py +110 -0
  55. supervisely/nn/inference/predict_app/gui/utils.py +282 -0
  56. supervisely/nn/inference/predict_app/predict_app.py +184 -0
  57. supervisely/nn/inference/uploader.py +9 -5
  58. supervisely/nn/model/prediction.py +2 -0
  59. supervisely/nn/model/prediction_session.py +20 -3
  60. supervisely/nn/training/gui/gui.py +131 -44
  61. supervisely/nn/training/gui/model_selector.py +8 -6
  62. supervisely/nn/training/gui/train_val_splits_selector.py +122 -70
  63. supervisely/nn/training/gui/training_artifacts.py +0 -5
  64. supervisely/nn/training/train_app.py +161 -44
  65. supervisely/template/experiment/experiment.html.jinja +74 -17
  66. supervisely/template/experiment/experiment_generator.py +258 -112
  67. supervisely/template/experiment/header.html.jinja +31 -13
  68. supervisely/template/experiment/sly-style.css +7 -2
  69. {supervisely-6.73.420.dist-info → supervisely-6.73.421.dist-info}/METADATA +3 -1
  70. {supervisely-6.73.420.dist-info → supervisely-6.73.421.dist-info}/RECORD +74 -56
  71. supervisely/app/widgets/experiment_selector/style.css +0 -27
  72. supervisely/app/widgets/experiment_selector/template.html +0 -61
  73. {supervisely-6.73.420.dist-info → supervisely-6.73.421.dist-info}/LICENSE +0 -0
  74. {supervisely-6.73.420.dist-info → supervisely-6.73.421.dist-info}/WHEEL +0 -0
  75. {supervisely-6.73.420.dist-info → supervisely-6.73.421.dist-info}/entry_points.txt +0 -0
  76. {supervisely-6.73.420.dist-info → supervisely-6.73.421.dist-info}/top_level.txt +0 -0
@@ -14,7 +14,7 @@ Here are prediction samples made with **{{ experiment.training.checkpoints.pytor
14
14
 
15
15
  ## Evaluation
16
16
 
17
- The **{{ experiment.training.checkpoints.pytorch.name }}** checkpoint was evaluated on the validation set containing **{{ experiment.project.splits.val }}
17
+ The **{{ experiment.training.checkpoints.pytorch.name }}** checkpoint was evaluated on the validation set containing **{{ experiment.project.splits.val.size }}
18
18
  images**.
19
19
 
20
20
  See the full [📊 Evaluation Report]({{ experiment.training.evaluation.url }}) for details and visualizations.
@@ -28,6 +28,35 @@ was performed.
28
28
 
29
29
  {% endif %}
30
30
 
31
+ {% if widgets.training_plots %}
32
+
33
+ ## Training Plots
34
+
35
+ Visualization of the training scalars logged during the experiment.
36
+
37
+ {% if experiment.training.logs.path %}
38
+ <div>
39
+ <sly-iw-launch-button
40
+ class="training-plots-button"
41
+ style=""
42
+ :disabled="false"
43
+ :autoRun="true"
44
+ :state="{ 'slyFolder': '{{ experiment.training.logs.path }}' }"
45
+ :moduleId="{{ resources.apps.log_viewer.module_id }}"
46
+ :proxyKeepUrl="true"
47
+ :openInNewWindow="true"
48
+ :command="command">
49
+ <span>Open Logs</span> <i class="zmdi zmdi-arrow-right-top" />
50
+ </sly-iw-launch-button>
51
+ </div>
52
+ {% endif %}
53
+
54
+ <div class="training-plots">
55
+ {{ widgets.training_plots | safe }}
56
+ </div>
57
+
58
+ {% endif %}
59
+
31
60
  ## Artifacts
32
61
 
33
62
  [📂 Open in Team Files]({{ experiment.paths.artifacts_dir.url }}){:target="_blank"}
@@ -89,10 +118,8 @@ The quick actions on this page, such as **Deploy**, **Predict**, or **Fine-tune*
89
118
  }}){:target="_blank"} - deploy your model in the Supervisely Platform.
90
119
  - [Train {{ experiment.model.framework }}]({{ env.server_address }}/ecosystem/apps/{{ resources.apps.train.slug
91
120
  }}){:target="_blank"} - train a model in the Supervisely Platform.
92
- - [Apply NN to Images]({{ env.server_address }}/ecosystem/apps/{{ resources.apps.apply_nn_to_images.slug }}){:target="_blank"} -
93
- connect to your model and make predictions on image project or dataset.
94
- - [Apply NN to Videos]({{ env.server_address }}/ecosystem/apps/{{ resources.apps.apply_nn_to_videos.slug }}){:target="_blank"} -
95
- for predictions on video project or dataset.
121
+ - [Predict App]({{ env.server_address }}/ecosystem/apps/{{ resources.apps.predict.slug }}){:target="_blank"} -
122
+ deploy your model and make predictions.
96
123
 
97
124
  ## API Integration & Deployment
98
125
 
@@ -100,10 +127,20 @@ In this section, you'll find the quickstart guides for integrating your model in
100
127
 
101
128
  ### Table of contents:
102
129
 
103
- - [Supervisely API](#supervisely-api)
104
- - [Deploy in Docker](#deploy-in-docker)
105
- - [Deploy locally with Supervisely SDK](#deploy-locally-with-supervisely-sdk)
106
- - [Using Original Model Codebase](#using-original-model-codebase)
130
+ <ul>
131
+ <li>
132
+ <a :href="`${location.pathname}#supervisely-api`">Supervisely API</a>
133
+ </li>
134
+ <li>
135
+ <a :href="`${location.pathname}#deploy-in-docker`">Deploy in Docker</a>
136
+ </li>
137
+ <li>
138
+ <a :href="`${location.pathname}#deploy-locally-with-supervisely-sdk`">Deploy locally with Supervisely SDK</a>
139
+ </li>
140
+ <li>
141
+ <a :href="`${location.pathname}#using-original-model-codebase`">Using Original Model Codebase API</a>
142
+ </li>
143
+ </ul>
107
144
 
108
145
  ## Supervisely API
109
146
 
@@ -163,6 +200,7 @@ api = sly.Api()
163
200
  model = api.nn.deploy(
164
201
  model="{{ experiment.paths.artifacts_dir.path }}/checkpoints/{{ experiment.training.checkpoints.pytorch.name }}",
165
202
  device="cuda:0", # or "cpu"
203
+ workspace_id={{ experiment.project.workspace_id }}
166
204
  )
167
205
  ```
168
206
 
@@ -180,6 +218,7 @@ api = sly.Api()
180
218
  model = api.nn.deploy(
181
219
  model="{{ experiment.paths.artifacts_dir.path }}/export/{{ experiment.training.checkpoints.onnx.name }}",
182
220
  device="cuda:0", # or "cpu"
221
+ workspace_id={{ experiment.project.workspace_id }}
183
222
  )
184
223
  ```
185
224
 
@@ -198,6 +237,7 @@ api = sly.Api()
198
237
  model = api.nn.deploy(
199
238
  model="{{ experiment.paths.artifacts_dir.path }}/export/{{ experiment.training.checkpoints.tensorrt.name }}",
200
239
  device="cuda:0", # or "cpu"
240
+ workspace_id={{ experiment.project.workspace_id }}
201
241
  )
202
242
  ```
203
243
 
@@ -232,7 +272,9 @@ predictions = model.predict(
232
272
 
233
273
  ```python
234
274
  # Predict images in Supervisely
235
- predictions = model.predict(image_ids=[123, 124] # Image IDs in Supervisely)
275
+ predictions = model.predict(
276
+ image_ids=[123, 124] # Image IDs in Supervisely
277
+ )
236
278
  ```
237
279
 
238
280
  {% endtab %}
@@ -241,7 +283,9 @@ predictions = model.predict(image_ids=[123, 124] # Image IDs in Supervisely)
241
283
 
242
284
  ```python
243
285
  # Predict dataset
244
- predictions = model.predict(dataset_id=12 # Dataset ID in Supervisely)
286
+ predictions = model.predict(
287
+ dataset_id=12 # Dataset ID in Supervisely
288
+ )
245
289
  ```
246
290
 
247
291
  {% endtab %}
@@ -250,7 +294,9 @@ predictions = model.predict(dataset_id=12 # Dataset ID in Supervisely)
250
294
 
251
295
  ```python
252
296
  # Predict project
253
- predictions = model.predict(project_id=21 # Project ID in Supervisely)
297
+ predictions = model.predict(
298
+ project_id=21 # Project ID in Supervisely
299
+ )
254
300
  ```
255
301
 
256
302
  {% endtab %}
@@ -259,7 +305,9 @@ predictions = model.predict(project_id=21 # Project ID in Supervisely)
259
305
 
260
306
  ```python
261
307
  # Predict video
262
- predictions = model.predict(video_id=123 # Video ID in Supervisely)
308
+ predictions = model.predict(
309
+ video_id=123 # Video ID in Supervisely
310
+ )
263
311
  ```
264
312
 
265
313
  {% endtab %}
@@ -324,9 +372,9 @@ Video](https://docs.supervisely.com/neural-networks/overview-1/prediction-api#tr
324
372
  You can deploy the model in a 🐋 Docker Container with a single `docker run` command. Download a checkpoint, pull the
325
373
  docker image for the corresponding model's framework, and run the `docker run` command with addtional arguments.
326
374
 
327
- 1. Download checkpoint from Supervisely ([Open in Team Files]({{ experiment.paths.checkpoints_dir.url }}){:target="_blank"})
375
+ 1. Download training artifacts from Supervisely ([Open in Team Files]({{ experiment.paths.artifacts_dir.url }}){:target="_blank"})
328
376
 
329
- 2. Pull the Docker image
377
+ 2. Pull the Docker image for deployment
330
378
 
331
379
  ```bash
332
380
  docker pull {{ code.docker.deploy }}
@@ -484,11 +532,20 @@ using the original code from the authors.
484
532
 
485
533
  1. Download checkpoint from Supervisely ([Open in Team Files]({{ experiment.paths.checkpoints_dir.url }}){:target="_blank"})
486
534
 
487
- 2. Prepare environment following the instructions of the original repository [{{ code.local_prediction.repo.name }}]({{
488
- code.local_prediction.repo.url }}){:target="_blank"}
535
+ {% if resources.original_repository.name and resources.original_repository.url %}
536
+
537
+ 2. Prepare environment following the instructions of the original repository [{{ resources.original_repository.name }}]({{
538
+ resources.original_repository.url }}){:target="_blank"}
489
539
 
490
540
  3. Use the demo script for inference:
491
541
 
542
+ {% else %}
543
+ 2. Prepare environment following the instructions of the original repository
544
+
545
+ 3. Use the demo script for inference:
546
+
547
+ {% endif %}
548
+
492
549
  <details>
493
550
  <summary><strong>🐍 View Code</strong></summary>
494
551