dgenerate-ultralytics-headless 8.3.236__py3-none-any.whl → 8.3.237__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 (38) hide show
  1. {dgenerate_ultralytics_headless-8.3.236.dist-info → dgenerate_ultralytics_headless-8.3.237.dist-info}/METADATA +1 -1
  2. {dgenerate_ultralytics_headless-8.3.236.dist-info → dgenerate_ultralytics_headless-8.3.237.dist-info}/RECORD +38 -25
  3. ultralytics/__init__.py +1 -1
  4. ultralytics/engine/exporter.py +17 -10
  5. ultralytics/engine/predictor.py +3 -2
  6. ultralytics/engine/trainer.py +8 -0
  7. ultralytics/models/rtdetr/val.py +5 -1
  8. ultralytics/models/sam/__init__.py +14 -1
  9. ultralytics/models/sam/build.py +17 -8
  10. ultralytics/models/sam/build_sam3.py +374 -0
  11. ultralytics/models/sam/model.py +12 -4
  12. ultralytics/models/sam/modules/blocks.py +20 -8
  13. ultralytics/models/sam/modules/decoders.py +2 -3
  14. ultralytics/models/sam/modules/encoders.py +4 -1
  15. ultralytics/models/sam/modules/memory_attention.py +6 -2
  16. ultralytics/models/sam/modules/sam.py +150 -6
  17. ultralytics/models/sam/modules/utils.py +134 -4
  18. ultralytics/models/sam/predict.py +2076 -118
  19. ultralytics/models/sam/sam3/__init__.py +3 -0
  20. ultralytics/models/sam/sam3/decoder.py +546 -0
  21. ultralytics/models/sam/sam3/encoder.py +535 -0
  22. ultralytics/models/sam/sam3/geometry_encoders.py +415 -0
  23. ultralytics/models/sam/sam3/maskformer_segmentation.py +286 -0
  24. ultralytics/models/sam/sam3/model_misc.py +198 -0
  25. ultralytics/models/sam/sam3/necks.py +129 -0
  26. ultralytics/models/sam/sam3/sam3_image.py +357 -0
  27. ultralytics/models/sam/sam3/text_encoder_ve.py +307 -0
  28. ultralytics/models/sam/sam3/tokenizer_ve.py +242 -0
  29. ultralytics/models/sam/sam3/vitdet.py +546 -0
  30. ultralytics/models/sam/sam3/vl_combiner.py +165 -0
  31. ultralytics/models/yolo/obb/val.py +18 -7
  32. ultralytics/nn/modules/transformer.py +21 -1
  33. ultralytics/utils/checks.py +2 -2
  34. ultralytics/utils/ops.py +1 -3
  35. {dgenerate_ultralytics_headless-8.3.236.dist-info → dgenerate_ultralytics_headless-8.3.237.dist-info}/WHEEL +0 -0
  36. {dgenerate_ultralytics_headless-8.3.236.dist-info → dgenerate_ultralytics_headless-8.3.237.dist-info}/entry_points.txt +0 -0
  37. {dgenerate_ultralytics_headless-8.3.236.dist-info → dgenerate_ultralytics_headless-8.3.237.dist-info}/licenses/LICENSE +0 -0
  38. {dgenerate_ultralytics_headless-8.3.236.dist-info → dgenerate_ultralytics_headless-8.3.237.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.236
3
+ Version: 8.3.237
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,4 +1,4 @@
1
- dgenerate_ultralytics_headless-8.3.236.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
1
+ dgenerate_ultralytics_headless-8.3.237.dist-info/licenses/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
2
2
  tests/__init__.py,sha256=bCox_hLdGRFYGLb2kd722VdNP2zEXNYNuLLYtqZSrbw,804
3
3
  tests/conftest.py,sha256=mOy9lGpNp7lk1hHl6_pVE0f9cU-72gnkoSm4TO-CNZU,2318
4
4
  tests/test_cli.py,sha256=GhIFHi-_WIJpDgoGNRi0DnjbfwP1wHbklBMnkCM-P_4,5464
@@ -8,7 +8,7 @@ tests/test_exports.py,sha256=9ssZCpseCUrvU0XRpjnJtBalQ-redG0KMVsx8E0_CVE,13987
8
8
  tests/test_integrations.py,sha256=6QgSh9n0J04RdUYz08VeVOnKmf4S5MDEQ0chzS7jo_c,6220
9
9
  tests/test_python.py,sha256=jhnN-Oie3euE3kfHzUqvnadkWOsQyvFmdmEcse9Rsto,29253
10
10
  tests/test_solutions.py,sha256=j_PZZ5tMR1Y5ararY-OTXZr1hYJ7vEVr8H3w4O1tbQs,14153
11
- ultralytics/__init__.py,sha256=YfGAlKifX1af2817bBbTxe8_ZHAk_kGtIH9wjV3-Sgw,1302
11
+ ultralytics/__init__.py,sha256=eMeplbSK5m4qRSF3AJSnUOfc18nlhFr3S1KlJinTcMk,1302
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
@@ -123,11 +123,11 @@ ultralytics/data/scripts/get_coco.sh,sha256=UuJpJeo3qQpTHVINeOpmP0NYmg8PhEFE3A8J
123
123
  ultralytics/data/scripts/get_coco128.sh,sha256=qmRQl_hOKrsdHrTrnyQuFIH01oDz3lfaz138OgGfLt8,650
124
124
  ultralytics/data/scripts/get_imagenet.sh,sha256=hr42H16bM47iT27rgS7MpEo-GeOZAYUQXgr0B2cwn48,1705
125
125
  ultralytics/engine/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
126
- ultralytics/engine/exporter.py,sha256=2etpEPh_yufn9uyNO_tPoZZ4j7Cp1hEt05x7gN37PZo,72710
126
+ ultralytics/engine/exporter.py,sha256=XRhLbVPNzwgJpNwJjkNBB71dfe2XDn_rHUNssCtXnvo,73007
127
127
  ultralytics/engine/model.py,sha256=RkjMWXkyGmYjmMYIG8mPX8Cf1cJvn0ccOsXt03g7tIk,52999
128
- ultralytics/engine/predictor.py,sha256=eu0sVo3PTt4zKH6SntzdO1E8cgFj9PFOJrfQO6VNqCE,22698
128
+ ultralytics/engine/predictor.py,sha256=Hu8FN8zn9i3yNvZ4hG3PzViyA7oGS7N4uazkEg159RY,22809
129
129
  ultralytics/engine/results.py,sha256=zHPX3j36SnbHHRzAtF5wv_IhugEHf-zEPUqpQwdgZxA,68029
130
- ultralytics/engine/trainer.py,sha256=xzsouV6UX259WT3n_in8GoXblmmlrzyYpD6fQt_zBm0,45214
130
+ ultralytics/engine/trainer.py,sha256=9hk1P4vhUmxLi9Y9_rmNzo7aExHn4fMT6jGT900lmzg,45455
131
131
  ultralytics/engine/tuner.py,sha256=xooBE-urCbqK-FQIUtUTG5SC26GevKshDWn-HgIR3Ng,21548
132
132
  ultralytics/engine/validator.py,sha256=mG9u7atDw7mkCmoB_JjA4pM9m41vF5U7hPLRpBg8QFA,17528
133
133
  ultralytics/hub/__init__.py,sha256=Z0K_E00jzQh90b18q3IDChwVmTvyIYp6C00sCV-n2F8,6709
@@ -149,21 +149,34 @@ ultralytics/models/rtdetr/__init__.py,sha256=F4NEQqtcVKFxj97Dh7rkn2Vu3JG4Ea_nxqr
149
149
  ultralytics/models/rtdetr/model.py,sha256=jJzSh_5E__rVQO7_IkmncpC4jIdu9xNiIxlTTIaFJVw,2269
150
150
  ultralytics/models/rtdetr/predict.py,sha256=yXtyO6XenBpz0PPewxyGTH8padY-tddyS2NwIk8WTm4,4267
151
151
  ultralytics/models/rtdetr/train.py,sha256=b7FCFU_m0BWftVGvuYp6uPBJUG9RviKdWcMkQTLQDlE,3742
152
- ultralytics/models/rtdetr/val.py,sha256=O3lWCAhF2N0MI9RbcczUmat6uDpcFX8DSuxscsYtuyM,8928
153
- ultralytics/models/sam/__init__.py,sha256=p1BKLawQFvVxmdk7LomFVWX-67Kc-AP4PJBNPfU_Nuc,359
152
+ ultralytics/models/rtdetr/val.py,sha256=c-yQlgJUh4Ley7m9c70Q10QbCGHEGP5Rnr2oH_IJ8SU,9063
153
+ ultralytics/models/sam/__init__.py,sha256=hofz9cGGhxEWpZXX8yLp5k_LQUmWL_Shd9kfzK4U6z0,592
154
154
  ultralytics/models/sam/amg.py,sha256=aYvJ7jQMkTR3X9KV7SHi3qP3yNchQggWNUurTRZwxQg,11786
155
- ultralytics/models/sam/build.py,sha256=GdZ4tEgbfIo232SGucKL2qQtZH2yUZafYThBJNPH8yA,12663
156
- ultralytics/models/sam/model.py,sha256=GpJ2CogjTwsPELq7BpM10zk45_teAsInA1faAGQ1lJ8,7086
157
- ultralytics/models/sam/predict.py,sha256=g6gJK_OApq_NblM3j0nq675OPUqRJCFFZJFs-LPDWW8,103928
155
+ ultralytics/models/sam/build.py,sha256=XNKyRnmKNp1bqboI6mZI9GKNZQRYnadvBtyUact1gSo,12867
156
+ ultralytics/models/sam/build_sam3.py,sha256=kOqBtJkDEx8eg5CHXIUPbjRfW-B9_rqjjJKTm0kKCvE,11882
157
+ ultralytics/models/sam/model.py,sha256=N32loc7oOgEFSJHgGIZ5We8_SooMPDTKx-6oVWbXn8U,7372
158
+ ultralytics/models/sam/predict.py,sha256=hBs93y9X61lcVg9_oPlPB7bycI7W9LN0PsrZhbOCl8w,204538
158
159
  ultralytics/models/sam/modules/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
159
- ultralytics/models/sam/modules/blocks.py,sha256=X8Z37dSOgQmHxT4SW2Ktm_PhzD3fU7Y8dbt_RGWTyS0,43913
160
- ultralytics/models/sam/modules/decoders.py,sha256=mdqiaGMpCI0Gu3jLilbuNCwQWrujG_WKs7AQ4FaF2qM,25064
161
- ultralytics/models/sam/modules/encoders.py,sha256=Ukkulz_ArGJ7wWeGoIm7_hSPqp-0f5EWJ38ixDxL0RE,35233
162
- ultralytics/models/sam/modules/memory_attention.py,sha256=HEWzyMHOudnHzV0m6bcPQ2pKUL_obyslgw7p_yrBol4,12953
163
- ultralytics/models/sam/modules/sam.py,sha256=5EQyzrNawLM6FjhpVb0cmq_-ZrTFZl10kEiA-iNTiZM,54780
160
+ ultralytics/models/sam/modules/blocks.py,sha256=ZU2aY4h6fmosj5pZ5EOEuO1O8Cl8UYeH11eOxkqCt8M,44570
161
+ ultralytics/models/sam/modules/decoders.py,sha256=G4li37ahUe5rTTNTKibWMsAoz6G3R18rI8OPvfunVX8,25045
162
+ ultralytics/models/sam/modules/encoders.py,sha256=C2KlyvWWbYk48uNnymyvPLg_Q2ioRycjK2nMPGKkMhA,35456
163
+ ultralytics/models/sam/modules/memory_attention.py,sha256=jFVWVbgDS7VXPqOL1e3gAzk0vPwWhy-8vj3Vl5WhT4I,13299
164
+ ultralytics/models/sam/modules/sam.py,sha256=j2AhC2yQbPJW5gAlHyV_LfMWmwG9q_PICKynfhAkzQ8,61292
164
165
  ultralytics/models/sam/modules/tiny_encoder.py,sha256=RJQTHjfUe2N3cm1EZHXObJlKqVn10EnYJFla1mnWU_8,42065
165
166
  ultralytics/models/sam/modules/transformer.py,sha256=NmTuyxS9PNsg66tKY9_Q2af4I09VW5s8IbfswyTT3ao,14892
166
- ultralytics/models/sam/modules/utils.py,sha256=Os8CDCPRYnD9P5xbKT7vmIFLcQGyyQ4hhEArCfNLgBo,15983
167
+ ultralytics/models/sam/modules/utils.py,sha256=ztihxg0ssx0W-CKiqV-8KzB4og39TKnbmV3YO96ENPw,20770
168
+ ultralytics/models/sam/sam3/__init__.py,sha256=aM4-KimnYgIFe-e5ctLT8e6k9PagvuvKFaHaagDZM7E,144
169
+ ultralytics/models/sam/sam3/decoder.py,sha256=kXgPOjOh63ttJPFwMF90arK9AKZwPmhxOiexnPijiTE,22872
170
+ ultralytics/models/sam/sam3/encoder.py,sha256=Q5dMxRbYMclS-jBpD-shiparXfqckRYU6HYzavQ6feU,21809
171
+ ultralytics/models/sam/sam3/geometry_encoders.py,sha256=UTcbnuJYewAptQ_6FPYYu-IbacjtzyzvJXvTZ-XAQms,17344
172
+ ultralytics/models/sam/sam3/maskformer_segmentation.py,sha256=jf9qJj7xyTVGp7OZ5uJQF0EUD468EOnBm1PsjiTO2ug,10735
173
+ ultralytics/models/sam/sam3/model_misc.py,sha256=OZ6kJCRpViASKFmteYAOtEXB4nIsB8ibtJeDk_nZn1g,7909
174
+ ultralytics/models/sam/sam3/necks.py,sha256=qr1PHInhpe16cNFrLVANg6OBKci1qmK8HIuLF1BaniI,4532
175
+ ultralytics/models/sam/sam3/sam3_image.py,sha256=9AwY7OQxGboT_HVpShLL5rIRM4Ga-ar7HFLYg_bZHvw,14571
176
+ ultralytics/models/sam/sam3/text_encoder_ve.py,sha256=iv8-6VA3t4yJ1M42RPjHDlFuH9P_nNRSNyaoFn2sjMw,12283
177
+ ultralytics/models/sam/sam3/tokenizer_ve.py,sha256=e9egpc9mWW9tDzXMPyNIapoemjdn8mz1e7VjqtH6aWo,9079
178
+ ultralytics/models/sam/sam3/vitdet.py,sha256=QDM4-J_N1PczKQsJcFVKtNZ13vnxIjg-9GA2zQd9WiM,21822
179
+ ultralytics/models/sam/sam3/vl_combiner.py,sha256=4ReVNkLIVCzFos7i_HsmxpP2wZ2HUhgMSeIc0MIAS5Q,6710
167
180
  ultralytics/models/utils/__init__.py,sha256=lm6MckFYCPTbqIoX7w0s_daxdjNeBeKW6DXppv1-QUM,70
168
181
  ultralytics/models/utils/loss.py,sha256=9CcqRXDj5-I-7eZuenInvyoLcPf22Ynf3rUFA5V22bI,21131
169
182
  ultralytics/models/utils/ops.py,sha256=z-Ebjv_k14bWOoP6nszDzDBiy3yELcVtbj6M8PsRpvE,15207
@@ -180,7 +193,7 @@ ultralytics/models/yolo/detect/val.py,sha256=b4swS4fEGEFkNzXAUD8OKwS9o0tBg9kU0UG
180
193
  ultralytics/models/yolo/obb/__init__.py,sha256=tQmpG8wVHsajWkZdmD6cjGohJ4ki64iSXQT8JY_dydo,221
181
194
  ultralytics/models/yolo/obb/predict.py,sha256=vA_BueSJJJuyaAZPWE0xKk7KI_YPQCUOCqeZZLMTeXM,2600
182
195
  ultralytics/models/yolo/obb/train.py,sha256=qtBjwOHOq0oQ9mK0mOtnUrXAQ5UCUrntKq_Z0-oCBHo,3438
183
- ultralytics/models/yolo/obb/val.py,sha256=4X_VmY2L5i0c-GXACgnSXcCPyhPuRydQabL1OA1f1mE,14139
196
+ ultralytics/models/yolo/obb/val.py,sha256=iBP5wi8HXP-mFSP8v-jpeKDcuV0TV98KnP1bxXHxOHs,14513
184
197
  ultralytics/models/yolo/pose/__init__.py,sha256=_9OFLj19XwvJHBRxQtVW5CV7rvJ_3hDPE97miit0sPc,227
185
198
  ultralytics/models/yolo/pose/predict.py,sha256=rsorTRpyL-x40R2QVDDG2isc1e2F2lGfD13oKaD5ANs,3118
186
199
  ultralytics/models/yolo/pose/train.py,sha256=lKxZ1dnkN3WlEPGlIlLF7ZuR_W2eoPrxhVrKGbJIQto,4628
@@ -206,7 +219,7 @@ ultralytics/nn/modules/activation.py,sha256=J6n-CJKFK0YbhwcRDqm9zEJM9pSAEycj5quQ
206
219
  ultralytics/nn/modules/block.py,sha256=-Suv96Oo0LM1sqHHKudt5lL5YIcWLkxwrYVBgIAkmTs,69876
207
220
  ultralytics/nn/modules/conv.py,sha256=9WUlBzHD-wLgz0riLyttzASLIqBtXPK6Jk5EdyIiGCM,21100
208
221
  ultralytics/nn/modules/head.py,sha256=HALEhb1I5VNqCQJFB84OgT9dpRArIKWbiglyohzrSfc,51859
209
- ultralytics/nn/modules/transformer.py,sha256=WAyTfdMFdD8YdSkURuYQP_eoc6i-IWWzkyHTIXvrEHM,31214
222
+ ultralytics/nn/modules/transformer.py,sha256=oasUhhIm03kY0QtWrpvSSLnQa9q3eW2ksx82MgpPmsE,31972
210
223
  ultralytics/nn/modules/utils.py,sha256=tkUDhTXjmW-YMvTGvM4RFUVtzh5k2c33i3TWmzaWWtI,6067
211
224
  ultralytics/solutions/__init__.py,sha256=Jj7OcRiYjHH-e104H4xTgjjR5W6aPB4mBRndbaSPmgU,1209
212
225
  ultralytics/solutions/ai_gym.py,sha256=7ggUIkClVtvZG_nzoZCoZ_wlDfr-Da2U7ZhECaHe80I,5166
@@ -242,7 +255,7 @@ ultralytics/utils/__init__.py,sha256=mumSvouTfDk9SnlGPiZCiuO52rpIUh6dpUbV8MfJXKE
242
255
  ultralytics/utils/autobatch.py,sha256=jiE4m_--H9UkXFDm_FqzcZk_hSTCGpS72XdVEKgZwAo,5114
243
256
  ultralytics/utils/autodevice.py,sha256=rXlPuo-iX-vZ4BabmMGEGh9Uxpau4R7Zlt1KCo9Xfyc,8892
244
257
  ultralytics/utils/benchmarks.py,sha256=B6Q55qtZri2EWOKldXnEhGrFe2BjHsAQEt7juPN4m1s,32279
245
- ultralytics/utils/checks.py,sha256=6NVYaXC3owGDrSXyH9P_XiT43QcL1HKNio-C6342S-w,38092
258
+ ultralytics/utils/checks.py,sha256=4HGI_M71gxBk4AE7-qGD1kw_-EXEOy6NHGwum_q4iGI,38150
246
259
  ultralytics/utils/cpu.py,sha256=OksKOlX93AsbSsFuoYvLXRXgpkOibrZSwQyW6lipt4Q,3493
247
260
  ultralytics/utils/dist.py,sha256=hOuY1-unhQAY-uWiZw3LWw36d1mqJuYK75NdlwB4oKE,4131
248
261
  ultralytics/utils/downloads.py,sha256=pUzi3N6-L--aLUbyIv2lU3zYtL84eSD-Z-PycwPLwuA,22883
@@ -255,7 +268,7 @@ ultralytics/utils/logger.py,sha256=gq38VIMcdOZHI-rKDO0F7Z-RiFebpkcVhoNr-5W2U4o,1
255
268
  ultralytics/utils/loss.py,sha256=R1uC00IlXVHFWc8I8ngjtfRfuUj_sT_Zw59OlYKwmFY,39781
256
269
  ultralytics/utils/metrics.py,sha256=CYAAfe-wUF37MAMD1Y8rsVkxZ1DOL1lzv_Ynwd-VZSk,68588
257
270
  ultralytics/utils/nms.py,sha256=zv1rOzMF6WU8Kdk41VzNf1H1EMt_vZHcbDFbg3mnN2o,14248
258
- ultralytics/utils/ops.py,sha256=RAyISErSCXYWpXiAvR41Xnf2sIqXyCwyFDQf3K5bmFc,25661
271
+ ultralytics/utils/ops.py,sha256=AN-BtT5Uu_cujQEIcGkLS4vSj0axh0yZqKWicNcyAW8,25636
259
272
  ultralytics/utils/patches.py,sha256=Vf-s7WIGgCF00OG_kHPcEHCoLNnDvBKUSbI3XjzilIQ,7111
260
273
  ultralytics/utils/plotting.py,sha256=GGaUYgF8OoxcmyMwNTr82ER7cJZ3CUOjYeq-7vpHDGQ,48432
261
274
  ultralytics/utils/tal.py,sha256=w7oi6fp0NmL6hHh-yvCCX1cBuuB4JuX7w1wiR4_SMZs,20678
@@ -279,8 +292,8 @@ ultralytics/utils/export/__init__.py,sha256=Cfh-PwVfTF_lwPp-Ss4wiX4z8Sm1XRPklsqd
279
292
  ultralytics/utils/export/engine.py,sha256=23-lC6dNsmz5vprSJzaN7UGNXrFlVedNcqhlOH_IXes,9956
280
293
  ultralytics/utils/export/imx.py,sha256=UHIq_PObOphIxctgSi0-5WaHvolHsHd3r5TTSjQSdgo,12860
281
294
  ultralytics/utils/export/tensorflow.py,sha256=PyAp0_rXSUcXiqV2RY0H9b_-oFaZ7hZBiSM42X53t0Q,9374
282
- dgenerate_ultralytics_headless-8.3.236.dist-info/METADATA,sha256=i7ZK9XL9rN6NRZX1EJl23HuEAJTF7NtqDRwPqnfaUe0,38747
283
- dgenerate_ultralytics_headless-8.3.236.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
284
- dgenerate_ultralytics_headless-8.3.236.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
285
- dgenerate_ultralytics_headless-8.3.236.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
286
- dgenerate_ultralytics_headless-8.3.236.dist-info/RECORD,,
295
+ dgenerate_ultralytics_headless-8.3.237.dist-info/METADATA,sha256=339N7k4fPszkh2fu46L3imnl6kF05aClobjpQEFFl9Q,38747
296
+ dgenerate_ultralytics_headless-8.3.237.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
297
+ dgenerate_ultralytics_headless-8.3.237.dist-info/entry_points.txt,sha256=YM_wiKyTe9yRrsEfqvYolNO5ngwfoL4-NwgKzc8_7sI,93
298
+ dgenerate_ultralytics_headless-8.3.237.dist-info/top_level.txt,sha256=XP49TwiMw4QGsvTLSYiJhz1xF_k7ev5mQ8jJXaXi45Q,12
299
+ dgenerate_ultralytics_headless-8.3.237.dist-info/RECORD,,
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.236"
3
+ __version__ = "8.3.237"
4
4
 
5
5
  import importlib
6
6
  import os
@@ -392,8 +392,10 @@ class Exporter:
392
392
  if self.args.half and self.args.int8:
393
393
  LOGGER.warning("half=True and int8=True are mutually exclusive, setting half=False.")
394
394
  self.args.half = False
395
- if self.args.half and (onnx or jit) and self.device.type == "cpu":
396
- LOGGER.warning("half=True only compatible with GPU export, i.e. use device=0, setting half=False.")
395
+ if self.args.half and jit and self.device.type == "cpu":
396
+ LOGGER.warning(
397
+ "half=True only compatible with GPU export for TorchScript, i.e. use device=0, setting half=False."
398
+ )
397
399
  self.args.half = False
398
400
  self.imgsz = check_imgsz(self.args.imgsz, stride=model.stride, min_dim=2) # check image size
399
401
  if self.args.optimize:
@@ -716,6 +718,16 @@ class Exporter:
716
718
  LOGGER.info(f"{prefix} limiting IR version {model_onnx.ir_version} to 10 for ONNXRuntime compatibility...")
717
719
  model_onnx.ir_version = 10
718
720
 
721
+ # FP16 conversion for CPU export (GPU exports are already FP16 from model.half() during tracing)
722
+ if self.args.half and self.device.type == "cpu":
723
+ try:
724
+ from onnxruntime.transformers import float16
725
+
726
+ LOGGER.info(f"{prefix} converting to FP16...")
727
+ model_onnx = float16.convert_float_to_float16(model_onnx, keep_io_types=True)
728
+ except Exception as e:
729
+ LOGGER.warning(f"{prefix} FP16 conversion failure: {e}")
730
+
719
731
  onnx.save(model_onnx, f)
720
732
  return f
721
733
 
@@ -1220,10 +1232,9 @@ class Exporter:
1220
1232
  f"{sudo}mkdir -p /etc/apt/keyrings",
1221
1233
  f"curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | {sudo}gpg --dearmor -o /etc/apt/keyrings/google.gpg",
1222
1234
  f'echo "deb [signed-by=/etc/apt/keyrings/google.gpg] https://packages.cloud.google.com/apt coral-edgetpu-stable main" | {sudo}tee /etc/apt/sources.list.d/coral-edgetpu.list',
1223
- f"{sudo}apt-get update",
1224
- f"{sudo}apt-get install -y edgetpu-compiler",
1225
1235
  ):
