ultralytics 8.2.22__tar.gz → 8.2.24__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 (224) hide show
  1. {ultralytics-8.2.22 → ultralytics-8.2.24}/PKG-INFO +4 -2
  2. {ultralytics-8.2.22 → ultralytics-8.2.24}/README.md +3 -1
  3. {ultralytics-8.2.22 → ultralytics-8.2.24}/tests/test_cli.py +1 -2
  4. {ultralytics-8.2.22 → ultralytics-8.2.24}/tests/test_cuda.py +3 -4
  5. {ultralytics-8.2.22 → ultralytics-8.2.24}/tests/test_engine.py +1 -2
  6. {ultralytics-8.2.22 → ultralytics-8.2.24}/tests/test_exports.py +2 -4
  7. {ultralytics-8.2.22 → ultralytics-8.2.24}/tests/test_integrations.py +1 -2
  8. {ultralytics-8.2.22 → ultralytics-8.2.24}/tests/test_python.py +10 -8
  9. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/__init__.py +7 -4
  10. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/explorer/explorer.py +2 -5
  11. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/explorer/gui/dash.py +4 -5
  12. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/loaders.py +24 -7
  13. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/utils.py +1 -1
  14. ultralytics-8.2.24/ultralytics/models/__init__.py +9 -0
  15. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/solutions/analytics.py +2 -2
  16. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/__init__.py +2 -21
  17. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/checks.py +1 -3
  18. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics.egg-info/PKG-INFO +4 -2
  19. ultralytics-8.2.22/ultralytics/models/__init__.py +0 -7
  20. {ultralytics-8.2.22 → ultralytics-8.2.24}/LICENSE +0 -0
  21. {ultralytics-8.2.22 → ultralytics-8.2.24}/pyproject.toml +0 -0
  22. {ultralytics-8.2.22 → ultralytics-8.2.24}/setup.cfg +0 -0
  23. {ultralytics-8.2.22 → ultralytics-8.2.24}/tests/__init__.py +0 -0
  24. {ultralytics-8.2.22 → ultralytics-8.2.24}/tests/conftest.py +0 -0
  25. {ultralytics-8.2.22 → ultralytics-8.2.24}/tests/test_explorer.py +0 -0
  26. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/assets/bus.jpg +0 -0
  27. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/assets/zidane.jpg +0 -0
  28. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/__init__.py +0 -0
  29. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  30. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  31. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  32. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  33. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  34. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  35. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  36. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  37. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  38. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  39. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  40. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  41. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  42. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/coco.yaml +0 -0
  43. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  44. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  45. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  46. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  47. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  48. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  49. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  50. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  51. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  52. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  53. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/signature.yaml +0 -0
  54. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  55. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/datasets/xView.yaml +0 -0
  56. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/default.yaml +0 -0
  57. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  58. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  59. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  60. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  61. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  62. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  63. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  64. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  65. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  66. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  67. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  68. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  69. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  70. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  71. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  72. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  73. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  74. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  75. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  76. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  77. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  78. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  79. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  80. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  81. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  82. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  83. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  84. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  85. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  86. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  87. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  88. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  89. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  90. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/__init__.py +0 -0
  91. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/annotator.py +0 -0
  92. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/augment.py +0 -0
  93. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/base.py +0 -0
  94. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/build.py +0 -0
  95. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/converter.py +0 -0
  96. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/dataset.py +0 -0
  97. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/explorer/__init__.py +0 -0
  98. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/explorer/gui/__init__.py +0 -0
  99. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/explorer/utils.py +0 -0
  100. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/data/split_dota.py +0 -0
  101. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/engine/__init__.py +0 -0
  102. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/engine/exporter.py +0 -0
  103. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/engine/model.py +0 -0
  104. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/engine/predictor.py +0 -0
  105. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/engine/results.py +0 -0
  106. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/engine/trainer.py +0 -0
  107. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/engine/tuner.py +0 -0
  108. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/engine/validator.py +0 -0
  109. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/hub/__init__.py +0 -0
  110. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/hub/auth.py +0 -0
  111. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/hub/session.py +0 -0
  112. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/hub/utils.py +0 -0
  113. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/fastsam/__init__.py +0 -0
  114. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/fastsam/model.py +0 -0
  115. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/fastsam/predict.py +0 -0
  116. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/fastsam/prompt.py +0 -0
  117. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/fastsam/utils.py +0 -0
  118. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/fastsam/val.py +0 -0
  119. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/nas/__init__.py +0 -0
  120. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/nas/model.py +0 -0
  121. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/nas/predict.py +0 -0
  122. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/nas/val.py +0 -0
  123. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/rtdetr/__init__.py +0 -0
  124. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/rtdetr/model.py +0 -0
  125. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/rtdetr/predict.py +0 -0
  126. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/rtdetr/train.py +0 -0
  127. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/rtdetr/val.py +0 -0
  128. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/__init__.py +0 -0
  129. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/amg.py +0 -0
  130. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/build.py +0 -0
  131. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/model.py +0 -0
  132. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/modules/__init__.py +0 -0
  133. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/modules/decoders.py +0 -0
  134. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/modules/encoders.py +0 -0
  135. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/modules/sam.py +0 -0
  136. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  137. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/modules/transformer.py +0 -0
  138. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/sam/predict.py +0 -0
  139. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/utils/__init__.py +0 -0
  140. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/utils/loss.py +0 -0
  141. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/utils/ops.py +0 -0
  142. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/__init__.py +0 -0
  143. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/classify/__init__.py +0 -0
  144. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/classify/predict.py +0 -0
  145. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/classify/train.py +0 -0
  146. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/classify/val.py +0 -0
  147. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/detect/__init__.py +0 -0
  148. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/detect/predict.py +0 -0
  149. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/detect/train.py +0 -0
  150. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/detect/val.py +0 -0
  151. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/model.py +0 -0
  152. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/obb/__init__.py +0 -0
  153. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/obb/predict.py +0 -0
  154. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/obb/train.py +0 -0
  155. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/obb/val.py +0 -0
  156. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/pose/__init__.py +0 -0
  157. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/pose/predict.py +0 -0
  158. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/pose/train.py +0 -0
  159. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/pose/val.py +0 -0
  160. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/segment/__init__.py +0 -0
  161. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/segment/predict.py +0 -0
  162. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/segment/train.py +0 -0
  163. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/segment/val.py +0 -0
  164. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/world/__init__.py +0 -0
  165. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/world/train.py +0 -0
  166. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/models/yolo/world/train_world.py +0 -0
  167. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/nn/__init__.py +0 -0
  168. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/nn/autobackend.py +0 -0
  169. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/nn/modules/__init__.py +0 -0
  170. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/nn/modules/block.py +0 -0
  171. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/nn/modules/conv.py +0 -0
  172. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/nn/modules/head.py +0 -0
  173. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/nn/modules/transformer.py +0 -0
  174. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/nn/modules/utils.py +0 -0
  175. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/nn/tasks.py +0 -0
  176. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/solutions/__init__.py +0 -0
  177. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/solutions/ai_gym.py +0 -0
  178. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/solutions/distance_calculation.py +0 -0
  179. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/solutions/heatmap.py +0 -0
  180. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/solutions/object_counter.py +0 -0
  181. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/solutions/parking_management.py +0 -0
  182. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/solutions/queue_management.py +0 -0
  183. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/solutions/speed_estimation.py +0 -0
  184. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/trackers/__init__.py +0 -0
  185. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/trackers/basetrack.py +0 -0
  186. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/trackers/bot_sort.py +0 -0
  187. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/trackers/byte_tracker.py +0 -0
  188. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/trackers/track.py +0 -0
  189. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/trackers/utils/__init__.py +0 -0
  190. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/trackers/utils/gmc.py +0 -0
  191. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  192. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/trackers/utils/matching.py +0 -0
  193. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/autobatch.py +0 -0
  194. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/benchmarks.py +0 -0
  195. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/__init__.py +0 -0
  196. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/base.py +0 -0
  197. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/clearml.py +0 -0
  198. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/comet.py +0 -0
  199. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/dvc.py +0 -0
  200. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/hub.py +0 -0
  201. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/mlflow.py +0 -0
  202. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/neptune.py +0 -0
  203. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/raytune.py +0 -0
  204. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  205. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/callbacks/wb.py +0 -0
  206. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/dist.py +0 -0
  207. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/downloads.py +0 -0
  208. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/errors.py +0 -0
  209. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/files.py +0 -0
  210. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/instance.py +0 -0
  211. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/loss.py +0 -0
  212. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/metrics.py +0 -0
  213. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/ops.py +0 -0
  214. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/patches.py +0 -0
  215. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/plotting.py +0 -0
  216. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/tal.py +0 -0
  217. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/torch_utils.py +0 -0
  218. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/triton.py +0 -0
  219. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics/utils/tuner.py +0 -0
  220. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics.egg-info/SOURCES.txt +0 -0
  221. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics.egg-info/dependency_links.txt +0 -0
  222. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics.egg-info/entry_points.txt +0 -0
  223. {ultralytics-8.2.22 → ultralytics-8.2.24}/ultralytics.egg-info/requires.txt +0 -0
  224. {ultralytics-8.2.22 → ultralytics-8.2.24}/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.22
