dgenerate-ultralytics-headless 8.3.192__py3-none-any.whl → 8.3.194__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.
- {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/METADATA +1 -1
- {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/RECORD +33 -32
- tests/test_exports.py +8 -5
- tests/test_python.py +1 -1
- ultralytics/__init__.py +1 -1
- ultralytics/cfg/__init__.py +7 -5
- ultralytics/cfg/datasets/xView.yaml +1 -1
- ultralytics/data/utils.py +1 -1
- ultralytics/engine/exporter.py +7 -6
- ultralytics/engine/model.py +4 -4
- ultralytics/engine/predictor.py +7 -3
- ultralytics/engine/trainer.py +4 -4
- ultralytics/hub/__init__.py +1 -2
- ultralytics/hub/utils.py +0 -101
- ultralytics/models/sam/predict.py +3 -3
- ultralytics/models/yolo/segment/val.py +13 -13
- ultralytics/models/yolo/yoloe/val.py +2 -2
- ultralytics/nn/__init__.py +2 -4
- ultralytics/nn/autobackend.py +10 -13
- ultralytics/nn/tasks.py +2 -51
- ultralytics/utils/__init__.py +6 -3
- ultralytics/utils/callbacks/hub.py +2 -1
- ultralytics/utils/checks.py +2 -1
- ultralytics/utils/events.py +115 -0
- ultralytics/utils/ops.py +3 -1
- ultralytics/utils/tal.py +2 -2
- ultralytics/utils/torch_utils.py +7 -6
- ultralytics/utils/tqdm.py +49 -74
- ultralytics/utils/tuner.py +1 -1
- {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/WHEEL +0 -0
- {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/entry_points.txt +0 -0
- {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/licenses/LICENSE +0 -0
- {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dgenerate-ultralytics-headless
|
3
|
-
Version: 8.3.
|
3
|
+
Version: 8.3.194
|
4
4
|
Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
@@ -1,18 +1,18 @@
|
|
1
|
-
dgenerate_ultralytics_headless-8.3.
|
1
|
+
dgenerate_ultralytics_headless-8.3.194.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
2
2
|
tests/__init__.py,sha256=b4KP5_q-2IO8Br8YHOSLYnn7IwZS81l_vfEF2YPa2lM,894
|
3
3
|
tests/conftest.py,sha256=LXtQJcFNWPGuzauTGkiXgsvVC3llJKfg22WcmhRzuQc,2593
|
4
4
|
tests/test_cli.py,sha256=EMf5gTAopOnIz8VvzaM-Qb044o7D0flnUHYQ-2ffOM4,5670
|
5
5
|
tests/test_cuda.py,sha256=Z-MX1aIBQyt_fAAgKxBEznE0Mj7caSwrctW9z__NGzU,8240
|
6
6
|
tests/test_engine.py,sha256=Jpt2KVrltrEgh2-3Ykouz-2Z_2fza0eymL5ectRXadM,4922
|
7
|
-
tests/test_exports.py,sha256=
|
7
|
+
tests/test_exports.py,sha256=dWuroSyqXnrc0lE-RNTf7pZoXXXEkOs31u7nhOiEHS0,10994
|
8
8
|
tests/test_integrations.py,sha256=kl_AKmE_Qs1GB0_91iVwbzNxofm_hFTt0zzU6JF-pg4,6323
|
9
|
-
tests/test_python.py,sha256=
|
9
|
+
tests/test_python.py,sha256=FGZ2XabwLmXLcKTmsQHBBbxoVTCmk0B1ACcTWUBIUIo,27911
|
10
10
|
tests/test_solutions.py,sha256=6wJ9-lhyWSAm7zaR4D9L_DrUA3iJU1NgqmbQO6PIuvo,13211
|
11
|
-
ultralytics/__init__.py,sha256=
|
11
|
+
ultralytics/__init__.py,sha256=UXztbDjWj3KFSfHZL_6SgEbd4QY_ofQJ2YQxENZsaJA,730
|
12
12
|
ultralytics/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
13
13
|
ultralytics/assets/bus.jpg,sha256=wCAZxJecGR63Od3ZRERe9Aja1Weayrb9Ug751DS_vGM,137419
|
14
14
|
ultralytics/assets/zidane.jpg,sha256=Ftc4aeMmen1O0A3o6GCDO9FlfBslLpTAw0gnetx7bts,50427
|
15
|
-
ultralytics/cfg/__init__.py,sha256=
|
15
|
+
ultralytics/cfg/__init__.py,sha256=oi3unUYklhdf-uF_0v9dSBOj5EyPRKQbgVVKHrztKns,39955
|
16
16
|
ultralytics/cfg/default.yaml,sha256=1SspGAK_K_DT7DBfEScJh4jsJUTOxahehZYj92xmj7o,8347
|
17
17
|
ultralytics/cfg/datasets/Argoverse.yaml,sha256=J4ItoUlE_EiYTmp1DFKYHfbqHkj8j4wUtRJQhaMIlBM,3275
|
18
18
|
ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=VZ_KKFX0H2YvlFVJ8JHcLWYBZ2xiQ6Z-ROSTiKWpS7c,1211
|
@@ -47,7 +47,7 @@ ultralytics/cfg/datasets/open-images-v7.yaml,sha256=wK9v3OAGdHORkFdqoBi0hS0fa1b7
|
|
47
47
|
ultralytics/cfg/datasets/package-seg.yaml,sha256=V4uyTDWWzgft24y9HJWuELKuZ5AndAHXbanxMI6T8GU,849
|
48
48
|
ultralytics/cfg/datasets/signature.yaml,sha256=gBvU3715gVxVAafI_yaYczGX3kfEfA4BttbiMkgOXNk,774
|
49
49
|
ultralytics/cfg/datasets/tiger-pose.yaml,sha256=Y_8htA4--6hmpqHTW-Ix4t9SdaWenSSyl_FUtI2A7n8,926
|
50
|
-
ultralytics/cfg/datasets/xView.yaml,sha256=
|
50
|
+
ultralytics/cfg/datasets/xView.yaml,sha256=eaQ7bYDRrOMRdaxN_wzlH_fN0wdIlT_GQDtPzrHS2-s,5353
|
51
51
|
ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml,sha256=1Ycp9qMrwpb8rq7cqht3Q-1gMN0R87U35nm2j_isdro,524
|
52
52
|
ultralytics/cfg/models/11/yolo11-cls.yaml,sha256=17l5GdN-Vst4LvafsK2-q6Li9VX9UlUcT5ClCtikweE,1412
|
53
53
|
ultralytics/cfg/models/11/yolo11-obb.yaml,sha256=3M_c06B-y8da4tunHVxQQ-iFUNLKUfofqCZTpnH5FEU,2034
|
@@ -115,23 +115,23 @@ ultralytics/data/dataset.py,sha256=JC3sHsKva65sSptdAJHfh90yyag8WrqGXcXNpD9C-f0,3
|
|
115
115
|
ultralytics/data/loaders.py,sha256=Mt6ogS2SUq8SE6oJajX7xSyzIxvwjKUhxFbIynhBlGk,31748
|
116
116
|
ultralytics/data/split.py,sha256=5ubnL_wsEutFQOj4I4K01L9UpZrrO_vO3HrydSLJyIY,5107
|
117
117
|
ultralytics/data/split_dota.py,sha256=gSGHRWZFQOofMkb8GcTtkUb5gV5jtOV7bzVMovTW0ak,12910
|
118
|
-
ultralytics/data/utils.py,sha256=
|
118
|
+
ultralytics/data/utils.py,sha256=1YF_-v-laBG41WGmnLo4xsfOhCNNN1og8b2yo11FJos,36716
|
119
119
|
ultralytics/data/scripts/download_weights.sh,sha256=0y8XtZxOru7dVThXDFUXLHBuICgOIqZNUwpyL4Rh6lg,595
|
120
120
|
ultralytics/data/scripts/get_coco.sh,sha256=UuJpJeo3qQpTHVINeOpmP0NYmg8PhEFE3A8J3jKrnPw,1768
|
121
121
|
ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz138OgGfLt8,650
|
122
122
|
ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
|
123
123
|
ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
124
|
-
ultralytics/engine/exporter.py,sha256=
|
125
|
-
ultralytics/engine/model.py,sha256=
|
126
|
-
ultralytics/engine/predictor.py,sha256=
|
124
|
+
ultralytics/engine/exporter.py,sha256=c7OXFm9qBliL9zVL5g8_hVp8dVwZd3L-MnwSZDPLVrw,75428
|
125
|
+
ultralytics/engine/model.py,sha256=q3rj1QmJoR4uYXb6dvn2dVRheEY8TzJhm9KznD_VDso,53488
|
126
|
+
ultralytics/engine/predictor.py,sha256=EzFcRzihNTYgdayviLwEk7pUOotNoEVbQtVFI18jNpM,22625
|
127
127
|
ultralytics/engine/results.py,sha256=115lVbiqzyho1fXm-YpqQBtKiv-Wo2FPNhz6ExYHtCk,71499
|
128
|
-
ultralytics/engine/trainer.py,sha256=
|
128
|
+
ultralytics/engine/trainer.py,sha256=_mTG-z6xnOdFUmB6uOF8HQkFb_uMwP0MrJHlt7X3zVw,40457
|
129
129
|
ultralytics/engine/tuner.py,sha256=XuqcjyGpD79pUVn-PXlJJGKXgH1yblPdYBH_R2kHWSU,20586
|
130
130
|
ultralytics/engine/validator.py,sha256=8ky0lcMCYDY7RGYRUowDAKxEMfsPBLpT7LlgfHA-IsY,16681
|
131
|
-
ultralytics/hub/__init__.py,sha256=
|
131
|
+
ultralytics/hub/__init__.py,sha256=xCF02lzlPKbdmGfO3NxLuXl5Kb0MaBZp_-fAWDHZ8zw,6698
|
132
132
|
ultralytics/hub/auth.py,sha256=RIwZDWfW6vS2yGpZKR0xVl0-38itJYEFtmqY_M70bl8,6304
|
133
133
|
ultralytics/hub/session.py,sha256=iz7HbxU63OHr-7bNm1QIKPVRQc-3lnXMbWH19bgFVfQ,18450
|
134
|
-
ultralytics/hub/utils.py,sha256=
|
134
|
+
ultralytics/hub/utils.py,sha256=19ZbwQuIumEb9JwdpUwDxmCZq1Ftm-7whU5yvGABvhY,6384
|
135
135
|
ultralytics/hub/google/__init__.py,sha256=-Hh4rUoQBdUFkPqnj7UeQUMdejVbbL8nFFrKAT5OxhE,8468
|
136
136
|
ultralytics/models/__init__.py,sha256=DqQFFYJ4IQlqIDb61H1HzcnZU7SuHN-43bw94-l-YAQ,309
|
137
137
|
ultralytics/models/fastsam/__init__.py,sha256=HGJ8EKlBAsdF-e2aIwQLjSDAFI_r0yHR0A1gzrp4vqE,231
|
@@ -152,7 +152,7 @@ ultralytics/models/sam/__init__.py,sha256=4VtjxrbrSsqBvteaD_CwA4Nj3DdSUG1MknymtW
|
|
152
152
|
ultralytics/models/sam/amg.py,sha256=07UkNkcbOUj3tc9L2H9rAuH5s1WDJLqX81kt2zbzDsw,11821
|
153
153
|
ultralytics/models/sam/build.py,sha256=J6n-_QOYLa63jldEZmhRe9D3Is_AJE8xyZLUjzfRyTY,12629
|
154
154
|
ultralytics/models/sam/model.py,sha256=rTBCWYoYDKvF34FY5RXhdTTSNa_fO4LjkJbIPgYh-L8,7237
|
155
|
-
ultralytics/models/sam/predict.py,sha256=
|
155
|
+
ultralytics/models/sam/predict.py,sha256=E6BrWPJw26ZS6Cv0IhdMhXllnx6XiNvTHfQlBJGrEr4,104963
|
156
156
|
ultralytics/models/sam/modules/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
|
157
157
|
ultralytics/models/sam/modules/blocks.py,sha256=Wc6ThlZ5G3S8XJrH6WclbyzI3vIqWHKAWYb7n3A6Fdk,46055
|
158
158
|
ultralytics/models/sam/modules/decoders.py,sha256=Vc0nDC1Ex8RBxJX6j-RWRdkYQif0A4-0vtE13aeF8eA,25620
|
@@ -186,7 +186,7 @@ ultralytics/models/yolo/pose/val.py,sha256=A4Cvzmqyu0oW5UC9mqNL731ngAwqQBic6tdMc
|
|
186
186
|
ultralytics/models/yolo/segment/__init__.py,sha256=3IThhZ1wlkY9FvmWm9cE-5-ZyE6F1FgzAtQ6jOOFzzw,275
|
187
187
|
ultralytics/models/yolo/segment/predict.py,sha256=qlprQCZn4_bpjpI08U0MU9Q9_1gpHrw_7MXwtXE1l1Y,5377
|
188
188
|
ultralytics/models/yolo/segment/train.py,sha256=bBEnEUHqN3QlbreD5Fy-h1X5Ps-dONH2r9EnoLc72x4,3762
|
189
|
-
ultralytics/models/yolo/segment/val.py,sha256=
|
189
|
+
ultralytics/models/yolo/segment/val.py,sha256=Xy2T-Y4IjjuR5GqWGJjHmCLGL9FxEWfMXDoCoP_ZBBM,11147
|
190
190
|
ultralytics/models/yolo/world/__init__.py,sha256=nlh8I6t8hMGz_vZg8QSlsUW1R-2eKvn9CGUoPPQEGhA,131
|
191
191
|
ultralytics/models/yolo/world/train.py,sha256=9tSDba3X9VA2y-2oJJUMdXUBi-IdgRmqLW18UqfukvI,7866
|
192
192
|
ultralytics/models/yolo/world/train_world.py,sha256=lk9z_INGPSTP_W7Rjh3qrWSmjHaxOJtGngonh1cj2SM,9551
|
@@ -194,10 +194,10 @@ ultralytics/models/yolo/yoloe/__init__.py,sha256=6SLytdJtwu37qewf7CobG7C7Wl1m-xt
|
|
194
194
|
ultralytics/models/yolo/yoloe/predict.py,sha256=GmQxCQe7sLomAujde53jQzquzryNn6fEjS4Oalf3mPs,7124
|
195
195
|
ultralytics/models/yolo/yoloe/train.py,sha256=lAb-5TgYA_Z6rwEYCMdPcfjJmCGYQqXE5I40n25CTRk,14067
|
196
196
|
ultralytics/models/yolo/yoloe/train_seg.py,sha256=aCV7M8oQOvODFnU4piZdJh3tIrBJYAzZfRVRx1vRgxo,4956
|
197
|
-
ultralytics/models/yolo/yoloe/val.py,sha256=
|
198
|
-
ultralytics/nn/__init__.py,sha256=
|
199
|
-
ultralytics/nn/autobackend.py,sha256=
|
200
|
-
ultralytics/nn/tasks.py,sha256=
|
197
|
+
ultralytics/models/yolo/yoloe/val.py,sha256=MnS2YwhRxdqXPRlExHt-9HRp8KKIHuFdmiNH1z6LedI,9795
|
198
|
+
ultralytics/nn/__init__.py,sha256=PJgOn2phQTTBR2P3s_JWvGeGXQpvw1znsumKow4tCuE,545
|
199
|
+
ultralytics/nn/autobackend.py,sha256=MJtvfT9tiJtlLQIp88wnSImMGxwCAqS6fNMZtMJe1ZA,41063
|
200
|
+
ultralytics/nn/tasks.py,sha256=tvoVVqVoMZuylLmUJNDs9eX4bdFbDibQKd3lJed5fYY,70470
|
201
201
|
ultralytics/nn/text_model.py,sha256=lserJWlXNzP31jB4xA-7gkbhB0VsMBGiE9G8wYpztvE,15275
|
202
202
|
ultralytics/nn/modules/__init__.py,sha256=BPMbEm1daI7Tuds3zph2_afAX7Gq1uAqK8BfiCfKTZs,3198
|
203
203
|
ultralytics/nn/modules/activation.py,sha256=75JcIMH2Cu9GTC2Uf55r_5YLpxcrXQDaVoeGQ0hlUAU,2233
|
@@ -236,14 +236,15 @@ ultralytics/trackers/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6D
|
|
236
236
|
ultralytics/trackers/utils/gmc.py,sha256=a4WuIh976_GYogvlQEPKTNE59JNNtSNlT_IPrz4wmrM,14028
|
237
237
|
ultralytics/trackers/utils/kalman_filter.py,sha256=PPmM0lwBMdT_hGojvfLoUsBUFMBBMNRAxKbMcQa3wJ0,21619
|
238
238
|
ultralytics/trackers/utils/matching.py,sha256=uSYtywqi1lE_uNN1FwuBFPyISfDQXHMu8K5KH69nrRI,7160
|
239
|
-
ultralytics/utils/__init__.py,sha256=
|
239
|
+
ultralytics/utils/__init__.py,sha256=8vYownbjAVDmRc2cafLetRjcq-YsUcy1LPKmSrz5yuM,53204
|
240
240
|
ultralytics/utils/autobatch.py,sha256=i6KYLLSItKP1Q2IUlTPHrZhjcxl7UOjs0Seb8bF8pvM,5124
|
241
241
|
ultralytics/utils/autodevice.py,sha256=Od9SGx6xAQoX-3L62PS7I6xOxbbqjYLR4Wipgn5WoDc,8843
|
242
242
|
ultralytics/utils/benchmarks.py,sha256=zKI-DxEqaVmqlE2pg9p6j1kI7Efo1OyM1NnKubYpDU8,31458
|
243
|
-
ultralytics/utils/checks.py,sha256=
|
243
|
+
ultralytics/utils/checks.py,sha256=WBuJKFiXGqf-5n0S_QNwRet3ZxVIFMdG0VPZSoOJwYM,34468
|
244
244
|
ultralytics/utils/dist.py,sha256=A9lDGtGefTjSVvVS38w86GOdbtLzNBDZuDGK0MT4PRI,4170
|
245
245
|
ultralytics/utils/downloads.py,sha256=mLOLonKQsePC15sLVZJzGyLmD_TZPkL1T_qd0gUb4lA,23029
|
246
246
|
ultralytics/utils/errors.py,sha256=XT9Ru7ivoBgofK6PlnyigGoa7Fmf5nEhyHtnD-8TRXI,1584
|
247
|
+
ultralytics/utils/events.py,sha256=v2RmLlx78_K6xQfOAuUTJMOexAgNdiuiOvvnsH65oDA,4679
|
247
248
|
ultralytics/utils/export.py,sha256=xHBBDyI0hGQ1hbUi-uWnCgnFBES77nXqZFtgSrX0VXA,9838
|
248
249
|
ultralytics/utils/files.py,sha256=kxE2rkBuZL288nSN7jxLljmDnBgc16rekEXeRjhbUoo,8213
|
249
250
|
ultralytics/utils/git.py,sha256=DcaxKNQfCiG3cxdzuw7M6l_VXgaSVqkERQt_vl8UyXM,5512
|
@@ -252,28 +253,28 @@ ultralytics/utils/logger.py,sha256=o_vH4CCgQat6_Sbmwm1sUAJ4muAgVcsUed-WqpGNQZw,1
|
|
252
253
|
ultralytics/utils/loss.py,sha256=sC2efov3Uwg2eT5oOzMHRfnQLZvtGXSdMuWBTKxyxPw,39816
|
253
254
|
ultralytics/utils/metrics.py,sha256=9nykBkIy6soJebhc31UpaQghC4kz8e0qUpGpnr4yaGs,68809
|
254
255
|
ultralytics/utils/nms.py,sha256=wCRQ7O7shv5ccEWHgtF9Ky_vUeyumxFLWBFEj1h0U54,14199
|
255
|
-
ultralytics/utils/ops.py,sha256=
|
256
|
+
ultralytics/utils/ops.py,sha256=_qd_MY6IJQbhdihNvJCRe4Ws22awGrS2QUuRFdkk-EI,26886
|
256
257
|
ultralytics/utils/patches.py,sha256=j0fXwX3YqKrON7yrmSVkXsn__tsvs4qVuysH-hzcxOE,6541
|
257
258
|
ultralytics/utils/plotting.py,sha256=6iPtxQJ7JFTv2vWpSzP90plkksXhvql1EVQaKomkuiQ,47515
|
258
|
-
ultralytics/utils/tal.py,sha256=
|
259
|
-
ultralytics/utils/torch_utils.py,sha256=
|
260
|
-
ultralytics/utils/tqdm.py,sha256=
|
259
|
+
ultralytics/utils/tal.py,sha256=LrziY_ZHz4wln3oOnqAzgyPaXKoup17Sa103BpuaQFU,20935
|
260
|
+
ultralytics/utils/torch_utils.py,sha256=SKgOEaa2_7k7tGI4VfNWcQV4wvjLWVUusJreEc4bPmI,39488
|
261
|
+
ultralytics/utils/tqdm.py,sha256=ny5RIg2OTkWQ7gdaXfYaoIgR0Xn2_hNGB6tUpO2Unns,16137
|
261
262
|
ultralytics/utils/triton.py,sha256=-qG-ZP5uotcD8FZyaAcEGHX7Cv9_yBG8UHvmmXpYZkM,5422
|
262
|
-
ultralytics/utils/tuner.py,sha256=
|
263
|
+
ultralytics/utils/tuner.py,sha256=9D4dSIvwwxcNSJcH2QJ92qiIVi9zu-1L7_PBZ8okDyE,6816
|
263
264
|
ultralytics/utils/callbacks/__init__.py,sha256=hzL63Rce6VkZhP4Lcim9LKjadixaQG86nKqPhk7IkS0,242
|
264
265
|
ultralytics/utils/callbacks/base.py,sha256=dGir0vkJY4jjprW63e23Qy4kHUT5dOINPii6HnwJuPg,6893
|
265
266
|
ultralytics/utils/callbacks/clearml.py,sha256=xr5mZT_cY6AY_drbdCXFt-Dp2fOjRELxLDhDoRhNPg8,6067
|
266
267
|
ultralytics/utils/callbacks/comet.py,sha256=t-O4Kc57wLFFEclyl6XJWAixrNle0mpZK5IEM__WoTY,25393
|
267
268
|
ultralytics/utils/callbacks/dvc.py,sha256=NV0DXMQ1B5Sk5fmh60QFUGkifrAz-vwit5qhdfsyqXc,7511
|
268
|
-
ultralytics/utils/callbacks/hub.py,sha256=
|
269
|
+
ultralytics/utils/callbacks/hub.py,sha256=fVLqqr3ZM6hoYFlVMEeejfq1MWDrkWCskPFOG3HGILQ,4159
|
269
270
|
ultralytics/utils/callbacks/mlflow.py,sha256=6K8I5zij1yq3TUW9c5BBQNqdzz3IXugQjwKoBOvV6ag,5344
|
270
271
|
ultralytics/utils/callbacks/neptune.py,sha256=j8pecmlcsM8FGzLKWoBw5xUsi5t8E5HuxY7TR5Um_O8,4612
|
271
272
|
ultralytics/utils/callbacks/platform.py,sha256=a7T_8htoBB0uX1WIc392UJnhDjxkRyQMvhPYKR6wUTU,2008
|
272
273
|
ultralytics/utils/callbacks/raytune.py,sha256=S6Bq16oQDQ8BQgnZzA0zJHGN_BBr8iAM_WtGoLiEcwg,1283
|
273
274
|
ultralytics/utils/callbacks/tensorboard.py,sha256=MDPBW7aDes-66OE6YqKXXvqA_EocjzEMHWGM-8z9vUQ,5281
|
274
275
|
ultralytics/utils/callbacks/wb.py,sha256=ngQO8EJ1kxJDF1YajScVtzBbm26jGuejA0uWeOyvf5A,7685
|
275
|
-
dgenerate_ultralytics_headless-8.3.
|
276
|
-
dgenerate_ultralytics_headless-8.3.
|
277
|
-
dgenerate_ultralytics_headless-8.3.
|
278
|
-
dgenerate_ultralytics_headless-8.3.
|
279
|
-
dgenerate_ultralytics_headless-8.3.
|
276
|
+
dgenerate_ultralytics_headless-8.3.194.dist-info/METADATA,sha256=oq51YJjYcvtWGhR3ImIeGQVbsoQUhyY9R6LEkLaXm7Y,38789
|
277
|
+
dgenerate_ultralytics_headless-8.3.194.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
278
|
+
dgenerate_ultralytics_headless-8.3.194.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
|
279
|
+
dgenerate_ultralytics_headless-8.3.194.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
|
280
|
+
dgenerate_ultralytics_headless-8.3.194.dist-info/RECORD,,
|
tests/test_exports.py
CHANGED
@@ -120,14 +120,16 @@ def test_export_torchscript_matrix(task, dynamic, int8, half, batch, nms):
|
|
120
120
|
@pytest.mark.skipif(not TORCH_1_9, reason="CoreML>=7.2 not supported with PyTorch<=1.8")
|
121
121
|
@pytest.mark.skipif(checks.IS_PYTHON_3_13, reason="CoreML not supported in Python 3.13")
|
122
122
|
@pytest.mark.parametrize(
|
123
|
-
"task, dynamic, int8, half, batch",
|
123
|
+
"task, dynamic, int8, half, nms, batch",
|
124
124
|
[ # generate all combinations except for exclusion cases
|
125
|
-
(task, dynamic, int8, half, batch)
|
126
|
-
for task, dynamic, int8, half, batch in product(
|
127
|
-
|
125
|
+
(task, dynamic, int8, half, nms, batch)
|
126
|
+
for task, dynamic, int8, half, nms, batch in product(
|
127
|
+
TASKS, [False], [True, False], [True, False], [True, False], [1]
|
128
|
+
)
|
129
|
+
if not (int8 and half) and not (task != "detect" and nms)
|
128
130
|
],
|
129
131
|
)
|
130
|
-
def test_export_coreml_matrix(task, dynamic, int8, half, batch):
|
132
|
+
def test_export_coreml_matrix(task, dynamic, int8, half, nms, batch):
|
131
133
|
"""Test YOLO export to CoreML format with various parameter configurations."""
|
132
134
|
file = YOLO(TASK2MODEL[task]).export(
|
133
135
|
format="coreml",
|
@@ -136,6 +138,7 @@ def test_export_coreml_matrix(task, dynamic, int8, half, batch):
|
|
136
138
|
int8=int8,
|
137
139
|
half=half,
|
138
140
|
batch=batch,
|
141
|
+
nms=nms,
|
139
142
|
)
|
140
143
|
YOLO(file)([SOURCE] * batch, imgsz=32) # exported model inference
|
141
144
|
shutil.rmtree(file) # cleanup
|
tests/test_python.py
CHANGED
ultralytics/__init__.py
CHANGED
ultralytics/cfg/__init__.py
CHANGED
@@ -15,6 +15,7 @@ from ultralytics.utils import (
|
|
15
15
|
DEFAULT_CFG,
|
16
16
|
DEFAULT_CFG_DICT,
|
17
17
|
DEFAULT_CFG_PATH,
|
18
|
+
FLOAT_OR_INT,
|
18
19
|
IS_VSCODE,
|
19
20
|
LOGGER,
|
20
21
|
RANK,
|
@@ -22,6 +23,7 @@ from ultralytics.utils import (
|
|
22
23
|
RUNS_DIR,
|
23
24
|
SETTINGS,
|
24
25
|
SETTINGS_FILE,
|
26
|
+
STR_OR_PATH,
|
25
27
|
TESTS_RUNNING,
|
26
28
|
YAML,
|
27
29
|
IterableSimpleNamespace,
|
@@ -267,7 +269,7 @@ def cfg2dict(cfg: str | Path | dict | SimpleNamespace) -> dict:
|
|
267
269
|
- If cfg is a SimpleNamespace object, it's converted to a dictionary using vars().
|
268
270
|
- If cfg is already a dictionary, it's returned unchanged.
|
269
271
|
"""
|
270
|
-
if isinstance(cfg,
|
272
|
+
if isinstance(cfg, STR_OR_PATH):
|
271
273
|
cfg = YAML.load(cfg) # load dict
|
272
274
|
elif isinstance(cfg, SimpleNamespace):
|
273
275
|
cfg = vars(cfg) # convert to dict
|
@@ -309,7 +311,7 @@ def get_cfg(cfg: str | Path | dict | SimpleNamespace = DEFAULT_CFG_DICT, overrid
|
|
309
311
|
|
310
312
|
# Special handling for numeric project/name
|
311
313
|
for k in "project", "name":
|
312
|
-
if k in cfg and isinstance(cfg[k],
|
314
|
+
if k in cfg and isinstance(cfg[k], FLOAT_OR_INT):
|
313
315
|
cfg[k] = str(cfg[k])
|
314
316
|
if cfg.get("name") == "model": # assign model to 'name' arg
|
315
317
|
cfg["name"] = str(cfg.get("model", "")).partition(".")[0]
|
@@ -352,7 +354,7 @@ def check_cfg(cfg: dict, hard: bool = True) -> None:
|
|
352
354
|
"""
|
353
355
|
for k, v in cfg.items():
|
354
356
|
if v is not None: # None values may be from optional args
|
355
|
-
if k in CFG_FLOAT_KEYS and not isinstance(v,
|
357
|
+
if k in CFG_FLOAT_KEYS and not isinstance(v, FLOAT_OR_INT):
|
356
358
|
if hard:
|
357
359
|
raise TypeError(
|
358
360
|
f"'{k}={v}' is of invalid type {type(v).__name__}. "
|
@@ -360,7 +362,7 @@ def check_cfg(cfg: dict, hard: bool = True) -> None:
|
|
360
362
|
)
|
361
363
|
cfg[k] = float(v)
|
362
364
|
elif k in CFG_FRACTION_KEYS:
|
363
|
-
if not isinstance(v,
|
365
|
+
if not isinstance(v, FLOAT_OR_INT):
|
364
366
|
if hard:
|
365
367
|
raise TypeError(
|
366
368
|
f"'{k}={v}' is of invalid type {type(v).__name__}. "
|
@@ -413,7 +415,7 @@ def get_save_dir(args: SimpleNamespace, name: str = None) -> Path:
|
|
413
415
|
name = name or args.name or f"{args.mode}"
|
414
416
|
save_dir = increment_path(Path(project) / name, exist_ok=args.exist_ok if RANK in {-1, 0} else True)
|
415
417
|
|
416
|
-
return Path(save_dir)
|
418
|
+
return Path(save_dir).resolve() # resolve to display full path in console
|
417
419
|
|
418
420
|
|
419
421
|
def _handle_deprecation(custom: dict) -> dict:
|
ultralytics/data/utils.py
CHANGED
@@ -216,7 +216,7 @@ def verify_image_label(args: tuple) -> list:
|
|
216
216
|
points = lb[:, 1:]
|
217
217
|
# Coordinate points check with 1% tolerance
|
218
218
|
assert points.max() <= 1.01, f"non-normalized or out of bounds coordinates {points[points > 1.01]}"
|
219
|
-
assert lb.min() >= -0.01, f"negative class labels {lb[lb < -0.01]}"
|
219
|
+
assert lb.min() >= -0.01, f"negative class labels or coordinate {lb[lb < -0.01]}"
|
220
220
|
|
221
221
|
# All labels
|
222
222
|
max_cls = 0 if single_cls else lb[:, 0].max() # max label count
|
ultralytics/engine/exporter.py
CHANGED
@@ -90,6 +90,7 @@ from ultralytics.utils import (
|
|
90
90
|
RKNN_CHIPS,
|
91
91
|
ROOT,
|
92
92
|
SETTINGS,
|
93
|
+
TORCH_VERSION,
|
93
94
|
WINDOWS,
|
94
95
|
YAML,
|
95
96
|
callbacks,
|
@@ -567,7 +568,7 @@ class Exporter:
|
|
567
568
|
@try_export
|
568
569
|
def export_torchscript(self, prefix=colorstr("TorchScript:")):
|
569
570
|
"""Export YOLO model to TorchScript format."""
|
570
|
-
LOGGER.info(f"\n{prefix} starting export with torch {
|
571
|
+
LOGGER.info(f"\n{prefix} starting export with torch {TORCH_VERSION}...")
|
571
572
|
f = self.file.with_suffix(".torchscript")
|
572
573
|
|
573
574
|
ts = torch.jit.trace(NMSModel(self.model, self.args) if self.args.nms else self.model, self.im, strict=False)
|
@@ -586,7 +587,7 @@ class Exporter:
|
|
586
587
|
"""Export YOLO model to ONNX format."""
|
587
588
|
requirements = ["onnx>=1.12.0"]
|
588
589
|
if self.args.simplify:
|
589
|
-
requirements += ["onnxslim>=0.1.
|
590
|
+
requirements += ["onnxslim>=0.1.67", "onnxruntime" + ("-gpu" if torch.cuda.is_available() else "")]
|
590
591
|
check_requirements(requirements)
|
591
592
|
import onnx # noqa
|
592
593
|
|
@@ -648,7 +649,7 @@ class Exporter:
|
|
648
649
|
import openvino as ov
|
649
650
|
|
650
651
|
LOGGER.info(f"\n{prefix} starting export with openvino {ov.__version__}...")
|
651
|
-
assert TORCH_1_13, f"OpenVINO export requires torch>=1.13.0 but torch=={
|
652
|
+
assert TORCH_1_13, f"OpenVINO export requires torch>=1.13.0 but torch=={TORCH_VERSION} is installed"
|
652
653
|
ov_model = ov.convert_model(
|
653
654
|
NMSModel(self.model, self.args) if self.args.nms else self.model,
|
654
655
|
input=None if self.args.dynamic else [self.im.shape],
|
@@ -954,17 +955,17 @@ class Exporter:
|
|
954
955
|
try:
|
955
956
|
import tensorflow as tf # noqa
|
956
957
|
except ImportError:
|
957
|
-
check_requirements("tensorflow>=2.0.0")
|
958
|
+
check_requirements("tensorflow>=2.0.0,<=2.19.0")
|
958
959
|
import tensorflow as tf # noqa
|
959
960
|
check_requirements(
|
960
961
|
(
|
961
|
-
"tf_keras", # required by 'onnx2tf' package
|
962
|
+
"tf_keras<=2.19.0", # required by 'onnx2tf' package
|
962
963
|
"sng4onnx>=1.0.1", # required by 'onnx2tf' package
|
963
964
|
"onnx_graphsurgeon>=0.3.26", # required by 'onnx2tf' package
|
964
965
|
"ai-edge-litert>=1.2.0,<1.4.0", # required by 'onnx2tf' package
|
965
966
|
"onnx>=1.12.0",
|
966
967
|
"onnx2tf>=1.26.3",
|
967
|
-
"onnxslim>=0.1.
|
968
|
+
"onnxslim>=0.1.67",
|
968
969
|
"onnxruntime-gpu" if cuda else "onnxruntime",
|
969
970
|
"protobuf>=5",
|
970
971
|
),
|
ultralytics/engine/model.py
CHANGED
@@ -12,7 +12,7 @@ from PIL import Image
|
|
12
12
|
|
13
13
|
from ultralytics.cfg import TASK2DATA, get_cfg, get_save_dir
|
14
14
|
from ultralytics.engine.results import Results
|
15
|
-
from ultralytics.nn.tasks import
|
15
|
+
from ultralytics.nn.tasks import guess_model_task, load_checkpoint, yaml_model_load
|
16
16
|
from ultralytics.utils import (
|
17
17
|
ARGV,
|
18
18
|
ASSETS,
|
@@ -294,7 +294,7 @@ class Model(torch.nn.Module):
|
|
294
294
|
weights = checks.check_model_file_from_stem(weights) # add suffix, i.e. yolo11n -> yolo11n.pt
|
295
295
|
|
296
296
|
if str(weights).rpartition(".")[-1] == "pt":
|
297
|
-
self.model, self.ckpt =
|
297
|
+
self.model, self.ckpt = load_checkpoint(weights)
|
298
298
|
self.task = self.model.task
|
299
299
|
self.overrides = self.model.args = self._reset_ckpt_args(self.model.args)
|
300
300
|
self.ckpt_path = self.model.pt_path
|
@@ -385,7 +385,7 @@ class Model(torch.nn.Module):
|
|
385
385
|
self._check_is_pytorch_model()
|
386
386
|
if isinstance(weights, (str, Path)):
|
387
387
|
self.overrides["pretrained"] = weights # remember the weights for DDP training
|
388
|
-
weights, self.ckpt =
|
388
|
+
weights, self.ckpt = load_checkpoint(weights)
|
389
389
|
self.model.load(weights)
|
390
390
|
return self
|
391
391
|
|
@@ -802,7 +802,7 @@ class Model(torch.nn.Module):
|
|
802
802
|
# Update model and cfg after training
|
803
803
|
if RANK in {-1, 0}:
|
804
804
|
ckpt = self.trainer.best if self.trainer.best.exists() else self.trainer.last
|
805
|
-
self.model, self.ckpt =
|
805
|
+
self.model, self.ckpt = load_checkpoint(ckpt)
|
806
806
|
self.overrides = self.model.args
|
807
807
|
self.metrics = getattr(self.trainer.validator, "metrics", None) # TODO: no metrics returned by DDP
|
808
808
|
return self.metrics
|
ultralytics/engine/predictor.py
CHANGED
@@ -266,13 +266,17 @@ class BasePredictor:
|
|
266
266
|
channels=getattr(self.model, "ch", 3),
|
267
267
|
)
|
268
268
|
self.source_type = self.dataset.source_type
|
269
|
-
|
269
|
+
long_sequence = (
|
270
270
|
self.source_type.stream
|
271
271
|
or self.source_type.screenshot
|
272
272
|
or len(self.dataset) > 1000 # many images
|
273
273
|
or any(getattr(self.dataset, "video_flag", [False]))
|
274
|
-
)
|
275
|
-
|
274
|
+
)
|
275
|
+
if long_sequence:
|
276
|
+
import torchvision # noqa (import here triggers torchvision NMS use in nms.py)
|
277
|
+
|
278
|
+
if not getattr(self, "stream", True): # videos
|
279
|
+
LOGGER.warning(STREAM_WARNING)
|
276
280
|
self.vid_writer = {}
|
277
281
|
|
278
282
|
@smart_inference_mode()
|
ultralytics/engine/trainer.py
CHANGED
@@ -24,7 +24,7 @@ from torch import nn, optim
|
|
24
24
|
from ultralytics import __version__
|
25
25
|
from ultralytics.cfg import get_cfg, get_save_dir
|
26
26
|
from ultralytics.data.utils import check_cls_dataset, check_det_dataset
|
27
|
-
from ultralytics.nn.tasks import
|
27
|
+
from ultralytics.nn.tasks import load_checkpoint
|
28
28
|
from ultralytics.utils import (
|
29
29
|
DEFAULT_CFG,
|
30
30
|
GIT,
|
@@ -644,10 +644,10 @@ class BaseTrainer:
|
|
644
644
|
cfg, weights = self.model, None
|
645
645
|
ckpt = None
|
646
646
|
if str(self.model).endswith(".pt"):
|
647
|
-
weights, ckpt =
|
647
|
+
weights, ckpt = load_checkpoint(self.model)
|
648
648
|
cfg = weights.yaml
|
649
649
|
elif isinstance(self.args.pretrained, (str, Path)):
|
650
|
-
weights, _ =
|
650
|
+
weights, _ = load_checkpoint(self.args.pretrained)
|
651
651
|
self.model = self.get_model(cfg=cfg, weights=weights, verbose=RANK == -1) # calls Model(cfg, weights)
|
652
652
|
return ckpt
|
653
653
|
|
@@ -768,7 +768,7 @@ class BaseTrainer:
|
|
768
768
|
last = Path(check_file(resume) if exists else get_latest_run())
|
769
769
|
|
770
770
|
# Check that resume data YAML exists, otherwise strip to force re-download of dataset
|
771
|
-
ckpt_args =
|
771
|
+
ckpt_args = load_checkpoint(last)[0].args
|
772
772
|
if not isinstance(ckpt_args["data"], dict) and not Path(ckpt_args["data"]).exists():
|
773
773
|
ckpt_args["data"] = self.args.data
|
774
774
|
|
ultralytics/hub/__init__.py
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
from ultralytics.data.utils import HUBDatasetStats
|
4
4
|
from ultralytics.hub.auth import Auth
|
5
5
|
from ultralytics.hub.session import HUBTrainingSession
|
6
|
-
from ultralytics.hub.utils import HUB_API_ROOT, HUB_WEB_ROOT, PREFIX
|
6
|
+
from ultralytics.hub.utils import HUB_API_ROOT, HUB_WEB_ROOT, PREFIX
|
7
7
|
from ultralytics.utils import LOGGER, SETTINGS, checks
|
8
8
|
|
9
9
|
__all__ = (
|
@@ -17,7 +17,6 @@ __all__ = (
|
|
17
17
|
"export_model",
|
18
18
|
"get_export",
|
19
19
|
"check_dataset",
|
20
|
-
"events",
|
21
20
|
)
|
22
21
|
|
23
22
|
|
ultralytics/hub/utils.py
CHANGED
@@ -1,31 +1,17 @@
|
|
1
1
|
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
2
2
|
|
3
3
|
import os
|
4
|
-
import random
|
5
4
|
import threading
|
6
5
|
import time
|
7
|
-
from pathlib import Path
|
8
6
|
from typing import Any
|
9
7
|
|
10
|
-
from ultralytics import __version__
|
11
8
|
from ultralytics.utils import (
|
12
|
-
ARGV,
|
13
|
-
ENVIRONMENT,
|
14
|
-
GIT,
|
15
9
|
IS_COLAB,
|
16
|
-
IS_PIP_PACKAGE,
|
17
10
|
LOGGER,
|
18
|
-
ONLINE,
|
19
|
-
PYTHON_VERSION,
|
20
|
-
RANK,
|
21
|
-
SETTINGS,
|
22
|
-
TESTS_RUNNING,
|
23
11
|
TQDM,
|
24
12
|
TryExcept,
|
25
13
|
colorstr,
|
26
14
|
)
|
27
|
-
from ultralytics.utils.downloads import GITHUB_ASSETS_NAMES
|
28
|
-
from ultralytics.utils.torch_utils import get_cpu_info
|
29
15
|
|
30
16
|
HUB_API_ROOT = os.environ.get("ULTRALYTICS_HUB_API", "https://api.ultralytics.com")
|
31
17
|
HUB_WEB_ROOT = os.environ.get("ULTRALYTICS_HUB_WEB", "https://hub.ultralytics.com")
|
@@ -177,90 +163,3 @@ def smart_request(
|
|
177
163
|
threading.Thread(target=func, args=args, kwargs=kwargs, daemon=True).start()
|
178
164
|
else:
|
179
165
|
return func(*args, **kwargs)
|
180
|
-
|
181
|
-
|
182
|
-
class Events:
|
183
|
-
"""
|
184
|
-
A class for collecting anonymous event analytics.
|
185
|
-
|
186
|
-
Event analytics are enabled when sync=True in settings and disabled when sync=False. Run 'yolo settings' to see and
|
187
|
-
update settings.
|
188
|
-
|
189
|
-
Attributes:
|
190
|
-
url (str): The URL to send anonymous events.
|
191
|
-
events (list): List of collected events to be sent.
|
192
|
-
rate_limit (float): The rate limit in seconds for sending events.
|
193
|
-
t (float): Rate limit timer in seconds.
|
194
|
-
metadata (dict): A dictionary containing metadata about the environment.
|
195
|
-
enabled (bool): A flag to enable or disable Events based on certain conditions.
|
196
|
-
"""
|
197
|
-
|
198
|
-
url = "https://www.google-analytics.com/mp/collect?measurement_id=G-X8NCJYTQXM&api_secret=QLQrATrNSwGRFRLE-cbHJw"
|
199
|
-
|
200
|
-
def __init__(self):
|
201
|
-
"""Initialize the Events object with default values for events, rate_limit, and metadata."""
|
202
|
-
self.events = [] # events list
|
203
|
-
self.rate_limit = 30.0 # rate limit (seconds)
|
204
|
-
self.t = 0.0 # rate limit timer (seconds)
|
205
|
-
self.metadata = {
|
206
|
-
"cli": Path(ARGV[0]).name == "yolo",
|
207
|
-
"install": "git" if GIT.is_repo else "pip" if IS_PIP_PACKAGE else "other",
|
208
|
-
"python": PYTHON_VERSION.rsplit(".", 1)[0], # i.e. 3.13
|
209
|
-
"CPU": get_cpu_info(),
|
210
|
-
# "GPU": get_gpu_info(index=0) if cuda else None,
|
211
|
-
"version": __version__,
|
212
|
-
"env": ENVIRONMENT,
|
213
|
-
"session_id": round(random.random() * 1e15),
|
214
|
-
"engagement_time_msec": 1000,
|
215
|
-
}
|
216
|
-
self.enabled = (
|
217
|
-
SETTINGS["sync"]
|
218
|
-
and RANK in {-1, 0}
|
219
|
-
and not TESTS_RUNNING
|
220
|
-
and ONLINE
|
221
|
-
and (IS_PIP_PACKAGE or GIT.origin == "https://github.com/ultralytics/ultralytics.git")
|
222
|
-
)
|
223
|
-
|
224
|
-
def __call__(self, cfg, device=None):
|
225
|
-
"""
|
226
|
-
Attempt to add a new event to the events list and send events if the rate limit is reached.
|
227
|
-
|
228
|
-
Args:
|
229
|
-
cfg (IterableSimpleNamespace): The configuration object containing mode and task information.
|
230
|
-
device (torch.device | str, optional): The device type (e.g., 'cpu', 'cuda').
|
231
|
-
"""
|
232
|
-
if not self.enabled:
|
233
|
-
# Events disabled, do nothing
|
234
|
-
return
|
235
|
-
|
236
|
-
# Attempt to add to events
|
237
|
-
if len(self.events) < 25: # Events list limited to 25 events (drop any events past this)
|
238
|
-
params = {
|
239
|
-
**self.metadata,
|
240
|
-
"task": cfg.task,
|
241
|
-
"model": cfg.model if cfg.model in GITHUB_ASSETS_NAMES else "custom",
|
242
|
-
"device": str(device),
|
243
|
-
}
|
244
|
-
if cfg.mode == "export":
|
245
|
-
params["format"] = cfg.format
|
246
|
-
self.events.append({"name": cfg.mode, "params": params})
|
247
|
-
|
248
|
-
# Check rate limit
|
249
|
-
t = time.time()
|
250
|
-
if (t - self.t) < self.rate_limit:
|
251
|
-
# Time is under rate limiter, wait to send
|
252
|
-
return
|
253
|
-
|
254
|
-
# Time is over rate limiter, send now
|
255
|
-
data = {"client_id": SETTINGS["uuid"], "events": self.events} # SHA-256 anonymized UUID hash and events list
|
256
|
-
|
257
|
-
# POST equivalent to requests.post(self.url, json=data)
|
258
|
-
smart_request("post", self.url, json=data, retry=0, verbose=False)
|
259
|
-
|
260
|
-
# Reset events and rate limit timer
|
261
|
-
self.events = []
|
262
|
-
self.t = t
|
263
|
-
|
264
|
-
|
265
|
-
# Run below code on hub/utils init -------------------------------------------------------------------------------------
|
266
|
-
events = Events()
|
@@ -1761,7 +1761,7 @@ class SAM2DynamicInteractivePredictor(SAM2Predictor):
|
|
1761
1761
|
@smart_inference_mode()
|
1762
1762
|
def inference(
|
1763
1763
|
self,
|
1764
|
-
|
1764
|
+
im: torch.Tensor | np.ndarray,
|
1765
1765
|
bboxes: list[list[float]] | None = None,
|
1766
1766
|
masks: torch.Tensor | np.ndarray | None = None,
|
1767
1767
|
points: list[list[float]] | None = None,
|
@@ -1777,7 +1777,7 @@ class SAM2DynamicInteractivePredictor(SAM2Predictor):
|
|
1777
1777
|
When update_memory is False, it will only run inference on the provided image without updating the memory.
|
1778
1778
|
|
1779
1779
|
Args:
|
1780
|
-
|
1780
|
+
im (torch.Tensor | np.ndarray): The input image tensor or numpy array.
|
1781
1781
|
bboxes (List[List[float]] | None): Optional list of bounding boxes to update the memory.
|
1782
1782
|
masks (List[torch.Tensor | np.ndarray] | None): Optional masks to update the memory.
|
1783
1783
|
points (List[List[float]] | None): Optional list of points to update the memory, each point is [x, y].
|
@@ -1789,7 +1789,7 @@ class SAM2DynamicInteractivePredictor(SAM2Predictor):
|
|
1789
1789
|
res_masks (torch.Tensor): The output masks in shape (C, H, W)
|
1790
1790
|
object_score_logits (torch.Tensor): Quality scores for each mask
|
1791
1791
|
"""
|
1792
|
-
self.get_im_features(
|
1792
|
+
self.get_im_features(im)
|
1793
1793
|
points, labels, masks = self._prepare_prompts(
|
1794
1794
|
dst_shape=self.imgsz,
|
1795
1795
|
src_shape=self.batch[1][0].shape[:2],
|