1226
1236
  subprocess.run(c, shell=True, check=True)
1237
+ check_apt_requirements(["edgetpu-compiler"])
1227
1238
 
1228
1239
  ver = subprocess.run(cmd, shell=True, capture_output=True, check=True).stdout.decode().rsplit(maxsplit=1)[-1]
1229
1240
  LOGGER.info(f"\n{prefix} starting export with Edge TPU compiler {ver}...")
@@ -1301,16 +1312,12 @@ class Exporter:
1301
1312
  java_version = int(version_match.group(1)) if version_match else 0
1302
1313
  assert java_version >= 17, "Java version too old"
1303
1314
  except (FileNotFoundError, subprocess.CalledProcessError, AssertionError):
1304
- cmd = None
1305
1315
  if IS_UBUNTU or IS_DEBIAN_TRIXIE:
1306
1316
  LOGGER.info(f"\n{prefix} installing Java 21 for Ubuntu...")
1307
- cmd = (["sudo"] if is_sudo_available() else []) + ["apt-get", "install", "-y", "openjdk-21-jre"]
1317
+ check_apt_requirements(["openjdk-21-jre"])
1308
1318
  elif IS_RASPBERRYPI or IS_DEBIAN_BOOKWORM:
1309
1319
  LOGGER.info(f"\n{prefix} installing Java 17 for Raspberry Pi or Debian ...")
