ultralytics 8.2.82__tar.gz → 8.2.84__tar.gz

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.

Potentially problematic release.


This version of ultralytics might be problematic. Click here for more details.

Files changed (238) hide show
  1. {ultralytics-8.2.82/ultralytics.egg-info → ultralytics-8.2.84}/PKG-INFO +4 -3
  2. {ultralytics-8.2.82 → ultralytics-8.2.84}/README.md +3 -2
  3. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/__init__.py +1 -1
  4. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/__init__.py +7 -5
  5. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/loaders.py +1 -1
  6. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/engine/model.py +4 -2
  7. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/hub/session.py +1 -0
  8. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/model.py +1 -1
  9. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/modules/encoders.py +6 -1
  10. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/modules/sam.py +24 -0
  11. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/modules/tiny_encoder.py +22 -1
  12. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/predict.py +16 -3
  13. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/__init__.py +15 -1
  14. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/metrics.py +1 -1
  15. {ultralytics-8.2.82 → ultralytics-8.2.84/ultralytics.egg-info}/PKG-INFO +4 -3
  16. {ultralytics-8.2.82 → ultralytics-8.2.84}/LICENSE +0 -0
  17. {ultralytics-8.2.82 → ultralytics-8.2.84}/pyproject.toml +0 -0
  18. {ultralytics-8.2.82 → ultralytics-8.2.84}/setup.cfg +0 -0
  19. {ultralytics-8.2.82 → ultralytics-8.2.84}/tests/__init__.py +0 -0
  20. {ultralytics-8.2.82 → ultralytics-8.2.84}/tests/conftest.py +0 -0
  21. {ultralytics-8.2.82 → ultralytics-8.2.84}/tests/test_cli.py +0 -0
  22. {ultralytics-8.2.82 → ultralytics-8.2.84}/tests/test_cuda.py +0 -0
  23. {ultralytics-8.2.82 → ultralytics-8.2.84}/tests/test_engine.py +0 -0
  24. {ultralytics-8.2.82 → ultralytics-8.2.84}/tests/test_explorer.py +0 -0
  25. {ultralytics-8.2.82 → ultralytics-8.2.84}/tests/test_exports.py +0 -0
  26. {ultralytics-8.2.82 → ultralytics-8.2.84}/tests/test_integrations.py +0 -0
  27. {ultralytics-8.2.82 → ultralytics-8.2.84}/tests/test_python.py +0 -0
  28. {ultralytics-8.2.82 → ultralytics-8.2.84}/tests/test_solutions.py +0 -0
  29. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/assets/bus.jpg +0 -0
  30. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/assets/zidane.jpg +0 -0
  31. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  32. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  33. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  34. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  35. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  36. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  37. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  38. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  39. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  40. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  41. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  42. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  43. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  44. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/coco.yaml +0 -0
  45. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  46. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  47. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  48. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  49. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  50. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  51. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  52. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  53. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  54. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  55. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/signature.yaml +0 -0
  56. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  57. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/datasets/xView.yaml +0 -0
  58. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/default.yaml +0 -0
  59. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  60. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  61. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  62. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  63. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  64. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  65. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  66. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  67. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  68. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  69. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  70. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  71. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  72. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  73. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  74. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  75. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  76. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  77. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  78. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  79. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  80. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  81. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  82. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  83. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  84. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  85. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  86. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  87. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  88. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  89. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  90. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  91. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  92. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  93. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  94. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  95. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  96. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  97. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  98. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  99. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  100. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  101. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/__init__.py +0 -0
  102. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/annotator.py +0 -0
  103. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/augment.py +0 -0
  104. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/base.py +0 -0
  105. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/build.py +0 -0
  106. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/converter.py +0 -0
  107. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/dataset.py +0 -0
  108. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/explorer/__init__.py +0 -0
  109. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/explorer/explorer.py +0 -0
  110. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/explorer/gui/__init__.py +0 -0
  111. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/explorer/gui/dash.py +0 -0
  112. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/explorer/utils.py +0 -0
  113. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/split_dota.py +0 -0
  114. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/data/utils.py +0 -0
  115. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/engine/__init__.py +0 -0
  116. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/engine/exporter.py +0 -0
  117. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/engine/predictor.py +0 -0
  118. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/engine/results.py +0 -0
  119. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/engine/trainer.py +0 -0
  120. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/engine/tuner.py +0 -0
  121. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/engine/validator.py +0 -0
  122. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/hub/__init__.py +0 -0
  123. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/hub/auth.py +0 -0
  124. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/hub/google/__init__.py +0 -0
  125. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/hub/utils.py +0 -0
  126. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/__init__.py +0 -0
  127. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/fastsam/__init__.py +0 -0
  128. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/fastsam/model.py +0 -0
  129. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/fastsam/predict.py +0 -0
  130. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/fastsam/utils.py +0 -0
  131. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/fastsam/val.py +0 -0
  132. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/nas/__init__.py +0 -0
  133. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/nas/model.py +0 -0
  134. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/nas/predict.py +0 -0
  135. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/nas/val.py +0 -0
  136. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/rtdetr/__init__.py +0 -0
  137. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/rtdetr/model.py +0 -0
  138. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/rtdetr/predict.py +0 -0
  139. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/rtdetr/train.py +0 -0
  140. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/rtdetr/val.py +0 -0
  141. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/__init__.py +0 -0
  142. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/amg.py +0 -0
  143. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/build.py +0 -0
  144. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/modules/__init__.py +0 -0
  145. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/modules/blocks.py +0 -0
  146. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/modules/decoders.py +0 -0
  147. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  148. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/modules/transformer.py +0 -0
  149. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/sam/modules/utils.py +0 -0
  150. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/utils/__init__.py +0 -0
  151. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/utils/loss.py +0 -0
  152. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/utils/ops.py +0 -0
  153. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/__init__.py +0 -0
  154. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/classify/__init__.py +0 -0
  155. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/classify/predict.py +0 -0
  156. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/classify/train.py +0 -0
  157. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/classify/val.py +0 -0
  158. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/detect/__init__.py +0 -0
  159. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/detect/predict.py +0 -0
  160. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/detect/train.py +0 -0
  161. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/detect/val.py +0 -0
  162. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/model.py +0 -0
  163. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/obb/__init__.py +0 -0
  164. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/obb/predict.py +0 -0
  165. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/obb/train.py +0 -0
  166. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/obb/val.py +0 -0
  167. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/pose/__init__.py +0 -0
  168. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/pose/predict.py +0 -0
  169. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/pose/train.py +0 -0
  170. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/pose/val.py +0 -0
  171. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/segment/__init__.py +0 -0
  172. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/segment/predict.py +0 -0
  173. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/segment/train.py +0 -0
  174. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/segment/val.py +0 -0
  175. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/world/__init__.py +0 -0
  176. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/world/train.py +0 -0
  177. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/models/yolo/world/train_world.py +0 -0
  178. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/nn/__init__.py +0 -0
  179. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/nn/autobackend.py +0 -0
  180. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/nn/modules/__init__.py +0 -0
  181. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/nn/modules/activation.py +0 -0
  182. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/nn/modules/block.py +0 -0
  183. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/nn/modules/conv.py +0 -0
  184. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/nn/modules/head.py +0 -0
  185. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/nn/modules/transformer.py +0 -0
  186. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/nn/modules/utils.py +0 -0
  187. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/nn/tasks.py +0 -0
  188. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/solutions/__init__.py +0 -0
  189. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/solutions/ai_gym.py +0 -0
  190. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/solutions/analytics.py +0 -0
  191. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/solutions/distance_calculation.py +0 -0
  192. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/solutions/heatmap.py +0 -0
  193. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/solutions/object_counter.py +0 -0
  194. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/solutions/parking_management.py +0 -0
  195. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/solutions/queue_management.py +0 -0
  196. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/solutions/speed_estimation.py +0 -0
  197. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/solutions/streamlit_inference.py +0 -0
  198. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/trackers/__init__.py +0 -0
  199. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/trackers/basetrack.py +0 -0
  200. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/trackers/bot_sort.py +0 -0
  201. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/trackers/byte_tracker.py +0 -0
  202. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/trackers/track.py +0 -0
  203. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/trackers/utils/__init__.py +0 -0
  204. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/trackers/utils/gmc.py +0 -0
  205. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  206. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/trackers/utils/matching.py +0 -0
  207. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/autobatch.py +0 -0
  208. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/benchmarks.py +0 -0
  209. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/__init__.py +0 -0
  210. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/base.py +0 -0
  211. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/clearml.py +0 -0
  212. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/comet.py +0 -0
  213. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/dvc.py +0 -0
  214. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/hub.py +0 -0
  215. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/mlflow.py +0 -0
  216. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/neptune.py +0 -0
  217. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/raytune.py +0 -0
  218. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  219. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/callbacks/wb.py +0 -0
  220. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/checks.py +0 -0
  221. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/dist.py +0 -0
  222. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/downloads.py +0 -0
  223. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/errors.py +0 -0
  224. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/files.py +0 -0
  225. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/instance.py +0 -0
  226. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/loss.py +0 -0
  227. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/ops.py +0 -0
  228. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/patches.py +0 -0
  229. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/plotting.py +0 -0
  230. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/tal.py +0 -0
  231. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/torch_utils.py +0 -0
  232. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/triton.py +0 -0
  233. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics/utils/tuner.py +0 -0
  234. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics.egg-info/SOURCES.txt +0 -0
  235. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics.egg-info/dependency_links.txt +0 -0
  236. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics.egg-info/entry_points.txt +0 -0
  237. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics.egg-info/requires.txt +0 -0
  238. {ultralytics-8.2.82 → ultralytics-8.2.84}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.82
