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.
Files changed (33) hide show
  1. {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/METADATA +1 -1
  2. {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/RECORD +33 -32
  3. tests/test_exports.py +8 -5
  4. tests/test_python.py +1 -1
  5. ultralytics/__init__.py +1 -1
  6. ultralytics/cfg/__init__.py +7 -5
  7. ultralytics/cfg/datasets/xView.yaml +1 -1
  8. ultralytics/data/utils.py +1 -1
  9. ultralytics/engine/exporter.py +7 -6
  10. ultralytics/engine/model.py +4 -4
  11. ultralytics/engine/predictor.py +7 -3
  12. ultralytics/engine/trainer.py +4 -4
  13. ultralytics/hub/__init__.py +1 -2
  14. ultralytics/hub/utils.py +0 -101
  15. ultralytics/models/sam/predict.py +3 -3
  16. ultralytics/models/yolo/segment/val.py +13 -13
  17. ultralytics/models/yolo/yoloe/val.py +2 -2
  18. ultralytics/nn/__init__.py +2 -4
  19. ultralytics/nn/autobackend.py +10 -13
  20. ultralytics/nn/tasks.py +2 -51
  21. ultralytics/utils/__init__.py +6 -3
  22. ultralytics/utils/callbacks/hub.py +2 -1
  23. ultralytics/utils/checks.py +2 -1
  24. ultralytics/utils/events.py +115 -0
  25. ultralytics/utils/ops.py +3 -1
  26. ultralytics/utils/tal.py +2 -2
  27. ultralytics/utils/torch_utils.py +7 -6
  28. ultralytics/utils/tqdm.py +49 -74
  29. ultralytics/utils/tuner.py +1 -1
  30. {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/WHEEL +0 -0
  31. {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/entry_points.txt +0 -0
  32. {dgenerate_ultralytics_headless-8.3.192.dist-info → dgenerate_ultralytics_headless-8.3.194.dist-info}/licenses/LICENSE +0 -0
  33. {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.192
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.192.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
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=jBMAWADCqBsPaZuhZKU7JgQVA0gfYHHFwOI6kx84bqo,10885
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=IpjqS2wKSfZaukSdW7QtXeyijXxZ1uXiJLEdlkK_0jQ,27908
9
+ tests/test_python.py,sha256=FGZ2XabwLmXLcKTmsQHBBbxoVTCmk0B1ACcTWUBIUIo,27911
10
10
  tests/test_solutions.py,sha256=6wJ9-lhyWSAm7zaR4D9L_DrUA3iJU1NgqmbQO6PIuvo,13211
11
- ultralytics/__init__.py,sha256=fv9DpTt7g968y9c4iYJYq0uIRnM0qwT9YwnFXdpxv7o,730
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=B6lVzv3ISXgZFgKv8cB1YumCvhFUDVr7RNXbHGF3V9Q,39867
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=P347BJlmb7AG7YC29JyyOtNy52QqZ87Sn7gFP8Dx86s,5353
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=Y92D9qxVBZ0uOdhYbFctcBZhRTxOiYYwfFQsVYwtS-8,36702
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=llc7LdSYD1bkwFw3iUs_xHEZZQk6wE64R6a6LNduUzU,75400
125
- ultralytics/engine/model.py,sha256=oxlYx1nMEOcqLFr_clFhWv3Lni-Ykl3-k1NX9JoHiqY,53520
126
- ultralytics/engine/predictor.py,sha256=bPG_YOnrtXr8zM8QGEkgJJWT5zaDJsN9hEhH6sEkYUs,22478
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=VXgBtW7S7-6XoUQKzQIE6gV4kSo-TPDXHzrT4OAUasg,40505
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=RmrZw24uyFF109SLVba1s-ItjllfzRKlCgQ_U0RVRUo,6720
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=eQRtJ1KzdiWgj_-7cVgEKxeFWaQbxw9sJLtoX7Up8wg,10189
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=yplRzYQ3KalzXGh3PD90XaefW6R4iWmWRV_3Hn9UA78,104966
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=8ASdhhSaJ4NjRFHEuL26Uwt4zTKyXmcGvokHVg74ZsE,11345
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=6uLH3znvn4iF_4F9RCbXWtiy9lsSQBUC9KrhU_2rIQs,9787
198
- ultralytics/nn/__init__.py,sha256=rjociYD9lo_K-d-1s6TbdWklPLjTcEHk7OIlRDJstIE,615
199
- ultralytics/nn/autobackend.py,sha256=lvotDJeABLcF7Xb0muAoxM6V3MI0EWKq9vAClHbm7tI,41376
200
- ultralytics/nn/tasks.py,sha256=WSEA_odbXC0R_EGlcoOUhvE8ERIj62-7Tt9rWbo54nE,72480
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=AKhyF3aM0jwcgAlA2w6ZwAb6K2AQJAxY4q3GnETOxFY,53065
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=jLM9CuKI6aZGIGG4W2n_CORCApGnUb2a1Z5YH87ngew,34453
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=z6feVEbs57eN18Nl4IEdhgUiChGAZrq4bQjDkp-0MxA,26630
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=K3lPxC3bbduP8ho-toJ9VHnklo5IaGkqogEaQorbrvs,20924
259
- ultralytics/utils/torch_utils.py,sha256=UrFD-R-3XhYSHgFg3rF2HGyk0YojM2jNCyxiIsOb-TY,39493
260
- ultralytics/utils/tqdm.py,sha256=UyCozFXNACO0C_zE2fcqO9IFsbNYVAbJ_zCObyNb8nY,16908
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=bHr09Fz-0-t0ei55gX5wJh-obyiAQoicP7HUVM2I8qA,6826
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=IZ8lldLfxI0SvMnG9aWGWj59JFSks_x11L2is26ajd0,4123
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.192.dist-info/METADATA,sha256=I7BGHAsTcMR9_eqnSCrL1FyCSzsfQn2RKDXW-XsYfAQ,38789
276
- dgenerate_ultralytics_headless-8.3.192.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
277
- dgenerate_ultralytics_headless-8.3.192.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
278
- dgenerate_ultralytics_headless-8.3.192.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
279
- dgenerate_ultralytics_headless-8.3.192.dist-info/RECORD,,
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(TASKS, [False], [True, False], [True, False], [1])
127
- if not (int8 and half)
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
@@ -375,7 +375,7 @@ def test_data_annotator():
375
375
 
376
376
  def test_events():
377
377
  """Test event sending functionality."""
378
- from ultralytics.hub.utils import Events
378
+ from ultralytics.utils.events import Events
379
379
 
380
380
  events = Events()
381
381
  events.enabled = True
ultralytics/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.192"
3
+ __version__ = "8.3.194"
4
4
 
5
5
  import os
6
6
 
@@ -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, (str, Path)):
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], (int, float)):
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, (int, float)):
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, (int, float)):
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:
@@ -87,7 +87,7 @@ download: |
87
87
  from PIL import Image