1310
- cmd = (["sudo"] if is_sudo_available() else []) + ["apt-get", "install", "-y", "openjdk-17-jre"]
1311
-
1312
- if cmd:
1313
- subprocess.run(cmd, check=True)
1320
+ check_apt_requirements(["openjdk-17-jre"])
1314
1321
 
1315
1322
  return torch2imx(
1316
1323
  self.model,
@@ -244,14 +244,15 @@ class BasePredictor:
244
244
  for _ in gen: # sourcery skip: remove-empty-nested-block, noqa
245
245
  pass
246
246
 
247
- def setup_source(self, source):
247
+ def setup_source(self, source, stride: int | None = None):
248
248
  """Set up source and inference mode.
249
249
 
250
250
  Args:
251
251
  source (str | Path | list[str] | list[Path] | list[np.ndarray] | np.ndarray | torch.Tensor): Source for
252
252
  inference.
253
+ stride (int, optional): Model stride for image size checking.
253
254
  """
254
- self.imgsz = check_imgsz(self.args.imgsz, stride=self.model.stride, min_dim=2) # check image size
255
+ self.imgsz = check_imgsz(self.args.imgsz, stride=stride or self.model.stride, min_dim=2) # check image size
255
256
  self.dataset = load_inference_source(
256
257
  source=source,
257
258
  batch=self.args.batch,
@@ -812,6 +812,14 @@ class BaseTrainer:
812
812
  "device",
813
813
  "close_mosaic",
814
814
  "augmentations",
815
+ "save_period",
816
+ "workers",
817
+ "cache",
818
+ "patience",
819
+ "time",
820
+ "freeze",
821
+ "val",
822
+ "plots",
815
823
  ): # allow arg updates to reduce memory or update device on resume
816
824
  if k in overrides:
817
825
  setattr(self.args, k, overrides[k])
@@ -85,7 +85,7 @@ class RTDETRDataset(YOLODataset):
85
85
  transforms = v8_transforms(self, self.imgsz, hyp, stretch=True)
86
86
  else:
87
87
  # transforms = Compose([LetterBox(new_shape=(self.imgsz, self.imgsz), auto=False, scale_fill=True)])
88
- transforms = Compose([lambda x: {**x, **{"ratio_pad": [x["ratio_pad"], [0, 0]]}}])
88
+ transforms = Compose([])
89
89
  transforms.append(
90
90
  Format(
91
91
  bbox_format="xywh",
@@ -150,6 +150,10 @@ class RTDETRValidator(DetectionValidator):
150
150
  data=self.data,
151
151
  )
152
152
 
153
+ def scale_preds(self, predn: dict[str, torch.Tensor], pbatch: dict[str, Any]) -> dict[str, torch.Tensor]:
154
+ """Scales predictions to the original image size."""
155
+ return predn
156
+
153
157
  def postprocess(
154
158
  self, preds: torch.Tensor | list[torch.Tensor] | tuple[torch.Tensor]
155
159
  ) -> list[dict[str, torch.Tensor]]:
@@ -1,7 +1,16 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
3
  from .model import SAM
4
- from .predict import Predictor, SAM2DynamicInteractivePredictor, SAM2Predictor, SAM2VideoPredictor
4
+ from .predict import (
5
+ Predictor,
6
+ SAM2DynamicInteractivePredictor,
7
+ SAM2Predictor,
8
+ SAM2VideoPredictor,
9
+ SAM3Predictor,
10
+ SAM3SemanticPredictor,
11
+ SAM3VideoPredictor,
12
+ SAM3VideoSemanticPredictor,
13
+ )
5
14
 
6
15
  __all__ = (
7
16
  "SAM",
@@ -9,4 +18,8 @@ __all__ = (
9
18
  "SAM2DynamicInteractivePredictor",
10
19
  "SAM2Predictor",
11
20
  "SAM2VideoPredictor",
21
+ "SAM3Predictor",
22
+ "SAM3SemanticPredictor",
23
+ "SAM3VideoPredictor",
24
+ "SAM3VideoSemanticPredictor",
12
25
  ) # tuple or list of exportable items
@@ -21,6 +21,21 @@ from .modules.tiny_encoder import TinyViT
21
21
  from .modules.transformer import TwoWayTransformer
22
22
 
23
23
 
24
+ def _load_checkpoint(model, checkpoint):
25
+ """Load checkpoint into model from file path."""
26
+ if checkpoint is None:
27
+ return model
28
+
29
+ checkpoint = attempt_download_asset(checkpoint)
30
+ with open(checkpoint, "rb") as f:
31
+ state_dict = torch_load(f)
32
+ # Handle nested "model" key
33
+ if "model" in state_dict and isinstance(state_dict["model"], dict):
34
+ state_dict = state_dict["model"]
35
+ model.load_state_dict(state_dict)
36
+ return model
37
+
38
+
24
39
  def build_sam_vit_h(checkpoint=None):
25
40
  """Build and return a Segment Anything Model (SAM) h-size model with specified encoder parameters."""
26
41
  return _build_sam(
@@ -205,10 +220,7 @@ def _build_sam(
205
220
  pixel_std=[58.395, 57.12, 57.375],
206
221
  )
207
222
  if checkpoint is not None:
208
- checkpoint = attempt_download_asset(checkpoint)
209
- with open(checkpoint, "rb") as f:
210
- state_dict = torch_load(f)
211
- sam.load_state_dict(state_dict)
223
+ sam = _load_checkpoint(sam, checkpoint)
212
224
  sam.eval()
213
225
  return sam
214
226
 
@@ -299,10 +311,7 @@ def _build_sam2(
299
311
  )
300
312
 
301
313
  if checkpoint is not None:
302
- checkpoint = attempt_download_asset(checkpoint)
303
- with open(checkpoint, "rb") as f:
304
- state_dict = torch_load(f)["model"]
305
- sam2.load_state_dict(state_dict)
314
+ sam2 = _load_checkpoint(sam2, checkpoint)
306
315
  sam2.eval()
307
316
  return sam2
308
317