3
+ Version: 8.2.84
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -96,6 +96,7 @@ Requires-Dist: pycocotools>=2.0.7; extra == "extra"
96
96
  <a href="https://hub.docker.com/r/ultralytics/ultralytics"><img src="https://img.shields.io/docker/pulls/ultralytics/ultralytics?logo=docker" alt="Ultralytics Docker Pulls"></a>
97
97
  <a href="https://ultralytics.com/discord"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
98
98
  <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>
99
+ <a href="https://reddit.com/r/ultralytics"><img alt="Ultralytics Reddit" src="https://img.shields.io/reddit/subreddit-subscribers/ultralytics?style=flat&logo=reddit&logoColor=white&label=Reddit&color=blue"></a>
99
100
  <br>
100
101
  <a href="https://console.paperspace.com/github/ultralytics/ultralytics"><img src="https://assets.paperspace.io/img/gradient-badge.svg" alt="Run Ultralytics on Gradient"></a>
101
102
  <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open Ultralytics In Colab"></a>
@@ -105,7 +106,7 @@ Requires-Dist: pycocotools>=2.0.7; extra == "extra"
105
106
 
106
107
  [Ultralytics](https://ultralytics.com) [YOLOv8](https://github.com/ultralytics/ultralytics) is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection and tracking, instance segmentation, image classification and pose estimation tasks.
107
108
 
108
- We hope that the resources here will help you get the most out of YOLOv8. Please browse the YOLOv8 <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics/issues/new/choose">GitHub</a> for support, and join our <a href="https://ultralytics.com/discord">Discord</a> community for questions and discussions!
109
+ We hope that the resources here will help you get the most out of YOLOv8. Please browse the YOLOv8 <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics/issues/new/choose">GitHub</a> for support, questions, or discussions, become a member of the Ultralytics <a href="https://ultralytics.com/discord">Discord</a>, <a href="https://reddit.com/r/ultralytics">Reddit</a> and <a href="https://community.ultralytics.com">Forums</a>!
109
110
 
110
111
  To request an Enterprise License please complete the form at [Ultralytics Licensing](https://ultralytics.com/license).
111
112
 
@@ -361,7 +362,7 @@ Ultralytics offers two licensing options to accommodate diverse use cases:
361
362
 
362
363
  ## <div align="center">Contact</div>
363
364
 
364
- For Ultralytics bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues), and join our [Discord](https://ultralytics.com/discord) community for questions and discussions!
365
+ For Ultralytics bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues). Become a member of the Ultralytics [Discord](https://ultralytics.com/discord), [Reddit](https://reddit.com/r/ultralytics), or [Forums](https://community.ultralytics.com) for asking questions, sharing projects, learning discussions, or for help with all things Ultralytics!
365
366
 
366
367
  <br>
367
368
  <div align="center">
@@ -12,6 +12,7 @@
12
12
  <a href="https://hub.docker.com/r/ultralytics/ultralytics"><img src="https://img.shields.io/docker/pulls/ultralytics/ultralytics?logo=docker" alt="Ultralytics Docker Pulls"></a>
13
13
  <a href="https://ultralytics.com/discord"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
14
14
  <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>
15
+ <a href="https://reddit.com/r/ultralytics"><img alt="Ultralytics Reddit" src="https://img.shields.io/reddit/subreddit-subscribers/ultralytics?style=flat&logo=reddit&logoColor=white&label=Reddit&color=blue"></a>
15
16
  <br>
16
17
  <a href="https://console.paperspace.com/github/ultralytics/ultralytics"><img src="https://assets.paperspace.io/img/gradient-badge.svg" alt="Run Ultralytics on Gradient"></a>
17
18
  <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open Ultralytics In Colab"></a>
@@ -21,7 +22,7 @@
21
22
 
22
23
  [Ultralytics](https://ultralytics.com) [YOLOv8](https://github.com/ultralytics/ultralytics) is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection and tracking, instance segmentation, image classification and pose estimation tasks.
23
24
 
24
- We hope that the resources here will help you get the most out of YOLOv8. Please browse the YOLOv8 <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics/issues/new/choose">GitHub</a> for support, and join our <a href="https://ultralytics.com/discord">Discord</a> community for questions and discussions!
25
+ We hope that the resources here will help you get the most out of YOLOv8. Please browse the YOLOv8 <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics/issues/new/choose">GitHub</a> for support, questions, or discussions, become a member of the Ultralytics <a href="https://ultralytics.com/discord">Discord</a>, <a href="https://reddit.com/r/ultralytics">Reddit</a> and <a href="https://community.ultralytics.com">Forums</a>!
25
26
 
26
27
  To request an Enterprise License please complete the form at [Ultralytics Licensing](https://ultralytics.com/license).
27
28
 
@@ -277,7 +278,7 @@ Ultralytics offers two licensing options to accommodate diverse use cases:
277
278
 
278
279
  ## <div align="center">Contact</div>
279
280
 
280
- For Ultralytics bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues), and join our [Discord](https://ultralytics.com/discord) community for questions and discussions!
281
+ For Ultralytics bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues). Become a member of the Ultralytics [Discord](https://ultralytics.com/discord), [Reddit](https://reddit.com/r/ultralytics), or [Forums](https://community.ultralytics.com) for asking questions, sharing projects, learning discussions, or for help with all things Ultralytics!
281
282
 
282
283
  <br>
283
284
  <div align="center">
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.2.82"
3
+ __version__ = "8.2.84"
4
4
 
5
5
  import os
6
6
 
@@ -13,6 +13,7 @@ from ultralytics.utils import (
13
13
  DEFAULT_CFG,
14
14
  DEFAULT_CFG_DICT,
15
15
  DEFAULT_CFG_PATH,
16
+ IS_VSCODE,
16
17
  LOGGER,
17
18
  RANK,
18
19
  ROOT,
@@ -25,6 +26,7 @@ from ultralytics.utils import (
25
26
  checks,
26
27
  colorstr,
27
28
  deprecation_warn,
29
+ vscode_msg,
28
30
  yaml_load,
29
31
  yaml_print,
30
32
  )
@@ -791,11 +793,7 @@ def entrypoint(debug=""):
791
793
  from ultralytics import FastSAM
792
794
 
793
795
  model = FastSAM(model)
794
- elif "sam2" in stem:
795
- from ultralytics import SAM2
796
-
797
- model = SAM2(model)
798
- elif "sam" in stem:
796
+ elif "sam_" in stem or "sam2_" in stem:
799
797
  from ultralytics import SAM
800
798
 
801
799
  model = SAM(model)
@@ -834,6 +832,10 @@ def entrypoint(debug=""):
834
832
  # Show help
835
833
  LOGGER.info(f"💡 Learn more at https://docs.ultralytics.com/modes/{mode}")
836
834
 
835
+ # Recommend VS Code extension
836
+ if IS_VSCODE and SETTINGS.get("vscode_msg", True):
837
+ LOGGER.info(vscode_msg())
838
+
837
839
 
838
840
  # Special modes --------------------------------------------------------------------------------------------------------
839
841
  def copy_default_cfg():
@@ -84,7 +84,7 @@ class LoadStreams:
84
84
  # Start thread to read frames from video stream
85
85
  st = f"{i + 1}/{n}: {s}... "
86
86
  if urlparse(s).hostname in {"www.youtube.com", "youtube.com", "youtu.be"}: # if source is YouTube video
87
- # YouTube format i.e. 'https://www.youtube.com/watch?v=Zgi9g1ksQHc' or 'https://youtu.be/LNwODJXcvt4'
87
+ # YouTube format i.e. 'https://www.youtube.com/watch?v=Jsn8D3aC840' or 'https://youtu.be/Jsn8D3aC840'
88
88
  s = get_best_youtube_url(s)
89
89
  s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam
90
90
  if s == 0 and (IS_COLAB or IS_KAGGLE):
@@ -128,8 +128,10 @@ class Model(nn.Module):
128
128
  if self.is_hub_model(model):
129
129
  # Fetch model from HUB
130
130
  checks.check_requirements("hub-sdk>=0.0.8")
131
- self.session = HUBTrainingSession.create_session(model)
132
- model = self.session.model_file
131
+ session = HUBTrainingSession.create_session(model)
132
+ model = session.model_file
133
+ if session.train_args: # training sent from HUB
134
+ self.session = session
133
135
 
134
136
  # Check if Triton Server model
135
137
  elif self.is_triton_model(model):
@@ -50,6 +50,7 @@ class HUBTrainingSession:
50
50
  self.model = None
51
51
  self.model_url = None
52
52
  self.model_file = None
53
+ self.train_args = None
53
54
 
54
55
  # Parse input
55
56
  api_key, model_id, self.filename = self._parse_identifier(identifier)
@@ -106,7 +106,7 @@ class SAM(Model):
106
106
  ... print(f"Detected {len(r.masks)} masks")
107
107
  """
108
108
  overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024)
109
- kwargs.update(overrides)
109
+ kwargs = {**overrides, **kwargs}
110
110
  prompts = dict(bboxes=bboxes, points=points, labels=labels)
111
111
  return super().predict(source, stream, prompts=prompts, **kwargs)
112
112
 
@@ -151,7 +151,12 @@ class ImageEncoderViT(nn.Module):
151
151
  """Processes input through patch embedding, positional embedding, transformer blocks, and neck module."""
152
152
  x = self.patch_embed(x)
153
153
  if self.pos_embed is not None:
154
- x = x + self.pos_embed
154
+ pos_embed = (
155
+ F.interpolate(self.pos_embed.permute(0, 3, 1, 2), scale_factor=self.img_size / 1024).permute(0, 2, 3, 1)
156
+ if self.img_size != 1024
157
+ else self.pos_embed
158
+ )
159
+ x = x + pos_embed
155
160
  for blk in self.blocks:
156
161
  x = blk(x)
157
162
  return self.neck(x.permute(0, 3, 1, 2))
@@ -90,6 +90,19 @@ class SAMModel(nn.Module):
90
90
  self.register_buffer("pixel_mean", torch.Tensor(pixel_mean).view(-1, 1, 1), False)
91
91
  self.register_buffer("pixel_std", torch.Tensor(pixel_std).view(-1, 1, 1), False)
92
92
 
93
+ def set_imgsz(self, imgsz):
94
+ """
95
+ Set image size to make model compatible with different image sizes.
96
+
97
+ Args:
98
+ imgsz (Tuple[int, int]): The size of the input image.
99
+ """
100
+ if hasattr(self.image_encoder, "set_imgsz"):
101
+ self.image_encoder.set_imgsz(imgsz)
102
+ self.prompt_encoder.input_image_size = imgsz
103
+ self.prompt_encoder.image_embedding_size = [x // 16 for x in imgsz] # 16 is fixed as patch size of ViT model
104
+ self.image_encoder.img_size = imgsz[0]
105
+
93
106
 
94
107
  class SAM2Model(torch.nn.Module):
95
108
  """
@@ -940,3 +953,14 @@ class SAM2Model(torch.nn.Module):
940
953
  # don't overlap (here sigmoid(-10.0)=4.5398e-05)
941
954
  pred_masks = torch.where(keep, pred_masks, torch.clamp(pred_masks, max=-10.0))
942
955
  return pred_masks
956
+
957
+ def set_imgsz(self, imgsz):
958
+ """
959
+ Set image size to make model compatible with different image sizes.
960
+
961
+ Args:
962
+ imgsz (Tuple[int, int]): The size of the input image.
963
+ """
964
+ self.image_size = imgsz[0]
965
+ self.sam_prompt_encoder.input_image_size = imgsz
966
+ self.sam_prompt_encoder.image_embedding_size = [x // 16 for x in imgsz] # fixed ViT patch size of 16
@@ -982,10 +982,31 @@ class TinyViT(nn.Module):
982
982
  layer = self.layers[i]
983
983
  x = layer(x)
984
984
  batch, _, channel = x.shape
985
- x = x.view(batch, 64, 64, channel)
985
+ x = x.view(batch, self.patches_resolution[0] // 4, self.patches_resolution[1] // 4, channel)
986
986
  x = x.permute(0, 3, 1, 2)
987
987
  return self.neck(x)
988
988
 
989
989
  def forward(self, x):
990
990
  """Performs the forward pass through the TinyViT model, extracting features from the input image."""
991
991
  return self.forward_features(x)
992
+
993
+ def set_imgsz(self, imgsz=[1024, 1024]):
994
+ """
995
+ Set image size to make model compatible with different image sizes.
996
+
997
+ Args:
998
+ imgsz (Tuple[int, int]): The size of the input image.
999
+ """
1000
+ imgsz = [s // 4 for s in imgsz]
1001
+ self.patches_resolution = imgsz
1002
+ for i, layer in enumerate(self.layers):
1003
+ input_resolution = (
1004
+ imgsz[0] // (2 ** (i - 1 if i == 3 else i)),
1005
+ imgsz[1] // (2 ** (i - 1 if i == 3 else i)),
1006
+ )
1007
+ layer.input_resolution = input_resolution
1008
+ if layer.downsample is not None:
1009
+ layer.downsample.input_resolution = input_resolution
1010
+ if isinstance(layer, BasicLayer):
1011
+ for b in layer.blocks:
1012
+ b.input_resolution = input_resolution
@@ -95,7 +95,7 @@ class Predictor(BasePredictor):
95
95
  """
96
96
  if overrides is None:
97
97
  overrides = {}
98
- overrides.update(dict(task="segment", mode="predict", imgsz=1024))
98
+ overrides.update(dict(task="segment", mode="predict"))
99
99
  super().__init__(cfg, overrides, _callbacks)
100
100
  self.args.retina_masks = True
101
101
  self.im = None
@@ -455,8 +455,11 @@ class Predictor(BasePredictor):
455
455
  cls = torch.arange(len(pred_masks), dtype=torch.int32, device=pred_masks.device)
456
456
  pred_bboxes = torch.cat([pred_bboxes, pred_scores[:, None], cls[:, None]], dim=-1)
457
457
 
458
- masks = ops.scale_masks(masks[None].float(), orig_img.shape[:2], padding=False)[0]
459
- masks = masks > self.model.mask_threshold # to bool
458
+ if len(masks) == 0:
459
+ masks = None
460
+ else:
461
+ masks = ops.scale_masks(masks[None].float(), orig_img.shape[:2], padding=False)[0]
462
+ masks = masks > self.model.mask_threshold # to bool
460
463
  results.append(Results(orig_img, path=img_path, names=names, masks=masks, boxes=pred_bboxes))
461
464
  # Reset segment-all mode.
462
465
  self.segment_all = False
@@ -522,6 +525,10 @@ class Predictor(BasePredictor):
522
525
 
523
526
  def get_im_features(self, im):
524
527
  """Extracts image features using the SAM model's image encoder for subsequent mask prediction."""
528
+ assert (
529
+ isinstance(self.imgsz, (tuple, list)) and self.imgsz[0] == self.imgsz[1]
530
+ ), f"SAM models only support square image size, but got {self.imgsz}."
531
+ self.model.set_imgsz(self.imgsz)
525
532
  return self.model.image_encoder(im)
526
533
 
527
534
  def set_prompts(self, prompts):
@@ -761,6 +768,12 @@ class SAM2Predictor(Predictor):
761
768
 
762
769
  def get_im_features(self, im):
763
770
  """Extracts image features from the SAM image encoder for subsequent processing."""
771
+ assert (
772
+ isinstance(self.imgsz, (tuple, list)) and self.imgsz[0] == self.imgsz[1]
773
+ ), f"SAM 2 models only support square image size, but got {self.imgsz}."
774
+ self.model.set_imgsz(self.imgsz)
775
+ self._bb_feat_sizes = [[x // (4 * i) for x in self.imgsz] for i in [1, 2, 4]]
776
+
764
777
  backbone_out = self.model.forward_image(im)
765
778
  _, vision_feats, _, _ = self.model._prepare_backbone_features(backbone_out)
766
779
  if self.model.directly_add_no_mem_embed:
@@ -46,6 +46,7 @@ ARM64 = platform.machine() in {"arm64", "aarch64"} # ARM64 booleans
46
46
  PYTHON_VERSION = platform.python_version()
47
47
  TORCH_VERSION = torch.__version__
48
48
  TORCHVISION_VERSION = importlib.metadata.version("torchvision") # faster than importing torchvision
49
+ IS_VSCODE = os.environ.get("TERM_PROGRAM", False) == "vscode"
49
50
  HELP_MSG = """
50
51
  Examples for running Ultralytics:
51
52
 
@@ -1046,7 +1047,7 @@ class SettingsManager(dict):
1046
1047
  version (str): Settings version. In case of local version mismatch, new default settings will be saved.
1047
1048
  """
1048
1049
 
1049
- def __init__(self, file=SETTINGS_YAML, version="0.0.4"):
1050
+ def __init__(self, file=SETTINGS_YAML, version="0.0.5"):
1050
1051
  """Initializes the SettingsManager with default settings and loads user settings."""
1051
1052
  import copy
1052
1053
  import hashlib
@@ -1077,6 +1078,7 @@ class SettingsManager(dict):
1077
1078
  "raytune": True,
1078
1079
  "tensorboard": True,
1079
1080
  "wandb": True,
1081
+ "vscode_msg": True,
1080
1082
  }
1081
1083
  self.help_msg = (
1082
1084
  f"\nView settings with 'yolo settings' or at '{self.file}'"
@@ -1152,6 +1154,18 @@ def url2file(url):
1152
1154
  return Path(clean_url(url)).name
1153
1155
 
1154
1156
 
1157
+ def vscode_msg(ext="ultralytics.ultralytics-snippets") -> str:
1158
+ """Display a message to install Ultralytics-Snippets for VS Code if not already installed."""
1159
+ path = (USER_CONFIG_DIR.parents[2] if WINDOWS else USER_CONFIG_DIR.parents[1]) / ".vscode/extensions"
1160
+ obs_file = path / ".obsolete" # file tracks uninstalled extensions, while source directory remains
1161
+ installed = any(path.glob(f"{ext}*")) and ext not in (obs_file.read_text("utf-8") if obs_file.exists() else "")
1162
+ return (
1163
+ f"{colorstr('VS Code:')} view Ultralytics VS Code Extension ⚡ at https://docs.ultralytics.com/integrations/vscode"
1164
+ if not installed
1165
+ else ""
1166
+ )
1167
+
1168
+
1155
1169
  # Run below code on utils init ------------------------------------------------------------------------------------
1156
1170
 
1157
1171
  # Check first-install steps
@@ -178,7 +178,7 @@ def _get_covariance_matrix(boxes):
178
178
  boxes (torch.Tensor): A tensor of shape (N, 5) representing rotated bounding boxes, with xywhr format.
179
179
 
180
180
  Returns:
181
- (torch.Tensor): Covariance metrixs corresponding to original rotated bounding boxes.
181
+ (torch.Tensor): Covariance matrices corresponding to original rotated bounding boxes.
182
182
  """
183
183
  # Gaussian bounding boxes, ignore the center points (the first two columns) because they are not needed here.
184
184
  gbbs = torch.cat((boxes[:, 2:4].pow(2) / 12, boxes[:, 4:]), dim=-1)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.82
3
+ Version: 8.2.84
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -96,6 +96,7 @@ Requires-Dist: pycocotools>=2.0.7; extra == "extra"
96
96
  <a href="https://hub.docker.com/r/ultralytics/ultralytics"><img src="https://img.shields.io/docker/pulls/ultralytics/ultralytics?logo=docker" alt="Ultralytics Docker Pulls"></a>
97
97
  <a href="https://ultralytics.com/discord"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
98
98
  <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>
99
+ <a href="https://reddit.com/r/ultralytics"><img alt="Ultralytics Reddit" src="https://img.shields.io/reddit/subreddit-subscribers/ultralytics?style=flat&logo=reddit&logoColor=white&label=Reddit&color=blue"></a>
99
100
  <br>
100
101
  <a href="https://console.paperspace.com/github/ultralytics/ultralytics"><img src="https://assets.paperspace.io/img/gradient-badge.svg" alt="Run Ultralytics on Gradient"></a>
101
102
  <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open Ultralytics In Colab"></a>
@@ -105,7 +106,7 @@ Requires-Dist: pycocotools>=2.0.7; extra == "extra"
105
106
 
106
107
  [Ultralytics](https://ultralytics.com) [YOLOv8](https://github.com/ultralytics/ultralytics) is a cutting-edge, state-of-the-art (SOTA) model that builds upon the success of previous YOLO versions and introduces new features and improvements to further boost performance and flexibility. YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection and tracking, instance segmentation, image classification and pose estimation tasks.
107
108
 
108
- We hope that the resources here will help you get the most out of YOLOv8. Please browse the YOLOv8 <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics/issues/new/choose">GitHub</a> for support, and join our <a href="https://ultralytics.com/discord">Discord</a> community for questions and discussions!
109
+ We hope that the resources here will help you get the most out of YOLOv8. Please browse the YOLOv8 <a href="https://docs.ultralytics.com/">Docs</a> for details, raise an issue on <a href="https://github.com/ultralytics/ultralytics/issues/new/choose">GitHub</a> for support, questions, or discussions, become a member of the Ultralytics <a href="https://ultralytics.com/discord">Discord</a>, <a href="https://reddit.com/r/ultralytics">Reddit</a> and <a href="https://community.ultralytics.com">Forums</a>!
109
110
 
110
111
  To request an Enterprise License please complete the form at [Ultralytics Licensing](https://ultralytics.com/license).
111
112
 
@@ -361,7 +362,7 @@ Ultralytics offers two licensing options to accommodate diverse use cases:
361
362
 
362
363
  ## <div align="center">Contact</div>
363
364
 
364
- For Ultralytics bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues), and join our [Discord](https://ultralytics.com/discord) community for questions and discussions!
365
+ For Ultralytics bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/ultralytics/issues). Become a member of the Ultralytics [Discord](https://ultralytics.com/discord), [Reddit](https://reddit.com/r/ultralytics), or [Forums](https://community.ultralytics.com) for asking questions, sharing projects, learning discussions, or for help with all things Ultralytics!
365
366
 
366
367
  <br>
367
368
  <div align="center">
File without changes
File without changes