dgenerate-ultralytics-headless 8.3.185__py3-none-any.whl → 8.3.187__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 (31) hide show
  1. {dgenerate_ultralytics_headless-8.3.185.dist-info → dgenerate_ultralytics_headless-8.3.187.dist-info}/METADATA +6 -8
  2. {dgenerate_ultralytics_headless-8.3.185.dist-info → dgenerate_ultralytics_headless-8.3.187.dist-info}/RECORD +31 -30
  3. tests/test_python.py +2 -10
  4. ultralytics/__init__.py +1 -1
  5. ultralytics/cfg/datasets/Argoverse.yaml +2 -2
  6. ultralytics/cfg/datasets/Objects365.yaml +3 -3
  7. ultralytics/cfg/datasets/SKU-110K.yaml +4 -4
  8. ultralytics/cfg/datasets/VOC.yaml +2 -4
  9. ultralytics/cfg/datasets/VisDrone.yaml +2 -2
  10. ultralytics/cfg/datasets/xView.yaml +2 -2
  11. ultralytics/data/build.py +2 -2
  12. ultralytics/data/utils.py +0 -2
  13. ultralytics/engine/exporter.py +4 -1
  14. ultralytics/engine/results.py +1 -4
  15. ultralytics/engine/trainer.py +3 -3
  16. ultralytics/models/sam/__init__.py +8 -2
  17. ultralytics/models/sam/modules/sam.py +6 -6
  18. ultralytics/models/sam/predict.py +363 -6
  19. ultralytics/solutions/region_counter.py +3 -2
  20. ultralytics/utils/__init__.py +25 -162
  21. ultralytics/utils/autodevice.py +1 -1
  22. ultralytics/utils/benchmarks.py +9 -8
  23. ultralytics/utils/callbacks/wb.py +9 -3
  24. ultralytics/utils/downloads.py +29 -19
  25. ultralytics/utils/logger.py +10 -11
  26. ultralytics/utils/plotting.py +13 -20
  27. ultralytics/utils/tqdm.py +462 -0
  28. {dgenerate_ultralytics_headless-8.3.185.dist-info → dgenerate_ultralytics_headless-8.3.187.dist-info}/WHEEL +0 -0
  29. {dgenerate_ultralytics_headless-8.3.185.dist-info → dgenerate_ultralytics_headless-8.3.187.dist-info}/entry_points.txt +0 -0
  30. {dgenerate_ultralytics_headless-8.3.185.dist-info → dgenerate_ultralytics_headless-8.3.187.dist-info}/licenses/LICENSE +0 -0
  31. {dgenerate_ultralytics_headless-8.3.185.dist-info → dgenerate_ultralytics_headless-8.3.187.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.185
3
+ Version: 8.3.187
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>
@@ -42,10 +42,9 @@ Requires-Dist: scipy>=1.4.1
42
42
  Requires-Dist: torch>=1.8.0
43
43
  Requires-Dist: torch!=2.4.0,>=1.8.0; sys_platform == "win32"
44
44
  Requires-Dist: torchvision>=0.9.0
45
- Requires-Dist: tqdm>=4.64.0
46
45
  Requires-Dist: psutil
47
46
  Requires-Dist: py-cpuinfo
48
- Requires-Dist: pandas>=1.1.4
47
+ Requires-Dist: polars
49
48
  Requires-Dist: ultralytics-thop>=2.0.0
50
49
  Provides-Extra: dev
51
50
  Requires-Dist: ipython; extra == "dev"
@@ -55,7 +54,7 @@ Requires-Dist: coverage[toml]; extra == "dev"
55
54
  Requires-Dist: mkdocs>=1.6.0; extra == "dev"
56
55
  Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
57
56
  Requires-Dist: mkdocstrings[python]; extra == "dev"
58
- Requires-Dist: mkdocs-ultralytics-plugin>=0.1.26; extra == "dev"
57
+ Requires-Dist: mkdocs-ultralytics-plugin>=0.1.29; extra == "dev"
59
58
  Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
60
59
  Provides-Extra: export
61
60
  Requires-Dist: numpy<2.0.0; extra == "export"
@@ -81,7 +80,6 @@ Requires-Dist: ipython; extra == "extra"
81
80
  Requires-Dist: albumentations>=1.4.6; extra == "extra"
82
81
  Requires-Dist: faster-coco-eval>=1.6.7; extra == "extra"
83
82
  Provides-Extra: typing
84
- Requires-Dist: pandas-stubs; extra == "typing"
85
83
  Requires-Dist: scipy-stubs; extra == "typing"
86
84
  Requires-Dist: types-pillow; extra == "typing"
87
85
  Requires-Dist: types-psutil; extra == "typing"
@@ -123,7 +121,7 @@ The workflow runs automatically every day at midnight UTC to check for new Ultra
123
121
 
124
122
  <div align="center">
125
123
  <p>
126
- <a href="https://www.ultralytics.com/blog/ultralytics-yolo11-has-arrived-redefine-whats-possible-in-ai" target="_blank">
124
+ <a href="https://www.ultralytics.com/events/yolovision?utm_source=github&utm_medium=org&utm_campaign=yv25_event" target="_blank">
127
125
  <img width="100%" src="https://raw.githubusercontent.com/ultralytics/assets/main/yolov8/banner-yolov8.png" alt="Ultralytics YOLO banner"></a>
128
126
  </p>
129
127
 
@@ -131,7 +129,7 @@ The workflow runs automatically every day at midnight UTC to check for new Ultra
131
129
 
132
130
  <div>
133
131
  <a href="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yml"><img src="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yml/badge.svg" alt="Ultralytics CI"></a>
134
- <a href="https://pepy.tech/projects/ultralytics"><img src="https://static.pepy.tech/badge/ultralytics" alt="Ultralytics Downloads"></a>
132
+ <a href="https://clickpy.clickhouse.com/dashboard/ultralytics"><img src="https://static.pepy.tech/badge/ultralytics" alt="Ultralytics Downloads"></a>
135
133
  <a href="https://zenodo.org/badge/latestdoi/264818686"><img src="https://zenodo.org/badge/264818686.svg" alt="Ultralytics YOLO Citation"></a>
136
134
  <a href="https://discord.com/invite/ultralytics"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
137
135
  <a href="https://community.ultralytics.com/"><img alt="Ultralytics Forums" src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fcommunity.ultralytics.com&logo=discourse&label=Forums&color=blue"></a>
@@ -180,7 +178,7 @@ See below for quickstart installation and usage examples. For comprehensive guid
180
178
 
181
179
  Install the `ultralytics` package, including all [requirements](https://github.com/ultralytics/ultralytics/blob/main/pyproject.toml), in a [**Python>=3.8**](https://www.python.org/) environment with [**PyTorch>=1.8**](https://pytorch.org/get-started/locally/).
182
180
 
183
- [![PyPI - Version](https://img.shields.io/pypi/v/ultralytics?logo=pypi&logoColor=white)](https://pypi.org/project/ultralytics/) [![Ultralytics Downloads](https://static.pepy.tech/badge/ultralytics)](https://www.pepy.tech/projects/ultralytics) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ultralytics?logo=python&logoColor=gold)](https://pypi.org/project/ultralytics/)
181
+ [![PyPI - Version](https://img.shields.io/pypi/v/ultralytics?logo=pypi&logoColor=white)](https://pypi.org/project/ultralytics/) [![Ultralytics Downloads](https://static.pepy.tech/badge/ultralytics)](https://clickpy.clickhouse.com/dashboard/ultralytics) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ultralytics?logo=python&logoColor=gold)](https://pypi.org/project/ultralytics/)
184
182
 
185
183
  ```bash
186
184
  pip install ultralytics
@@ -1,4 +1,4 @@
1
- dgenerate_ultralytics_headless-8.3.185.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
1
+ dgenerate_ultralytics_headless-8.3.187.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
@@ -6,24 +6,24 @@ tests/test_cuda.py,sha256=7RAMC1DoXpsRvH0Jfyo9cqHkaJZWcWeqniCW5BW87hY,8228
6
6
  tests/test_engine.py,sha256=Jpt2KVrltrEgh2-3Ykouz-2Z_2fza0eymL5ectRXadM,4922
7
7
  tests/test_exports.py,sha256=CY-4xVZlVM16vdyIC0mSR3Ix59aiZm1qjFGIhSNmB20,11007
8
8
  tests/test_integrations.py,sha256=kl_AKmE_Qs1GB0_91iVwbzNxofm_hFTt0zzU6JF-pg4,6323
9
- tests/test_python.py,sha256=JbOB6pbTkoQtPCjkl_idagV0_W2QLWGbsh2IvGmru0M,28274
9
+ tests/test_python.py,sha256=ENUbLIobqCZAxEy9W7gvhmkmW5OJ2oG-3gI8QLiJjzs,28020
10
10
  tests/test_solutions.py,sha256=tuf6n_fsI8KvSdJrnc-cqP2qYdiYqCWuVrx0z9dOz3Q,13213
11
- ultralytics/__init__.py,sha256=T3t4q90IckX-FOUnSIpvWlcUre7HZpg6_jBpTBKUcl0,730
11
+ ultralytics/__init__.py,sha256=AOe0V1kT_XRgsl4BfS_o9VX8oL3rLcEYJgfpuMGLG2A,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
15
  ultralytics/cfg/__init__.py,sha256=Uj1br3-NVFvP6VY5CL4PK63mAQAom93XFC5cqSbM6t4,39887
16
16
  ultralytics/cfg/default.yaml,sha256=1SspGAK_K_DT7DBfEScJh4jsJUTOxahehZYj92xmj7o,8347
17
- ultralytics/cfg/datasets/Argoverse.yaml,sha256=4SGaJio9JFUkrscHJTPnH_QSbYm48Wbk8EFwl39zntc,3262
17
+ ultralytics/cfg/datasets/Argoverse.yaml,sha256=J4ItoUlE_EiYTmp1DFKYHfbqHkj8j4wUtRJQhaMIlBM,3275
18
18
  ultralytics/cfg/datasets/DOTAv1.5.yaml,sha256=VZ_KKFX0H2YvlFVJ8JHcLWYBZ2xiQ6Z-ROSTiKWpS7c,1211
19
19
  ultralytics/cfg/datasets/DOTAv1.yaml,sha256=JrDuYcQ0JU9lJlCA-dCkMNko_jaj6MAVGHjsfjeZ_u0,1181
20
20
  ultralytics/cfg/datasets/GlobalWheat2020.yaml,sha256=dnr_loeYSE6Eo_f7V1yubILsMRBMRm1ozyC5r7uT-iY,2144
21
21
  ultralytics/cfg/datasets/HomeObjects-3K.yaml,sha256=xEtSqEad-rtfGuIrERjjhdISggmPlvaX-315ZzKz50I,934
22
22
  ultralytics/cfg/datasets/ImageNet.yaml,sha256=GvDWypLVG_H3H67Ai8IC1pvK6fwcTtF5FRhzO1OXXDU,42530
23
- ultralytics/cfg/datasets/Objects365.yaml,sha256=vLzbT3xgpLR-bHhrHOiYyzYvDIniRdevgSyPetm8QHk,9354
24
- ultralytics/cfg/datasets/SKU-110K.yaml,sha256=a52le1-JQ2YH6b1WLMUxVz7RkZ36YsmXgWyw0z3q9nQ,2542
25
- ultralytics/cfg/datasets/VOC.yaml,sha256=o09FWAAsr1MH3ftBJ_n-4Tmc3zxnVJL1HqlqKRUYVTQ,3774
26
- ultralytics/cfg/datasets/VisDrone.yaml,sha256=dYAewe84CrGmxAA_z6UnZUAd7peaw5l3ARDcssojADk,3604
23
+ ultralytics/cfg/datasets/Objects365.yaml,sha256=eMQuA8B4ZGp_GsmMNKFP4CziMSVduyuAK1IANkAZaJw,9367
24
+ ultralytics/cfg/datasets/SKU-110K.yaml,sha256=PvO0GsM09Bqm9HEWvVA7--bOqJKl31KtT5wZ8LhAMuY,2559
25
+ ultralytics/cfg/datasets/VOC.yaml,sha256=NhVLvsmLOwMIteW4DPKxetURP5bTaJvYc7w08-HYAUs,3785
26
+ ultralytics/cfg/datasets/VisDrone.yaml,sha256=RauTGwmGetLjamcPCiBL7FEWwd8mAA1Y4ARlozX6-E8,3613
27
27
  ultralytics/cfg/datasets/african-wildlife.yaml,sha256=SuloMp9WAZBigGC8az-VLACsFhTM76_O29yhTvUqdnU,915
28
28
  ultralytics/cfg/datasets/brain-tumor.yaml,sha256=qrxPO_t9wxbn2kHFwP3vGTzSWj2ELTLelUwYL3_b6nc,800
29
29
  ultralytics/cfg/datasets/carparts-seg.yaml,sha256=A4e9hM1unTY2jjZIXGiKSarF6R-Ad9R99t57OgRJ37w,1253
@@ -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=NEEGaRTvTGafckJiFD1ltFyMl0b04zOyOFu_J-PN-Ik,5340
50
+ ultralytics/cfg/datasets/xView.yaml,sha256=P347BJlmb7AG7YC29JyyOtNy52QqZ87Sn7gFP8Dx86s,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
@@ -109,23 +109,23 @@ ultralytics/data/__init__.py,sha256=nAXaL1puCc7z_NjzQNlJnhbVhT9Fla2u7Dsqo7q1dAc,
109
109
  ultralytics/data/annotator.py,sha256=uAgd7K-yudxiwdNqHz0ubfFg5JsfNlae4cgxdvCMyuY,3030
110
110
  ultralytics/data/augment.py,sha256=Ps1s-ug_oXdyAz4Jyur6OmxzRlyzwP3VP-3hDalSxj8,132959
111
111
  ultralytics/data/base.py,sha256=mRcuehK1thNuuzQGL6D1AaZkod71oHRdYTod_zdQZQg,19688
112
- ultralytics/data/build.py,sha256=TfMLSPMbE2hGZVMLl178NTFrihC1-50jNOt1ex9elxw,11480
112
+ ultralytics/data/build.py,sha256=v2dHe52m_cqKnRSWZhEcpGynKMCB-dgw4SyVnfTNAXA,11464
113
113
  ultralytics/data/converter.py,sha256=h-0liMb7OkxoR7P0h_mOUpEu5KUsocH3fVEAz3_-p-I,32096
114
114
  ultralytics/data/dataset.py,sha256=0GyB6PPsUXMxpf88RyvhGcsREDCenS7Xvc8CrMWivco,36759
115
115
  ultralytics/data/loaders.py,sha256=u9sExTGPy1iiqVd_p29zVoEkQ3C36g2rE0FEbYPET0A,31767
116
116
  ultralytics/data/split.py,sha256=F6O73bAbESj70FQZzqkydXQeXgPXGHGiC06b5MkLHjQ,5109
117
117
  ultralytics/data/split_dota.py,sha256=rr-lLpTUVaFZMggV_fUYZdFVIJk_zbbSOpgB_Qp50_M,12893
118
- ultralytics/data/utils.py,sha256=YA0fLAwxgXdEbQnbieEv4wPFhtnmJX1L67LzVbVwVZk,36794
118
+ ultralytics/data/utils.py,sha256=Zt01BBVwpdHBLwkJC_qTUpaokhF_74hmBYQC3d9Ic8w,36675
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=Vr7K8Yf3wyf91ZvDpRosAohwa_W0oe4qW-JvqigCPfk,75190
124
+ ultralytics/engine/exporter.py,sha256=-AUku73LwK0l_Gt71evXQIJg3WpC2jr73S-87vw5T6g,75277
125
125
  ultralytics/engine/model.py,sha256=877u2n0ISz2COOYtEMUqQe0E-HHB4Atb2DuH1XCE98k,53530
126
126
  ultralytics/engine/predictor.py,sha256=iXnUB-tvBHtVpKbB-5EKs1wSREBIerdUxWx39MaFYuk,22485
127
- ultralytics/engine/results.py,sha256=QcHcbPVlLBiy_APwABr-T5K65HR8Bl1rRzxawjjP76E,71873
128
- ultralytics/engine/trainer.py,sha256=JtYRZ9vIB07VM2_Saqn7Jeu9s1W_hqG_um2EwjNckSU,40255
127
+ ultralytics/engine/results.py,sha256=6xagidv6FDJlstAX6tHob_mgfNs3459JVWeyOZgNpko,71686
128
+ ultralytics/engine/trainer.py,sha256=_chaZeS_kkoljG3LWUStksKrDwNpfq5LzANgM3CgjRg,40257
129
129
  ultralytics/engine/tuner.py,sha256=sfQ8_yzgLNcGlKyz9b2vAzyggGZXiQzdZ5tKstyqjHM,12825
130
130
  ultralytics/engine/validator.py,sha256=g0StH6WOn95zBN-hULDAR5Uug1pU2YkaeNH3zzq3SVg,16573
131
131
  ultralytics/hub/__init__.py,sha256=ulPtceI3hqud03mvqoXccBaa1e4nveYwC9cddyuBUlo,6599
@@ -148,17 +148,17 @@ ultralytics/models/rtdetr/model.py,sha256=e2u6kQEYawRXGGO6HbFDE1uyHfsIqvKk4IpVjj
148
148
  ultralytics/models/rtdetr/predict.py,sha256=Jqorq8OkGgXCCRS8DmeuGQj3XJxEhz97m22p7VxzXTw,4279
149
149
  ultralytics/models/rtdetr/train.py,sha256=6FA3nDEcH1diFQ8Ky0xENp9cOOYATHxU6f42z9npMvs,3766
150
150
  ultralytics/models/rtdetr/val.py,sha256=QT7JNKFJmD8dqUVSUBb78t9wGtE7KEw5l92CKJU50TM,8849
151
- ultralytics/models/sam/__init__.py,sha256=iR7B06rAEni21eptg8n4rLOP0Z_qV9y9PL-L93n4_7s,266
151
+ ultralytics/models/sam/__init__.py,sha256=4VtjxrbrSsqBvteaD_CwA4Nj3DdSUG1MknymtWwRMbc,359
152
152
  ultralytics/models/sam/amg.py,sha256=IpcuIfC5KBRiF4sdrsPl1ecWEJy75axo1yG23r5BFsw,11783
153
153
  ultralytics/models/sam/build.py,sha256=J6n-_QOYLa63jldEZmhRe9D3Is_AJE8xyZLUjzfRyTY,12629
154
154
  ultralytics/models/sam/model.py,sha256=j1TwsLmtxhiXyceU31VPzGVkjRXGylphKrdPSzUJRJc,7231
155
- ultralytics/models/sam/predict.py,sha256=R32JjExRBL5c2zBcDdauhX4UM8E8kMrBLoa0sZ9vk6I,86494
155
+ ultralytics/models/sam/predict.py,sha256=a7G0mLlQmQNg-mxduiSRxLIY7mWw74U0w7WRp5GLO44,105095
156
156
  ultralytics/models/sam/modules/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
157
157
  ultralytics/models/sam/modules/blocks.py,sha256=lnMhnexvXejzhixWRQQyqjrpALoIhuOSwnSGW-c9kZk,46089
158
158
  ultralytics/models/sam/modules/decoders.py,sha256=U9jqFRkD0JmO3eugSmwLD0sQkiGqJJLympWNO83osGM,25638
159
159
  ultralytics/models/sam/modules/encoders.py,sha256=srtxrfy3SfUarkC41L1S8tY4GdFueUuR2qQDFZ6ZPl4,37362
160
160
  ultralytics/models/sam/modules/memory_attention.py,sha256=F1XJAxSwho2-LMlrao_ij0MoALTvhkK-OVghi0D4cU0,13651
161
- ultralytics/models/sam/modules/sam.py,sha256=CjM4M2PfRltQFnHFOp2G6QAdYk9BxWlurx82FSX_TYo,55760
161
+ ultralytics/models/sam/modules/sam.py,sha256=fI0IVElSVUEAomCiQRC6m4g_6cyWcZ0M4bSL1g6OcYQ,55746
162
162
  ultralytics/models/sam/modules/tiny_encoder.py,sha256=lmUIeZ9-3M-C3YmJBs13W6t__dzeJloOl0qFR9Ll8ew,42241
163
163
  ultralytics/models/sam/modules/transformer.py,sha256=xc2g6gb0jvr7cJkHkzIbZOGcTrmsOn2ojvuH-MVIMVs,14953
164
164
  ultralytics/models/sam/modules/utils.py,sha256=-PYSLExtBajbotBdLan9J07aFaeXJ03WzopAv4JcYd4,16022
@@ -218,7 +218,7 @@ ultralytics/solutions/object_counter.py,sha256=zD-EYIxu_y7qCFEkv6aqV60oMCZ4q6b_k
218
218
  ultralytics/solutions/object_cropper.py,sha256=lRKtWINAe9GDxau1Xejbjydsqg2hrpGZXPtZwTgvyKQ,3603
219
219
  ultralytics/solutions/parking_management.py,sha256=IfPUn15aelxz6YZNo9WYkVEl5IOVSw8VD0OrpKtExPE,13613
220
220
  ultralytics/solutions/queue_management.py,sha256=gTkILx4dVcsKRZXSCXtelkEjCRiDS5iznb3FnddC61c,4390
221
- ultralytics/solutions/region_counter.py,sha256=Ncd6_qIXmSQXUxCwQkgYc2-nI7KifQYhxPi3pOelZak,5950
221
+ ultralytics/solutions/region_counter.py,sha256=gaBN5piMyIJSk0DBycKxm7HXHOfixA0meITcMxbwHOg,6031
222
222
  ultralytics/solutions/security_alarm.py,sha256=czEaMcy04q-iBkKqT_14d8H20CFB6zcKH_31nBGQnyw,6345
223
223
  ultralytics/solutions/similarity_search.py,sha256=c18TK0qW5AvanXU28nAX4o_WtB1SDAJStUtyLDuEBHQ,9505
224
224
  ultralytics/solutions/solutions.py,sha256=9dTkAx1W-0oaZGwKyysXTxKCYNBEV4kThRjqsQea2VQ,36059
@@ -236,25 +236,26 @@ ultralytics/trackers/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6D
236
236
  ultralytics/trackers/utils/gmc.py,sha256=9IvCf5MhBYY9ppVHykN02_oBWHmE98R8EaYFKaykdV0,14032
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=X6AtIW402k7OZ8rvgNmP8V3zrtfWfUxCp1S-gabei5s,60074
239
+ ultralytics/utils/__init__.py,sha256=ONuTxJMXtc5k7hR9FFhD5c530gmJpeBpCJeJVhdLUP8,53936
240
240
  ultralytics/utils/autobatch.py,sha256=33m8YgggLIhltDqMXZ5OE-FGs2QiHrl2-LfgY1mI4cw,5119
241
- ultralytics/utils/autodevice.py,sha256=AvgXFt8c1Cg4icKh0Hbhhz8UmVQ2Wjyfdfkeb2C8zck,8855
242
- ultralytics/utils/benchmarks.py,sha256=btsi_B0mfLPfhE8GrsBpi79vl7SRam0YYngNFAsY8Ak,31035
241
+ ultralytics/utils/autodevice.py,sha256=1wwjkO2tmyR5IAYa6t8G9QJgGrm00niPY4bTbTRH0Uk,8861
242
+ ultralytics/utils/benchmarks.py,sha256=wYO6iuF26aG_BqBmdAusZdQRmSHcvMK4i-S0x7Q6ugw,31090
243
243
  ultralytics/utils/checks.py,sha256=q64U5wKyejD-2W2fCPqJ0Oiaa4_4vq2pVxV9wp6lMz4,34707
244
244
  ultralytics/utils/dist.py,sha256=A9lDGtGefTjSVvVS38w86GOdbtLzNBDZuDGK0MT4PRI,4170
245
- ultralytics/utils/downloads.py,sha256=A7r4LpWUojGkam9-VQ3Ylu-Cn1lAUGKyJE6VzwQbp7M,22016
245
+ ultralytics/utils/downloads.py,sha256=5p9X5XN3I4RzZYGv8wP8Iehm3fDR4KXtN7KgGsJ0iAg,22621
246
246
  ultralytics/utils/errors.py,sha256=XT9Ru7ivoBgofK6PlnyigGoa7Fmf5nEhyHtnD-8TRXI,1584
247
247
  ultralytics/utils/export.py,sha256=LK-wlTlyb_zIKtSvOmfmvR70RcUU9Ct9UBDt5wn9_rY,9880
248
248
  ultralytics/utils/files.py,sha256=ZCbLGleiF0f-PqYfaxMFAWop88w7U1hpreHXl8b2ko0,8238
249
249
  ultralytics/utils/instance.py,sha256=dC83rHvQXciAED3rOiScFs3BOX9OI06Ey1mj9sjUKvs,19070
250
- ultralytics/utils/logger.py,sha256=ajrogDL8_-IFoFuQBrg97g716cl9es4bJsloIJl533c,15164
250
+ ultralytics/utils/logger.py,sha256=KDHLdpBe3su3OkMpLSUgDk3-cXMkRgH3oK0hhxsxxvM,15137
251
251
  ultralytics/utils/loss.py,sha256=fbOWc3Iu0QOJiWbi-mXWA9-1otTYlehtmUsI7os7ydM,39799
252
252
  ultralytics/utils/metrics.py,sha256=Q0cD4J1_7WRElv_En6YUM94l4SjE7XTF9LdZUMvrGys,68853
253
253
  ultralytics/utils/ops.py,sha256=8d60fbpntrexK3gPoLUS6mWAYGrtrQaQCOYyRJsCjuI,34521
254
254
  ultralytics/utils/patches.py,sha256=PPWiKzwGbCvuawLzDKVR8tWOQAlZbJBi8g_-A6eTCYA,6536
255
- ultralytics/utils/plotting.py,sha256=4TG_J8rz9VVPrOXbdjRHPJZVgJrFYVmEYE0BcVDdolc,47745
255
+ ultralytics/utils/plotting.py,sha256=npFWWIGEdQM3IsSSqoZ29kAFyCN3myeZOFj-gALFT6M,47465
256
256
  ultralytics/utils/tal.py,sha256=aXawOnhn8ni65tJWIW-PYqWr_TRvltbHBjrTo7o6lDQ,20924
257
257
  ultralytics/utils/torch_utils.py,sha256=D76Pvmw5OKh-vd4aJkOMO0dSLbM5WzGr7Hmds54hPEk,39233
258
+ ultralytics/utils/tqdm.py,sha256=cJSzlv6NP72kN7_J0PETA3h4bwGh5a_YHA2gdmZqL8U,16535
258
259
  ultralytics/utils/triton.py,sha256=M7qe4RztiADBJQEWQKaIQsp94ERFJ_8_DUHDR6TXEOM,5410
259
260
  ultralytics/utils/tuner.py,sha256=bHr09Fz-0-t0ei55gX5wJh-obyiAQoicP7HUVM2I8qA,6826
260
261
  ultralytics/utils/callbacks/__init__.py,sha256=hzL63Rce6VkZhP4Lcim9LKjadixaQG86nKqPhk7IkS0,242
@@ -268,9 +269,9 @@ ultralytics/utils/callbacks/neptune.py,sha256=j8pecmlcsM8FGzLKWoBw5xUsi5t8E5HuxY
268
269
  ultralytics/utils/callbacks/platform.py,sha256=gdbEuedXEs1VjdU0IiedjPFwttZJUiI0dJoImU3G_Gc,1999
269
270
  ultralytics/utils/callbacks/raytune.py,sha256=S6Bq16oQDQ8BQgnZzA0zJHGN_BBr8iAM_WtGoLiEcwg,1283
270
271
  ultralytics/utils/callbacks/tensorboard.py,sha256=MDPBW7aDes-66OE6YqKXXvqA_EocjzEMHWGM-8z9vUQ,5281
271
- ultralytics/utils/callbacks/wb.py,sha256=Tm_-aRr2CN32MJkY9tylpMBJkb007-MSRNSQ7rDJ5QU,7521
272
- dgenerate_ultralytics_headless-8.3.185.dist-info/METADATA,sha256=XEpiGcn2TlOD_lJzNDs7YuMo6pTdE1PHfG1C3Z7QR2Y,38727
273
- dgenerate_ultralytics_headless-8.3.185.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
274
- dgenerate_ultralytics_headless-8.3.185.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
275
- dgenerate_ultralytics_headless-8.3.185.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
276
- dgenerate_ultralytics_headless-8.3.185.dist-info/RECORD,,
272
+ ultralytics/utils/callbacks/wb.py,sha256=ngQO8EJ1kxJDF1YajScVtzBbm26jGuejA0uWeOyvf5A,7685
273
+ dgenerate_ultralytics_headless-8.3.187.dist-info/METADATA,sha256=S1qcLyosKQmZV8j1kIueJ8rUPCHwSRu-y101cJeDcDQ,38678
274
+ dgenerate_ultralytics_headless-8.3.187.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
275
+ dgenerate_ultralytics_headless-8.3.187.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
276
+ dgenerate_ultralytics_headless-8.3.187.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
277
+ dgenerate_ultralytics_headless-8.3.187.dist-info/RECORD,,
tests/test_python.py CHANGED
@@ -209,16 +209,11 @@ def test_val(task: str, weight: str, data: str) -> None:
209
209
  metrics = model.val(data=data, imgsz=32, plots=plots)
210
210
  metrics.to_df()
211
211
  metrics.to_csv()
212
- metrics.to_xml()
213
- metrics.to_html()
214
212
  metrics.to_json()
215
- metrics.to_sql()
216
- metrics.confusion_matrix.to_df() # Tests for confusion matrix export
213
+ # Tests for confusion matrix export
214
+ metrics.confusion_matrix.to_df()
217
215
  metrics.confusion_matrix.to_csv()
218
- metrics.confusion_matrix.to_xml()
219
- metrics.confusion_matrix.to_html()
220
216
  metrics.confusion_matrix.to_json()
221
- metrics.confusion_matrix.to_sql()
222
217
 
223
218
 
224
219
  def test_train_scratch():
@@ -304,10 +299,7 @@ def test_results(model: str):
304
299
  r.save_crop(save_dir=TMP / "runs/tests/crops/")
305
300
  r.to_df(decimals=3) # Align to_ methods: https://docs.ultralytics.com/modes/predict/#working-with-results
306
301
  r.to_csv()
307
- r.to_xml()
308
- r.to_html()
309
302
  r.to_json(normalize=True)
310
- r.to_sql()
311
303
  r.plot(pil=True, save=True, filename=TMP / "results_plot_save.jpg")
312
304
  r.plot(conf=True, boxes=True)
313
305
  print(r, len(r), r.path) # print after methods
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.185"
3
+ __version__ = "8.3.187"
4
4
 
5
5
  import os
6
6
 
@@ -30,14 +30,14 @@ download: |
30
30
  import json
31
31
  from pathlib import Path
32
32
 
33
- from tqdm import tqdm
33
+ from ultralytics.utils import TQDM
34
34
  from ultralytics.utils.downloads import download
35
35
 
36
36
  def argoverse2yolo(set):
37
37
  """Convert Argoverse dataset annotations to YOLO format for object detection tasks."""
38
38
  labels = {}
39
39
  a = json.load(open(set, "rb"))
40
- for annot in tqdm(a["annotations"], desc=f"Converting {set} to YOLOv5 format..."):
40
+ for annot in TQDM(a["annotations"], desc=f"Converting {set} to YOLOv5 format..."):
41
41
  img_id = annot["image_id"]
42
42
  img_name = a["images"][img_id]["name"]
43
43
  img_label_name = f"{img_name[:-3]}txt"
@@ -387,8 +387,8 @@ download: |
387
387
  from pathlib import Path
388
388
 
389
389
  import numpy as np
390
- from tqdm import tqdm
391
390
 
391
+ from ultralytics.utils import TQDM
392
392
  from ultralytics.utils.checks import check_requirements
393
393
  from ultralytics.utils.downloads import download
394
394
  from ultralytics.utils.ops import xyxy2xywhn
@@ -419,7 +419,7 @@ download: |
419
419
  download([f"{url}images/v2/patch{i}.tar.gz" for i in range(16, patches)], dir=images, curl=True, threads=8)
420
420
 
421
421
  # Move
422
- for f in tqdm(images.rglob("*.jpg"), desc=f"Moving {split} images"):
422
+ for f in TQDM(images.rglob("*.jpg"), desc=f"Moving {split} images"):
423
423
  f.rename(images / f.name) # move to /images/{split}
424
424
 
425
425
  # Labels
@@ -428,7 +428,7 @@ download: |
428
428
  for cid, cat in enumerate(names):
429
429
  catIds = coco.getCatIds(catNms=[cat])
430
430
  imgIds = coco.getImgIds(catIds=catIds)
431
- for im in tqdm(coco.loadImgs(imgIds), desc=f"Class {cid + 1}/{len(names)} {cat}"):
431
+ for im in TQDM(coco.loadImgs(imgIds), desc=f"Class {cid + 1}/{len(names)} {cat}"):
432
432
  width, height = im["width"], im["height"]
433
433
  path = Path(im["file_name"]) # image filename
434
434
  try:
@@ -24,9 +24,9 @@ download: |
24
24
  from pathlib import Path
25
25
 
26
26
  import numpy as np
27
- import pandas as pd
28
- from tqdm import tqdm
27
+ import polars as pl
29
28
 
29
+ from ultralytics.utils import TQDM
30
30
  from ultralytics.utils.downloads import download
31
31
  from ultralytics.utils.ops import xyxy2xywh
32
32
 
@@ -45,11 +45,11 @@ download: |
45
45
  # Convert labels
46
46
  names = "image", "x1", "y1", "x2", "y2", "class", "image_width", "image_height" # column names
47
47
  for d in "annotations_train.csv", "annotations_val.csv", "annotations_test.csv":
48
- x = pd.read_csv(dir / "annotations" / d, names=names).values # annotations
48
+ x = pl.read_csv(dir / "annotations" / d, names=names).to_numpy() # annotations
49
49
  images, unique_images = x[:, 0], np.unique(x[:, 0])
50
50
  with open((dir / d).with_suffix(".txt").__str__().replace("annotations_", ""), "w", encoding="utf-8") as f:
51
51
  f.writelines(f"./images/{s}\n" for s in unique_images)
52
- for im in tqdm(unique_images, desc=f"Converting {dir / d}"):
52
+ for im in TQDM(unique_images, desc=f"Converting {dir / d}"):
53
53
  cls = 0 # single-class dataset
54
54
  with open((dir / "labels" / im).with_suffix(".txt"), "a", encoding="utf-8") as f:
55
55
  for r in x[images == im]:
@@ -48,10 +48,8 @@ download: |
48
48
  import xml.etree.ElementTree as ET
49
49
  from pathlib import Path
50
50
 
51
- from tqdm import tqdm
52
-
53
51
  from ultralytics.utils.downloads import download
54
-
52
+ from ultralytics.utils import TQDM
55
53
 
56
54
  def convert_label(path, lb_path, year, image_id):
57
55
  """Converts XML annotations from VOC format to YOLO format by extracting bounding boxes and class IDs."""
@@ -99,7 +97,7 @@ download: |
99
97
 
100
98
  with open(path / f"VOC{year}/ImageSets/Main/{image_set}.txt") as f:
101
99
  image_ids = f.read().strip().split()
102
- for id in tqdm(image_ids, desc=f"{image_set}{year}"):
100
+ for id in TQDM(image_ids, desc=f"{image_set}{year}"):
103
101
  f = path / f"VOC{year}/JPEGImages/{id}.jpg" # old img path
104
102
  lb_path = (lbs_path / f.name).with_suffix(".txt") # new label path
105
103
  f.rename(imgs_path / f.name) # move image
@@ -34,12 +34,12 @@ download: |
34
34
  import shutil
35
35
 
36
36
  from ultralytics.utils.downloads import download
37
+ from ultralytics.utils import TQDM
37
38
 
38
39
 
39
40
  def visdrone2yolo(dir, split, source_name=None):
40
41
  """Convert VisDrone annotations to YOLO format with images/{split} and labels/{split} structure."""
41
42
  from PIL import Image
42
- from tqdm import tqdm
43
43
 
44
44
  source_dir = dir / (source_name or f"VisDrone2019-DET-{split}")
45
45
  images_dir = dir / "images" / split
@@ -52,7 +52,7 @@ download: |
52
52
  for img in source_images_dir.glob("*.jpg"):
53
53
  img.rename(images_dir / img.name)
54
54
 
55
- for f in tqdm((source_dir / "annotations").glob("*.txt"), desc=f"Converting {split}"):
55
+ for f in TQDM((source_dir / "annotations").glob("*.txt"), desc=f"Converting {split}"):
56
56
  img_size = Image.open(images_dir / f.with_suffix(".jpg").name).size
57
57
  dw, dh = 1.0 / img_size[0], 1.0 / img_size[1]
58
58
  lines = []
@@ -85,8 +85,8 @@ download: |
85
85
 
86
86
  import numpy as np
87
87
  from PIL import Image
88
- from tqdm import tqdm
89
88
 
89
+ from ultralytics.utils import TQDM
90
90
  from ultralytics.data.utils import autosplit
91
91
  from ultralytics.utils.ops import xyxy2xywhn
92
92
 
@@ -110,7 +110,7 @@ download: |
110
110
  47, 48, 49, -1, 50, 51, -1, 52, -1, -1, -1, 53, 54, -1, 55, -1, -1, 56, -1, 57, -1, 58, 59]
111
111
 
112
112
  shapes = {}
113
- for feature in tqdm(data["features"], desc=f"Converting {fname}"):
113
+ for feature in TQDM(data["features"], desc=f"Converting {fname}"):
114
114
  p = feature["properties"]
115
115
  if p["bounds_imcoords"]:
116
116
  id = p["image_id"]
ultralytics/data/build.py CHANGED
@@ -22,7 +22,7 @@ from ultralytics.data.loaders import (
22
22
  SourceTypes,
23
23
  autocast_list,
24
24
  )
25
- from ultralytics.data.utils import IMG_FORMATS, PIN_MEMORY, VID_FORMATS
25
+ from ultralytics.data.utils import IMG_FORMATS, VID_FORMATS
26
26
  from ultralytics.utils import RANK, colorstr
27
27
  from ultralytics.utils.checks import check_file
28
28
 
@@ -206,7 +206,7 @@ def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, ra
206
206
  shuffle=shuffle and sampler is None,
207
207
  num_workers=nw,
208
208
  sampler=sampler,
209
- pin_memory=PIN_MEMORY,
209
+ pin_memory=nd > 0,
210
210
  collate_fn=getattr(dataset, "collate_fn", None),
211
211
  worker_init_fn=seed_worker,
212
212
  generator=generator,
ultralytics/data/utils.py CHANGED
@@ -19,7 +19,6 @@ from ultralytics.nn.autobackend import check_class_names
19
19
  from ultralytics.utils import (
20
20
  DATASETS_DIR,
21
21
  LOGGER,
22
- MACOS,
23
22
  NUM_THREADS,
24
23
  ROOT,
25
24
  SETTINGS_FILE,
@@ -37,7 +36,6 @@ from ultralytics.utils.ops import segments2boxes
37
36
  HELP_URL = "See https://docs.ultralytics.com/datasets for dataset formatting guidance."
38
37
  IMG_FORMATS = {"bmp", "dng", "jpeg", "jpg", "mpo", "png", "tif", "tiff", "webp", "pfm", "heic"} # image suffixes
39
38
  VID_FORMATS = {"asf", "avi", "gif", "m4v", "mkv", "mov", "mp4", "mpeg", "mpg", "ts", "wmv", "webm"} # video suffixes
40
- PIN_MEMORY = str(os.getenv("PIN_MEMORY", not MACOS)).lower() == "true" # global pin_memory for dataloaders
41
39
  FORMATS_HELP_MSG = f"Supported formats are:\nimages: {IMG_FORMATS}\nvideos: {VID_FORMATS}"
42
40
 
43
41
 
@@ -1479,7 +1479,10 @@ class IOSDetectModel(torch.nn.Module):
1479
1479
  if w == h:
1480
1480
  self.normalize = 1.0 / w # scalar
1481
1481
  else:
1482
- self.normalize = torch.tensor([1.0 / w, 1.0 / h, 1.0 / w, 1.0 / h]) # broadcast (slower, smaller)
1482
+ self.normalize = torch.tensor(
1483
+ [1.0 / w, 1.0 / h, 1.0 / w, 1.0 / h], # broadcast (slower, smaller)
1484
+ device=next(model.parameters()).device,
1485
+ )
1483
1486
 
1484
1487
  def forward(self, x):
1485
1488
  """Normalize predictions of object detection model with input size-dependent factors."""
@@ -222,12 +222,9 @@ class Results(SimpleClass, DataExportMixin):
222
222
  save_txt: Save detection results to a text file.
223
223
  save_crop: Save cropped detection images to specified directory.
224
224
  summary: Convert inference results to a summarized dictionary.
225
- to_df: Convert detection results to a Pandas Dataframe.
225
+ to_df: Convert detection results to a Polars Dataframe.
226
226
  to_json: Convert detection results to JSON format.
227
227
  to_csv: Convert detection results to a CSV format.
228
- to_xml: Convert detection results to XML format.
229
- to_html: Convert detection results to HTML format.
230
- to_sql: Convert detection results to an SQL-compatible format.
231
228
 
232
229
  Examples:
233
230
  >>> results = model("path/to/image.jpg")
@@ -540,10 +540,10 @@ class BaseTrainer:
540
540
  torch.cuda.empty_cache()
541
541
 
542
542
  def read_results_csv(self):
543
- """Read results.csv into a dictionary using pandas."""
544
- import pandas as pd # scope for faster 'import ultralytics'
543
+ """Read results.csv into a dictionary using polars."""
544
+ import polars as pl # scope for faster 'import ultralytics'
545
545
 
546
- return pd.read_csv(self.csv).to_dict(orient="list")
546
+ return pl.read_csv(self.csv).to_dict(as_series=False)
547
547
 
548
548
  def _model_train(self):
549
549
  """Set model in training mode."""
@@ -1,6 +1,12 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
3
  from .model import SAM
4
- from .predict import Predictor, SAM2Predictor, SAM2VideoPredictor
4
+ from .predict import Predictor, SAM2DynamicInteractivePredictor, SAM2Predictor, SAM2VideoPredictor
5
5
 
6
- __all__ = "SAM", "Predictor", "SAM2Predictor", "SAM2VideoPredictor" # tuple or list of exportable items
6
+ __all__ = (
7
+ "SAM",
8
+ "Predictor",
9
+ "SAM2Predictor",
10
+ "SAM2VideoPredictor",
11
+ "SAM2DynamicInteractivePredictor",
12
+ ) # tuple or list of exportable items
@@ -574,7 +574,7 @@ class SAM2Model(torch.nn.Module):
574
574
  object_score_logits,
575
575
  )
576
576
 
577
- def _use_mask_as_output(self, backbone_features, high_res_features, mask_inputs):
577
+ def _use_mask_as_output(self, mask_inputs, backbone_features=None, high_res_features=None):
578
578
  """Process mask inputs directly as output, bypassing SAM encoder/decoder."""
579
579
  # Use -10/+10 as logits for neg/pos pixels (very close to 0/1 in prob after sigmoid).
580
580
  out_scale, out_bias = 20.0, -10.0 # sigmoid(-10.0)=4.5398e-05
@@ -589,7 +589,7 @@ class SAM2Model(torch.nn.Module):
589
589
  )
590
590
  # a dummy IoU prediction of all 1's under mask input
591
591
  ious = mask_inputs.new_ones(mask_inputs.size(0), 1).float()
592
- if not self.use_obj_ptrs_in_encoder:
592
+ if not self.use_obj_ptrs_in_encoder or backbone_features is None or high_res_features is None:
593
593
  # all zeros as a dummy object pointer (of shape [B, C])
594
594
  obj_ptr = torch.zeros(mask_inputs.size(0), self.hidden_dim, device=mask_inputs.device)
595
595
  else:
@@ -869,7 +869,6 @@ class SAM2Model(torch.nn.Module):
869
869
  prev_sam_mask_logits,
870
870
  ):
871
871
  """Perform a single tracking step, updating object masks and memory features based on current frame inputs."""
872
- current_out = {"point_inputs": point_inputs, "mask_inputs": mask_inputs}
873
872
  # High-resolution feature maps for the SAM head, reshape (HW)BC => BCHW
874
873
  if len(current_vision_feats) > 1:
875
874
  high_res_features = [
@@ -883,7 +882,7 @@ class SAM2Model(torch.nn.Module):
883
882
  # (see it as a GT mask) without using a SAM prompt encoder + mask decoder.
884
883
  pix_feat = current_vision_feats[-1].permute(1, 2, 0)
885
884
  pix_feat = pix_feat.view(-1, self.hidden_dim, *feat_sizes[-1])
886
- sam_outputs = self._use_mask_as_output(pix_feat, high_res_features, mask_inputs)
885
+ sam_outputs = self._use_mask_as_output(mask_inputs, pix_feat, high_res_features)
887
886
  else:
888
887
  # fused the visual feature with previous memory features in the memory bank
889
888
  pix_feat = self._prepare_memory_conditioned_features(
@@ -911,7 +910,7 @@ class SAM2Model(torch.nn.Module):
911
910
  high_res_features=high_res_features,
912
911
  multimask_output=multimask_output,
913
912
  )
914
- return current_out, sam_outputs, high_res_features, pix_feat
913
+ return sam_outputs, high_res_features, pix_feat
915
914
 
916
915
  def _encode_memory_in_output(
917
916
  self,
@@ -960,7 +959,8 @@ class SAM2Model(torch.nn.Module):
960
959
  prev_sam_mask_logits=None,
961
960
  ):
962
961
  """Perform a single tracking step, updating object masks and memory features based on current frame inputs."""
963
- current_out, sam_outputs, _, _ = self._track_step(
962
+ current_out = {}
963
+ sam_outputs, _, _ = self._track_step(
964
964
  frame_idx,
965
965
  is_init_cond_frame,
966
966
  current_vision_feats,