88
88
 
89
89
  from ultralytics.utils import TQDM
90
- from ultralytics.data.utils import autosplit
90
+ from ultralytics.data.split import autosplit
91
91
  from ultralytics.utils.ops import xyxy2xywhn
92
92
 
93
93
 
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
@@ -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 {torch.__version__}...")
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.65", "onnxruntime" + ("-gpu" if torch.cuda.is_available() else "")]
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=={torch.__version__} is installed"
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.65",
968
+ "onnxslim>=0.1.67",
968
969
  "onnxruntime-gpu" if cuda else "onnxruntime",
969
970
  "protobuf>=5",
970
971
  ),
@@ -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 attempt_load_one_weight, guess_model_task, yaml_model_load
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 = attempt_load_one_weight(weights)
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 = attempt_load_one_weight(weights)
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 = attempt_load_one_weight(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
@@ -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
- if not getattr(self, "stream", True) and (
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
- ): # videos
275
- LOGGER.warning(STREAM_WARNING)
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()
@@ -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 attempt_load_one_weight, attempt_load_weights
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 = attempt_load_one_weight(self.model)
647
+ weights, ckpt = load_checkpoint(self.model)
648
648
  cfg = weights.yaml
649
649
  elif isinstance(self.args.pretrained, (str, Path)):
650
- weights, _ = attempt_load_one_weight(self.args.pretrained)
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 = attempt_load_weights(last).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
 
@@ -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, events
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
- img: torch.Tensor | np.ndarray,
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
- img (torch.Tensor | np.ndarray): The input image tensor or numpy array.
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(img)
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],