3
+ Version: 8.2.24
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
@@ -135,7 +135,7 @@ See below for a quickstart installation and usage example, and see the [YOLOv8 D
135
135
 
136
136
  Pip 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/).
137
137
 
138
- [![PyPI version](https://badge.fury.io/py/ultralytics.svg)](https://badge.fury.io/py/ultralytics) [![Downloads](https://static.pepy.tech/badge/ultralytics)](https://pepy.tech/project/ultralytics)
138
+ [![PyPI - Version](https://img.shields.io/pypi/v/ultralytics?logo=pypi&logoColor=white)](https://pypi.org/project/ultralytics/) [![Downloads](https://static.pepy.tech/badge/ultralytics)](https://pepy.tech/project/ultralytics) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ultralytics?logo=python&logoColor=gold)](https://pypi.org/project/ultralytics/)
139
139
 
140
140
  ```bash
141
141
  pip install ultralytics
@@ -143,6 +143,8 @@ pip install ultralytics
143
143
 
144
144
  For alternative installation methods including [Conda](https://anaconda.org/conda-forge/ultralytics), [Docker](https://hub.docker.com/r/ultralytics/ultralytics), and Git, please refer to the [Quickstart Guide](https://docs.ultralytics.com/quickstart).
145
145
 
146
+ [![Conda Version](https://img.shields.io/conda/vn/conda-forge/ultralytics?logo=condaforge)](https://anaconda.org/conda-forge/ultralytics) [![Docker Image Version](https://img.shields.io/docker/v/ultralytics/ultralytics?sort=semver&logo=docker)](https://hub.docker.com/r/ultralytics/ultralytics)
147
+
146
148
  </details>
147
149
 
148
150
  <details open>
@@ -53,7 +53,7 @@ See below for a quickstart installation and usage example, and see the [YOLOv8 D
53
53
 
54
54
  Pip 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/).
55
55
 
56
- [![PyPI version](https://badge.fury.io/py/ultralytics.svg)](https://badge.fury.io/py/ultralytics) [![Downloads](https://static.pepy.tech/badge/ultralytics)](https://pepy.tech/project/ultralytics)
56
+ [![PyPI - Version](https://img.shields.io/pypi/v/ultralytics?logo=pypi&logoColor=white)](https://pypi.org/project/ultralytics/) [![Downloads](https://static.pepy.tech/badge/ultralytics)](https://pepy.tech/project/ultralytics) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ultralytics?logo=python&logoColor=gold)](https://pypi.org/project/ultralytics/)
57
57
 
58
58
  ```bash
59
59
  pip install ultralytics
@@ -61,6 +61,8 @@ pip install ultralytics
61
61
 
62
62
  For alternative installation methods including [Conda](https://anaconda.org/conda-forge/ultralytics), [Docker](https://hub.docker.com/r/ultralytics/ultralytics), and Git, please refer to the [Quickstart Guide](https://docs.ultralytics.com/quickstart).
63
63
 
64
+ [![Conda Version](https://img.shields.io/conda/vn/conda-forge/ultralytics?logo=condaforge)](https://anaconda.org/conda-forge/ultralytics) [![Docker Image Version](https://img.shields.io/docker/v/ultralytics/ultralytics?sort=semver&logo=docker)](https://hub.docker.com/r/ultralytics/ultralytics)
65
+
64
66
  </details>
65
67
 
66
68
  <details open>
@@ -4,11 +4,10 @@ import subprocess
4
4
 
5
5
  import pytest
6
6
 
7
+ from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE
7
8
  from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
8
9
  from ultralytics.utils import ASSETS, WEIGHTS_DIR, checks
9
10
 
10
- from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE
11
-
12
11
  # Constants
13
12
  TASK_MODEL_DATA = [(task, WEIGHTS_DIR / TASK2MODEL[task], TASK2DATA[task]) for task in TASKS]
14
13
  MODELS = [WEIGHTS_DIR / TASK2MODEL[task] for task in TASKS]
@@ -1,16 +1,15 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- from pathlib import Path
4
3
  from itertools import product
4
+ from pathlib import Path
5
5
 
6
6
  import pytest
7
7
  import torch
8
8
 
9
+ from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE, MODEL, SOURCE
9
10
  from ultralytics import YOLO
10
- from ultralytics.utils import ASSETS, WEIGHTS_DIR
11
11
  from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
12
-
13
- from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE, MODEL, SOURCE
12
+ from ultralytics.utils import ASSETS, WEIGHTS_DIR
14
13
 
15
14
 
16
15
  def test_checks():
@@ -3,14 +3,13 @@
3
3
  import sys
4
4
  from unittest import mock
5
5
 
6
+ from tests import MODEL
6
7
  from ultralytics import YOLO
7
8
  from ultralytics.cfg import get_cfg
8
9
  from ultralytics.engine.exporter import Exporter
9
10
  from ultralytics.models.yolo import classify, detect, segment
10
11
  from ultralytics.utils import ASSETS, DEFAULT_CFG, WEIGHTS_DIR
11
12
 
12
- from tests import MODEL
13
-
14
13
 
15
14
  def test_func(*args): # noqa
16
15
  """Test function callback."""
@@ -7,6 +7,7 @@ from pathlib import Path
7
7
 
8
8
  import pytest
9
9
 
10
+ from tests import MODEL, SOURCE
10
11
  from ultralytics import YOLO
11
12
  from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
12
13
  from ultralytics.utils import (
@@ -14,11 +15,9 @@ from ultralytics.utils import (
14
15
  LINUX,
15
16
  MACOS,
16
17
  WINDOWS,
17
- Retry,
18
18
  checks,
19
19
  )
20
20
  from ultralytics.utils.torch_utils import TORCH_1_9, TORCH_1_13
21
- from tests import MODEL, SOURCE
22
21
 
23
22
 
24
23
  def test_export_torchscript():
@@ -69,8 +68,7 @@ def test_export_openvino_matrix(task, dynamic, int8, half, batch):
69
68
  file = Path(file)
70
69
  file = file.rename(file.with_stem(f"{file.stem}-{uuid.uuid4()}"))
71
70
  YOLO(file)([SOURCE] * batch, imgsz=64 if dynamic else 32) # exported model inference
72
- with Retry(times=3, delay=1): # retry in case of potential lingering multi-threaded file usage errors
73
- shutil.rmtree(file)
71
+ shutil.rmtree(file, ignore_errors=True) # retry in case of potential lingering multi-threaded file usage errors
74
72
 
75
73
 
76
74
  @pytest.mark.slow
@@ -8,12 +8,11 @@ from pathlib import Path
8
8
 
9
9
  import pytest
10
10
 
11
+ from tests import MODEL, SOURCE, TMP
11
12
  from ultralytics import YOLO, download
12
13
  from ultralytics.utils import DATASETS_DIR, SETTINGS
13
14
  from ultralytics.utils.checks import check_requirements
14
15
 
15
- from tests import MODEL, SOURCE, TMP
16
-
17
16
 
18
17
  @pytest.mark.skipif(not check_requirements("ray", install=False), reason="ray[tune] not installed")
19
18
  def test_model_ray_tune():
@@ -1,6 +1,7 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
3
  import contextlib
4
+ import urllib
4
5
  from copy import copy
5
6
  from pathlib import Path
6
7
 
@@ -11,23 +12,23 @@ import torch
11
12
  import yaml
12
13
  from PIL import Image
13
14
 
15
+ from tests import CFG, IS_TMP_WRITEABLE, MODEL, SOURCE, TMP
14
16
  from ultralytics import RTDETR, YOLO
15
- from ultralytics.cfg import MODELS, TASKS, TASK2DATA
17
+ from ultralytics.cfg import MODELS, TASK2DATA, TASKS
16
18
  from ultralytics.data.build import load_inference_source
17
19
  from ultralytics.utils import (
18
20
  ASSETS,
19
21
  DEFAULT_CFG,
20
22
  DEFAULT_CFG_PATH,
23
+ LOGGER,
21
24
  ONLINE,
22
25
  ROOT,
23
26
  WEIGHTS_DIR,
24
27
  WINDOWS,
25
- Retry,
26
28
  checks,
27
29
  )
28
- from ultralytics.utils.downloads import download, is_url
30
+ from ultralytics.utils.downloads import download
29
31
  from ultralytics.utils.torch_utils import TORCH_1_9
30
- from tests import CFG, IS_TMP_WRITEABLE, MODEL, SOURCE, TMP
31
32
 
32
33
 
33
34
  def test_model_forward():
@@ -130,16 +131,17 @@ def test_predict_grey_and_4ch():
130
131
 
131
132
  @pytest.mark.slow
132
133
  @pytest.mark.skipif(not ONLINE, reason="environment is offline")
133
- @pytest.mark.skipif(not is_url("https://youtu.be/G17sBkb38XQ"), reason="YouTube URL issue")
134
- @Retry(times=3, delay=10)
135
134
  def test_youtube():
136
135
  """
137
136
  Test YouTube inference.
138
137
 
139
- Marked --slow to reduce YouTube API rate limits risk.
138
+ Note: ConnectionError may occur during this test due to network instability or YouTube server availability.
140
139
  """
141
140
  model = YOLO(MODEL)
142
- model.predict("https://youtu.be/G17sBkb38XQ", imgsz=96, save=True)
141
+ try:
142
+ model.predict("https://youtu.be/G17sBkb38XQ", imgsz=96, save=True)
143
+ except urllib.error.HTTPError as e: # handle 'urllib.error.HTTPError: HTTP Error 429: Too Many Requests'
144
+ LOGGER.warning(f"WARNING: YouTube Test Error: {e}")
143
145
 
144
146
 
145
147
  @pytest.mark.skipif(not ONLINE, reason="environment is offline")
@@ -1,11 +1,14 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.2.22"
3
+ __version__ = "8.2.24"
4
+
5
+ import os
6
+
7
+ # Set ENV Variables (place before imports)
8
+ os.environ["OMP_NUM_THREADS"] = "1" # reduce CPU utilization during training
4
9
 
5
10
  from ultralytics.data.explorer.explorer import Explorer
6
- from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld
7
- from ultralytics.models.fastsam import FastSAM
8
- from ultralytics.models.nas import NAS
11
+ from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
9
12
  from ultralytics.utils import ASSETS, SETTINGS
10
13
  from ultralytics.utils.checks import check_yolo as checks
11
14
  from ultralytics.utils.downloads import download
@@ -64,7 +64,7 @@ class Explorer:
64
64
  import lancedb
65
65
 
66
66
  self.connection = lancedb.connect(uri)
67
- self.table_name = Path(data).name.lower() + "_" + model.lower()
67
+ self.table_name = f"{Path(data).name.lower()}_{model.lower()}"
68
68
  self.sim_idx_base_name = (
69
69
  f"{self.table_name}_sim_idx".lower()
70
70
  ) # Use this name and append thres and top_k to reuse the table
@@ -268,10 +268,7 @@ class Explorer:
268
268
  similar = exp.get_similar(img='https://ultralytics.com/images/zidane.jpg')
269
269
  ```
270
270
  """
271
- assert return_type in {
272
- "pandas",
273
- "arrow",
274
- }, f"Return type should be either `pandas` or `arrow`, but got {return_type}"
271
+ assert return_type in {"pandas", "arrow"}, f"Return type should be `pandas` or `arrow`, but got {return_type}"
275
272
  img = self._check_imgs_or_idxs(img, idx)
276
273
  similar = self.query(img, limit=limit)
277
274
 
@@ -197,12 +197,11 @@ def layout():
197
197
  imgs = []
198
198
  if st.session_state.get("error"):
199
199
  st.error(st.session_state["error"])
200
+ elif st.session_state.get("imgs"):
201
+ imgs = st.session_state.get("imgs")
200
202
  else:
201
- if st.session_state.get("imgs"):
202
- imgs = st.session_state.get("imgs")
203
- else:
204
- imgs = exp.table.to_lance().to_table(columns=["im_file"]).to_pydict()["im_file"]
205
- st.session_state["res"] = exp.table.to_arrow()
203
+ imgs = exp.table.to_lance().to_table(columns=["im_file"]).to_pydict()["im_file"]
204
+ st.session_state["res"] = exp.table.to_arrow()
206
205
  total_imgs, selected_imgs = len(imgs), []
207
206
  with col1:
208
207
  subcol1, subcol2, subcol3, subcol4, subcol5 = st.columns(5)
@@ -325,7 +325,7 @@ class LoadImagesAndVideos:
325
325
  paths, imgs, info = [], [], []
326
326
  while len(imgs) < self.bs:
327
327
  if self.count >= self.nf: # end of file list
328
- if len(imgs) > 0:
328
+ if imgs:
329
329
  return paths, imgs, info # return last partial batch
330
330
  else:
331
331
  raise StopIteration
@@ -522,26 +522,43 @@ def autocast_list(source):
522
522
  return files
523
523
 
524
524
 
525
- def get_best_youtube_url(url, use_pafy=True):
525
+ def get_best_youtube_url(url, method="pytube"):
526
526
  """
527
527
  Retrieves the URL of the best quality MP4 video stream from a given YouTube video.
528
528
 
529
- This function uses the pafy or yt_dlp library to extract the video info from YouTube. It then finds the highest
530
- quality MP4 format that has video codec but no audio codec, and returns the URL of this video stream.
529
+ This function uses the specified method to extract the video info from YouTube. It supports the following methods:
530
+ - "pytube": Uses the pytube library to fetch the video streams.
531
+ - "pafy": Uses the pafy library to fetch the video streams.
532
+ - "yt-dlp": Uses the yt-dlp library to fetch the video streams.
533
+
534
+ The function then finds the highest quality MP4 format that has a video codec but no audio codec, and returns the
535
+ URL of this video stream.
531
536
 
532
537
  Args:
533
538
  url (str): The URL of the YouTube video.
534
- use_pafy (bool): Use the pafy package, default=True, otherwise use yt_dlp package.
539
+ method (str): The method to use for extracting video info. Default is "pytube". Other options are "pafy" and
540
+ "yt-dlp".
535
541
 
536
542
  Returns:
537
543
  (str): The URL of the best quality MP4 video stream, or None if no suitable stream is found.
538
544
  """
539
- if use_pafy:
545
+ if method == "pytube":
546
+ check_requirements("pytube")
547
+ from pytube import YouTube
548
+
549
+ streams = YouTube(url).streams.filter(file_extension="mp4", only_video=True)
550
+ streams = sorted(streams, key=lambda s: s.resolution, reverse=True) # sort streams by resolution
551
+ for stream in streams:
552
+ if stream.resolution and int(stream.resolution[:-1]) >= 1080: # check if resolution is at least 1080p
553
+ return stream.url
554
+
555
+ elif method == "pafy":
540
556
  check_requirements(("pafy", "youtube_dl==2020.12.2"))
541
557
  import pafy # noqa
542
558
 
543
559
  return pafy.new(url).getbestvideo(preftype="mp4").url
544
- else:
560
+
561
+ elif method == "yt-dlp":
545
562
  check_requirements("yt-dlp")
546
563
  import yt_dlp
547
564
 
@@ -35,7 +35,7 @@ from ultralytics.utils.checks import check_file, check_font, is_ascii
35
35
  from ultralytics.utils.downloads import download, safe_download, unzip_file
36
36
  from ultralytics.utils.ops import segments2boxes
37
37
 
38
- HELP_URL = "See https://docs.ultralytics.com/datasets/detect for dataset formatting guidance."
38
+ HELP_URL = "See https://docs.ultralytics.com/datasets for dataset formatting guidance."
39
39
  IMG_FORMATS = {"bmp", "dng", "jpeg", "jpg", "mpo", "png", "tif", "tiff", "webp", "pfm"} # image suffixes
40
40
  VID_FORMATS = {"asf", "avi", "gif", "m4v", "mkv", "mov", "mp4", "mpeg", "mpg", "ts", "wmv", "webm"} # video suffixes
41
41
  PIN_MEMORY = str(os.getenv("PIN_MEMORY", True)).lower() == "true" # global pin_memory for dataloaders
@@ -0,0 +1,9 @@
1
+ # Ultralytics YOLO 🚀, AGPL-3.0 license
2
+
3
+ from .fastsam import FastSAM
4
+ from .nas import NAS
5
+ from .rtdetr import RTDETR
6
+ from .sam import SAM
7
+ from .yolo import YOLO, YOLOWorld
8
+
9
+ __all__ = "YOLO", "RTDETR", "SAM", "FastSAM", "NAS", "YOLOWorld" # allow simpler import
@@ -33,7 +33,7 @@ class Analytics:
33
33
 
34
34
  Args:
35
35
  type (str): Type of chart to initialize ('line', 'bar', or 'pie').
36
- writer: Video writer object to save the frames.
36
+ writer (object): Video writer object to save the frames.
37
37
  im0_shape (tuple): Shape of the input image (width, height).
38
38
  title (str): Title of the chart.
39
39
  x_label (str): Label for the x-axis.
@@ -64,7 +64,7 @@ class Analytics:
64
64
  self.ax = fig.add_subplot(111, facecolor=self.bg_color)
65
65
  (self.line,) = self.ax.plot([], [], color=line_color, linewidth=line_width)
66
66
 
67
- elif type == "bar" or type == "pie":
67
+ elif type in {"bar", "pie"}:
68
68
  # Initialize bar or pie plot
69
69
  self.fig, self.ax = plt.subplots(figsize=figsize, facecolor=self.bg_color)
70
70
  self.ax.set_facecolor(self.bg_color)
@@ -806,8 +806,8 @@ class Retry(contextlib.ContextDecorator):
806
806
  """
807
807
  Retry class for function execution with exponential backoff.
808
808
 
809
- Can be used as a decorator or a context manager to retry a function or block of code on exceptions, up to a
810
- specified number of times with an exponentially increasing delay between retries.
809
+ Can be used as a decorator to retry a function on exceptions, up to a specified number of times with an
810
+ exponentially increasing delay between retries.
811
811
 
812
812
  Examples:
813
813
  Example usage as a decorator:
@@ -815,11 +815,6 @@ class Retry(contextlib.ContextDecorator):
815
815
  >>> def test_func():
816
816
  >>> # Replace with function logic that may raise exceptions
817
817
  >>> return True
818
-
819
- Example usage as a context manager:
820
- >>> with Retry(times=3, delay=2):
821
- >>> # Replace with code block that may raise exceptions
822
- >>> pass
823
818
  """
824
819
 
825
820
  def __init__(self, times=3, delay=2):
@@ -846,20 +841,6 @@ class Retry(contextlib.ContextDecorator):
846
841
 
847
842
  return wrapped_func
848
843
 
849
- def __enter__(self):
850
- """Enter the runtime context related to this object."""
851
- self._attempts = 0
852
-
853
- def __exit__(self, exc_type, exc_value, traceback):
854
- """Exit the runtime context related to this object with exponential backoff."""
855
- if exc_type is not None:
856
- self._attempts += 1
857
- if self._attempts < self.times:
858
- print(f"Retry {self._attempts}/{self.times} failed: {exc_value}")
859
- time.sleep(self.delay * (2**self._attempts)) # exponential backoff delay
860
- return True # Suppresses the exception and retries
861
- return False # Re-raises the exception if retries are exhausted
862
-
863
844
 
864
845
  def threaded(func):
865
846
  """
@@ -33,7 +33,6 @@ from ultralytics.utils import (
33
33
  ROOT,
34
34
  TORCHVISION_VERSION,
35
35
  USER_CONFIG_DIR,
36
- Retry,
37
36
  SimpleNamespace,
38
37
  ThreadingLocked,
39
38
  TryExcept,
@@ -390,8 +389,7 @@ def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=()
390
389
  try:
391
390
  t = time.time()
392
391
  assert ONLINE, "AutoUpdate skipped (offline)"
393
- with Retry(times=2, delay=1): # run up to 2 times with 1-second retry delay
394
- LOGGER.info(subprocess.check_output(f"pip install --no-cache-dir {s} {cmds}", shell=True).decode())
392
+ LOGGER.info(subprocess.check_output(f"pip install --no-cache-dir {s} {cmds}", shell=True).decode())
395
393
  dt = time.time() - t
396
394
  LOGGER.info(
397
395
  f"{prefix} AutoUpdate success ✅ {dt:.1f}s, installed {n} package{'s' * (n > 1)}: {pkgs}\n"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.22
3
+ Version: 8.2.24
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
@@ -135,7 +135,7 @@ See below for a quickstart installation and usage example, and see the [YOLOv8 D
135
135
 
136
136
  Pip 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/).
137
137
 
138
- [![PyPI version](https://badge.fury.io/py/ultralytics.svg)](https://badge.fury.io/py/ultralytics) [![Downloads](https://static.pepy.tech/badge/ultralytics)](https://pepy.tech/project/ultralytics)
138
+ [![PyPI - Version](https://img.shields.io/pypi/v/ultralytics?logo=pypi&logoColor=white)](https://pypi.org/project/ultralytics/) [![Downloads](https://static.pepy.tech/badge/ultralytics)](https://pepy.tech/project/ultralytics) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ultralytics?logo=python&logoColor=gold)](https://pypi.org/project/ultralytics/)
139
139
 
140
140
  ```bash
141
141
  pip install ultralytics
@@ -143,6 +143,8 @@ pip install ultralytics
143
143
 
144
144
  For alternative installation methods including [Conda](https://anaconda.org/conda-forge/ultralytics), [Docker](https://hub.docker.com/r/ultralytics/ultralytics), and Git, please refer to the [Quickstart Guide](https://docs.ultralytics.com/quickstart).
145
145
 
146
+ [![Conda Version](https://img.shields.io/conda/vn/conda-forge/ultralytics?logo=condaforge)](https://anaconda.org/conda-forge/ultralytics) [![Docker Image Version](https://img.shields.io/docker/v/ultralytics/ultralytics?sort=semver&logo=docker)](https://hub.docker.com/r/ultralytics/ultralytics)
147
+
146
148
  </details>
147
149
 
148
150
  <details open>
@@ -1,7 +0,0 @@
1
- # Ultralytics YOLO 🚀, AGPL-3.0 license
2
-
3
- from .rtdetr import RTDETR
4
- from .sam import SAM
5
- from .yolo import YOLO, YOLOWorld
6
-
7
- __all__ = "YOLO", "RTDETR", "SAM", "YOLOWorld" # allow simpler import
File without changes
File without changes