ultralytics 8.2.51__tar.gz → 8.2.53__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 (233) hide show
  1. {ultralytics-8.2.51/ultralytics.egg-info → ultralytics-8.2.53}/PKG-INFO +1 -1
  2. {ultralytics-8.2.51 → ultralytics-8.2.53}/tests/test_python.py +3 -3
  3. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/__init__.py +1 -1
  4. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/DOTAv1.5.yaml +1 -1
  5. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/DOTAv1.yaml +1 -1
  6. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +1 -1
  7. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/VOC.yaml +1 -1
  8. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/VisDrone.yaml +4 -4
  9. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/african-wildlife.yaml +1 -1
  10. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/brain-tumor.yaml +1 -1
  11. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/carparts-seg.yaml +1 -1
  12. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/coco-pose.yaml +1 -1
  13. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/coco.yaml +1 -1
  14. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/coco128-seg.yaml +1 -1
  15. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/coco128.yaml +1 -1
  16. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/coco8-pose.yaml +1 -1
  17. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/coco8-seg.yaml +1 -1
  18. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/coco8.yaml +1 -1
  19. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/crack-seg.yaml +1 -1
  20. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/dota8.yaml +1 -1
  21. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/lvis.yaml +1 -1
  22. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/package-seg.yaml +1 -1
  23. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/signature.yaml +1 -1
  24. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/tiger-pose.yaml +1 -1
  25. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/augment.py +2 -0
  26. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/dataset.py +9 -5
  27. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/utils.py +1 -1
  28. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/engine/exporter.py +1 -1
  29. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/engine/trainer.py +1 -1
  30. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/nn/tasks.py +1 -1
  31. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/solutions/heatmap.py +9 -8
  32. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/benchmarks.py +1 -1
  33. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/checks.py +1 -1
  34. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/downloads.py +10 -6
  35. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/plotting.py +3 -3
  36. {ultralytics-8.2.51 → ultralytics-8.2.53/ultralytics.egg-info}/PKG-INFO +1 -1
  37. {ultralytics-8.2.51 → ultralytics-8.2.53}/LICENSE +0 -0
  38. {ultralytics-8.2.51 → ultralytics-8.2.53}/README.md +0 -0
  39. {ultralytics-8.2.51 → ultralytics-8.2.53}/pyproject.toml +0 -0
  40. {ultralytics-8.2.51 → ultralytics-8.2.53}/setup.cfg +0 -0
  41. {ultralytics-8.2.51 → ultralytics-8.2.53}/tests/__init__.py +0 -0
  42. {ultralytics-8.2.51 → ultralytics-8.2.53}/tests/conftest.py +0 -0
  43. {ultralytics-8.2.51 → ultralytics-8.2.53}/tests/test_cli.py +0 -0
  44. {ultralytics-8.2.51 → ultralytics-8.2.53}/tests/test_cuda.py +0 -0
  45. {ultralytics-8.2.51 → ultralytics-8.2.53}/tests/test_engine.py +0 -0
  46. {ultralytics-8.2.51 → ultralytics-8.2.53}/tests/test_explorer.py +0 -0
  47. {ultralytics-8.2.51 → ultralytics-8.2.53}/tests/test_exports.py +0 -0
  48. {ultralytics-8.2.51 → ultralytics-8.2.53}/tests/test_integrations.py +0 -0
  49. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/assets/bus.jpg +0 -0
  50. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/assets/zidane.jpg +0 -0
  51. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/__init__.py +0 -0
  52. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  53. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  54. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  55. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  56. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  57. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/datasets/xView.yaml +0 -0
  58. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/default.yaml +0 -0
  59. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  60. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  61. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  62. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  63. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  64. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  65. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  66. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  67. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  68. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  69. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  70. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  71. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  72. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  73. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  74. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  75. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  76. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  77. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  78. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  79. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  80. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  81. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  82. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  83. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  84. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  85. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  86. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  87. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  88. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  89. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  90. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  91. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  92. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  93. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  94. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  95. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  96. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  97. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  98. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  99. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  100. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  101. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/__init__.py +0 -0
  102. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/annotator.py +0 -0
  103. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/base.py +0 -0
  104. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/build.py +0 -0
  105. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/converter.py +0 -0
  106. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/explorer/__init__.py +0 -0
  107. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/explorer/explorer.py +0 -0
  108. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/explorer/gui/__init__.py +0 -0
  109. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/explorer/gui/dash.py +0 -0
  110. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/explorer/utils.py +0 -0
  111. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/loaders.py +0 -0
  112. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/data/split_dota.py +0 -0
  113. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/engine/__init__.py +0 -0
  114. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/engine/model.py +0 -0
  115. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/engine/predictor.py +0 -0
  116. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/engine/results.py +0 -0
  117. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/engine/tuner.py +0 -0
  118. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/engine/validator.py +0 -0
  119. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/hub/__init__.py +0 -0
  120. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/hub/auth.py +0 -0
  121. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/hub/session.py +0 -0
  122. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/hub/utils.py +0 -0
  123. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/__init__.py +0 -0
  124. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/fastsam/__init__.py +0 -0
  125. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/fastsam/model.py +0 -0
  126. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/fastsam/predict.py +0 -0
  127. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/fastsam/prompt.py +0 -0
  128. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/fastsam/utils.py +0 -0
  129. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/fastsam/val.py +0 -0
  130. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/nas/__init__.py +0 -0
  131. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/nas/model.py +0 -0
  132. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/nas/predict.py +0 -0
  133. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/nas/val.py +0 -0
  134. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/rtdetr/__init__.py +0 -0
  135. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/rtdetr/model.py +0 -0
  136. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/rtdetr/predict.py +0 -0
  137. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/rtdetr/train.py +0 -0
  138. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/rtdetr/val.py +0 -0
  139. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/__init__.py +0 -0
  140. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/amg.py +0 -0
  141. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/build.py +0 -0
  142. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/model.py +0 -0
  143. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/modules/__init__.py +0 -0
  144. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/modules/decoders.py +0 -0
  145. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/modules/encoders.py +0 -0
  146. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/modules/sam.py +0 -0
  147. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  148. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/modules/transformer.py +0 -0
  149. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/sam/predict.py +0 -0
  150. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/utils/__init__.py +0 -0
  151. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/utils/loss.py +0 -0
  152. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/utils/ops.py +0 -0
  153. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/__init__.py +0 -0
  154. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/classify/__init__.py +0 -0
  155. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/classify/predict.py +0 -0
  156. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/classify/train.py +0 -0
  157. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/classify/val.py +0 -0
  158. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/detect/__init__.py +0 -0
  159. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/detect/predict.py +0 -0
  160. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/detect/train.py +0 -0
  161. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/detect/val.py +0 -0
  162. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/model.py +0 -0
  163. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/obb/__init__.py +0 -0
  164. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/obb/predict.py +0 -0
  165. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/obb/train.py +0 -0
  166. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/obb/val.py +0 -0
  167. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/pose/__init__.py +0 -0
  168. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/pose/predict.py +0 -0
  169. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/pose/train.py +0 -0
  170. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/pose/val.py +0 -0
  171. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/segment/__init__.py +0 -0
  172. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/segment/predict.py +0 -0
  173. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/segment/train.py +0 -0
  174. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/segment/val.py +0 -0
  175. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/world/__init__.py +0 -0
  176. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/world/train.py +0 -0
  177. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/models/yolo/world/train_world.py +0 -0
  178. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/nn/__init__.py +0 -0
  179. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/nn/autobackend.py +0 -0
  180. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/nn/modules/__init__.py +0 -0
  181. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/nn/modules/block.py +0 -0
  182. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/nn/modules/conv.py +0 -0
  183. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/nn/modules/head.py +0 -0
  184. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/nn/modules/transformer.py +0 -0
  185. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/nn/modules/utils.py +0 -0
  186. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/solutions/__init__.py +0 -0
  187. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/solutions/ai_gym.py +0 -0
  188. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/solutions/analytics.py +0 -0
  189. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/solutions/distance_calculation.py +0 -0
  190. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/solutions/object_counter.py +0 -0
  191. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/solutions/parking_management.py +0 -0
  192. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/solutions/queue_management.py +0 -0
  193. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/solutions/speed_estimation.py +0 -0
  194. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/solutions/streamlit_inference.py +0 -0
  195. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/trackers/__init__.py +0 -0
  196. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/trackers/basetrack.py +0 -0
  197. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/trackers/bot_sort.py +0 -0
  198. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/trackers/byte_tracker.py +0 -0
  199. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/trackers/track.py +0 -0
  200. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/trackers/utils/__init__.py +0 -0
  201. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/trackers/utils/gmc.py +0 -0
  202. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  203. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/trackers/utils/matching.py +0 -0
  204. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/__init__.py +0 -0
  205. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/autobatch.py +0 -0
  206. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/__init__.py +0 -0
  207. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/base.py +0 -0
  208. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/clearml.py +0 -0
  209. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/comet.py +0 -0
  210. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/dvc.py +0 -0
  211. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/hub.py +0 -0
  212. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/mlflow.py +0 -0
  213. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/neptune.py +0 -0
  214. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/raytune.py +0 -0
  215. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  216. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/callbacks/wb.py +0 -0
  217. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/dist.py +0 -0
  218. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/errors.py +0 -0
  219. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/files.py +0 -0
  220. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/instance.py +0 -0
  221. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/loss.py +0 -0
  222. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/metrics.py +0 -0
  223. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/ops.py +0 -0
  224. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/patches.py +0 -0
  225. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/tal.py +0 -0
  226. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/torch_utils.py +0 -0
  227. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/triton.py +0 -0
  228. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics/utils/tuner.py +0 -0
  229. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics.egg-info/SOURCES.txt +0 -0
  230. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics.egg-info/dependency_links.txt +0 -0
  231. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics.egg-info/entry_points.txt +0 -0
  232. {ultralytics-8.2.51 → ultralytics-8.2.53}/ultralytics.egg-info/requires.txt +0 -0
  233. {ultralytics-8.2.51 → ultralytics-8.2.53}/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.51
3
+ Version: 8.2.53
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
@@ -90,7 +90,7 @@ def test_predict_img(model_name):
90
90
  batch = [
91
91
  str(SOURCE), # filename
92
92
  Path(SOURCE), # Path
93
- "https://ultralytics.com/images/zidane.jpg" if ONLINE else SOURCE, # URI
93
+ "https://github.com/ultralytics/assets/releases/download/v0.0.0/zidane.jpg" if ONLINE else SOURCE, # URI
94
94
  cv2.imread(str(SOURCE)), # OpenCV
95
95
  Image.open(SOURCE), # PIL
96
96
  np.zeros((320, 640, 3), dtype=np.uint8), # numpy
@@ -149,7 +149,7 @@ def test_track_stream():
149
149
 
150
150
  Note imgsz=160 required for tracking for higher confidence and better matches.
151
151
  """
152
- video_url = "https://ultralytics.com/assets/decelera_portrait_min.mov"
152
+ video_url = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
153
153
  model = YOLO(MODEL)
154
154
  model.track(video_url, imgsz=160, tracker="bytetrack.yaml")
155
155
  model.track(video_url, imgsz=160, tracker="botsort.yaml", save_frames=True) # test frame saving also
@@ -290,7 +290,7 @@ def test_data_converter():
290
290
  from ultralytics.data.converter import coco80_to_coco91_class, convert_coco
291
291
 
292
292
  file = "instances_val2017.json"
293
- download(f"https://github.com/ultralytics/yolov5/releases/download/v1.0/{file}", dir=TMP)
293
+ download(f"https://github.com/ultralytics/assets/releases/download/v0.0.0/{file}", dir=TMP)
294
294
  convert_coco(labels_dir=TMP, save_dir=TMP / "yolo_labels", use_segments=True, use_keypoints=False, cls91to80=True)
295
295
  coco80_to_coco91_class()
296
296
 
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.2.51"
3
+ __version__ = "8.2.53"
4
4
 
5
5
  import os
6
6
 
@@ -33,4 +33,4 @@ names:
33
33
  15: container crane
34
34
 
35
35
  # Download script/URL (optional)
36
- download: https://github.com/ultralytics/yolov5/releases/download/v1.0/DOTAv1.5.zip
36
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/DOTAv1.5.zip
@@ -32,4 +32,4 @@ names:
32
32
  14: swimming pool
33
33
 
34
34
  # Download script/URL (optional)
35
- download: https://github.com/ultralytics/yolov5/releases/download/v1.0/DOTAv1.zip
35
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/DOTAv1.zip
@@ -37,7 +37,7 @@ download: |
37
37
  # Download
38
38
  dir = Path(yaml['path']) # dataset root dir
39
39
  urls = ['https://zenodo.org/record/4298502/files/global-wheat-codalab-official.zip',
40
- 'https://github.com/ultralytics/yolov5/releases/download/v1.0/GlobalWheat2020_labels.zip']
40
+ 'https://github.com/ultralytics/assets/releases/download/v0.0.0/GlobalWheat2020_labels.zip']
41
41
  download(urls, dir=dir)
42
42
 
43
43
  # Make Directories
@@ -76,7 +76,7 @@ download: |
76
76
 
77
77
  # Download
78
78
  dir = Path(yaml['path']) # dataset root dir
79
- url = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/'
79
+ url = 'https://github.com/ultralytics/assets/releases/download/v0.0.0/'
80
80
  urls = [f'{url}VOCtrainval_06-Nov-2007.zip', # 446MB, 5012 images
81
81
  f'{url}VOCtest_06-Nov-2007.zip', # 438MB, 4953 images
82
82
  f'{url}VOCtrainval_11-May-2012.zip'] # 1.95GB, 17126 images
@@ -61,10 +61,10 @@ download: |
61
61
 
62
62
  # Download
63
63
  dir = Path(yaml['path']) # dataset root dir
64
- urls = ['https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-train.zip',
65
- 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-val.zip',
66
- 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-dev.zip',
67
- 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-challenge.zip']
64
+ urls = ['https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-train.zip',
65
+ 'https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-val.zip',
66
+ 'https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-dev.zip',
67
+ 'https://github.com/ultralytics/assets/releases/download/v0.0.0/VisDrone2019-DET-test-challenge.zip']
68
68
  download(urls, dir=dir, curl=True, threads=4)
69
69
 
70
70
  # Convert
@@ -21,4 +21,4 @@ names:
21
21
  3: zebra
22
22
 
23
23
  # Download script/URL (optional)
24
- download: https://ultralytics.com/assets/african-wildlife.zip
24
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/african-wildlife.zip
@@ -19,4 +19,4 @@ names:
19
19
  1: positive
20
20
 
21
21
  # Download script/URL (optional)
22
- download: https://ultralytics.com/assets/brain-tumor.zip
22
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/brain-tumor.zip
@@ -40,4 +40,4 @@ names:
40
40
  22: wheel
41
41
 
42
42
  # Download script/URL (optional)
43
- download: https://ultralytics.com/assets/carparts-seg.zip
43
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/carparts-seg.zip
@@ -28,7 +28,7 @@ download: |
28
28
 
29
29
  # Download labels
30
30
  dir = Path(yaml['path']) # dataset root dir
31
- url = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/'
31
+ url = 'https://github.com/ultralytics/assets/releases/download/v0.0.0/'
32
32
  urls = [url + 'coco2017labels-pose.zip'] # labels
33
33
  download(urls, dir=dir.parent)
34
34
  # Download data
@@ -104,7 +104,7 @@ download: |
104
104
  # Download labels
105
105
  segments = True # segment or box labels
106
106
  dir = Path(yaml['path']) # dataset root dir
107
- url = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/'
107
+ url = 'https://github.com/ultralytics/assets/releases/download/v0.0.0/'
108
108
  urls = [url + ('coco2017labels-segments.zip' if segments else 'coco2017labels.zip')] # labels
109
109
  download(urls, dir=dir.parent)
110
110
  # Download data
@@ -97,4 +97,4 @@ names:
97
97
  79: toothbrush
98
98
 
99
99
  # Download script/URL (optional)
100
- download: https://ultralytics.com/assets/coco128-seg.zip
100
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128-seg.zip
@@ -97,4 +97,4 @@ names:
97
97
  79: toothbrush
98
98
 
99
99
  # Download script/URL (optional)
100
- download: https://ultralytics.com/assets/coco128.zip
100
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128.zip
@@ -22,4 +22,4 @@ names:
22
22
  0: person
23
23
 
24
24
  # Download script/URL (optional)
25
- download: https://ultralytics.com/assets/coco8-pose.zip
25
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
@@ -97,4 +97,4 @@ names:
97
97
  79: toothbrush
98
98
 
99
99
  # Download script/URL (optional)
100
- download: https://ultralytics.com/assets/coco8-seg.zip
100
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip
@@ -97,4 +97,4 @@ names:
97
97
  79: toothbrush
98
98
 
99
99
  # Download script/URL (optional)
100
- download: https://ultralytics.com/assets/coco8.zip
100
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip
@@ -18,4 +18,4 @@ names:
18
18
  0: crack
19
19
 
20
20
  # Download script/URL (optional)
21
- download: https://ultralytics.com/assets/crack-seg.zip
21
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/crack-seg.zip
@@ -31,4 +31,4 @@ names:
31
31
  14: swimming pool
32
32
 
33
33
  # Download script/URL (optional)
34
- download: https://github.com/ultralytics/yolov5/releases/download/v1.0/dota8.zip
34
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8.zip
@@ -1225,7 +1225,7 @@ download: |
1225
1225
 
1226
1226
  # Download labels
1227
1227
  dir = Path(yaml['path']) # dataset root dir
1228
- url = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/'
1228
+ url = 'https://github.com/ultralytics/assets/releases/download/v0.0.0/'
1229
1229
  urls = [url + 'lvis-labels-segments.zip'] # labels
1230
1230
  download(urls, dir=dir.parent)
1231
1231
  # Download data
@@ -18,4 +18,4 @@ names:
18
18
  0: package
19
19
 
20
20
  # Download script/URL (optional)
21
- download: https://ultralytics.com/assets/package-seg.zip
21
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/package-seg.zip
@@ -17,4 +17,4 @@ names:
17
17
  0: signature
18
18
 
19
19
  # Download script/URL (optional)
20
- download: https://ultralytics.com/assets/signature.zip
20
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/signature.zip
@@ -21,4 +21,4 @@ names:
21
21
  0: tiger
22
22
 
23
23
  # Download script/URL (optional)
24
- download: https://ultralytics.com/assets/tiger-pose.zip
24
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/tiger-pose.zip
@@ -1401,6 +1401,8 @@ class CenterCrop:
1401
1401
  Returns:
1402
1402
  (numpy.ndarray): The center-cropped and resized image as a numpy array.
1403
1403
  """
1404
+ if isinstance(im, Image.Image): # convert from PIL to numpy array if required
1405
+ im = np.asarray(im)
1404
1406
  imh, imw = im.shape[:2]
1405
1407
  m = min(imh, imw) # min dimension
1406
1408
  top, left = (imh - m) // 2, (imw - m) // 2
@@ -15,6 +15,7 @@ from torch.utils.data import ConcatDataset
15
15
 
16
16
  from ultralytics.utils import LOCAL_RANK, NUM_THREADS, TQDM, colorstr
17
17
  from ultralytics.utils.ops import resample_segments
18
+ from ultralytics.utils.torch_utils import TORCH_1_13
18
19
 
19
20
  from .augment import (
20
21
  Compose,
@@ -263,7 +264,7 @@ class YOLOMultiModalDataset(YOLODataset):
263
264
  super().__init__(*args, data=data, task=task, **kwargs)
264
265
 
265
266
  def update_labels_info(self, label):
266
- """Add texts information for multi modal model training."""
267
+ """Add texts information for multi-modal model training."""
267
268
  labels = super().update_labels_info(label)
268
269
  # NOTE: some categories are concatenated with its synonyms by `/`.
269
270
  labels["texts"] = [v.split("/") for _, v in self.data["names"].items()]
@@ -296,10 +297,10 @@ class GroundingDataset(YOLODataset):
296
297
  with open(self.json_file, "r") as f:
297
298
  annotations = json.load(f)
298
299
  images = {f'{x["id"]:d}': x for x in annotations["images"]}
299
- imgToAnns = defaultdict(list)
300
+ img_to_anns = defaultdict(list)
300
301
  for ann in annotations["annotations"]:
301
- imgToAnns[ann["image_id"]].append(ann)
302
- for img_id, anns in TQDM(imgToAnns.items(), desc=f"Reading annotations {self.json_file}"):
302
+ img_to_anns[ann["image_id"]].append(ann)
303
+ for img_id, anns in TQDM(img_to_anns.items(), desc=f"Reading annotations {self.json_file}"):
303
304
  img = images[f"{img_id:d}"]
304
305
  h, w, f = img["height"], img["width"], img["file_name"]
305
306
  im_file = Path(self.img_path) / f
@@ -416,7 +417,10 @@ class ClassificationDataset:
416
417
  import torchvision # scope for faster 'import ultralytics'
417
418
 
418
419
  # Base class assigned as attribute rather than used as base class to allow for scoping slow torchvision import
419
- self.base = torchvision.datasets.ImageFolder(root=root)
420
+ if TORCH_1_13: # 'allow_empty' argument first introduced in torch 1.13
421
+ self.base = torchvision.datasets.ImageFolder(root=root, allow_empty=True)
422
+ else:
423
+ self.base = torchvision.datasets.ImageFolder(root=root)
420
424
  self.samples = self.base.samples
421
425
  self.root = self.base.root
422
426
 
@@ -379,7 +379,7 @@ def check_cls_dataset(dataset, split=""):
379
379
  if str(dataset) == "imagenet":
380
380
  subprocess.run(f"bash {ROOT / 'data/scripts/get_imagenet.sh'}", shell=True, check=True)
381
381
  else:
382
- url = f"https://github.com/ultralytics/yolov5/releases/download/v1.0/{dataset}.zip"
382
+ url = f"https://github.com/ultralytics/assets/releases/download/v0.0.0/{dataset}.zip"
383
383
  download(url, dir=data_dir.parent)
384
384
  s = f"Dataset download success ✅ ({time.time() - t:.1f}s), saved to {colorstr('bold', data_dir)}\n"
385
385
  LOGGER.info(s)
@@ -454,7 +454,7 @@ class Exporter:
454
454
  LOGGER.info(f"\n{prefix} starting export with openvino {ov.__version__}...")
455
455
  assert TORCH_1_13, f"OpenVINO export requires torch>=1.13.0 but torch=={torch.__version__} is installed"
456
456
  ov_model = ov.convert_model(
457
- self.model.cpu(),
457
+ self.model,
458
458
  input=None if self.args.dynamic else [self.im.shape],
459
459
  example_input=self.im,
460
460
  )
@@ -266,7 +266,7 @@ class BaseTrainer:
266
266
  self.amp = bool(self.amp) # as boolean
267
267
  self.scaler = torch.cuda.amp.GradScaler(enabled=self.amp)
268
268
  if world_size > 1:
269
- self.model = nn.parallel.DistributedDataParallel(self.model, device_ids=[RANK])
269
+ self.model = nn.parallel.DistributedDataParallel(self.model, device_ids=[RANK], find_unused_parameters=True)
270
270
 
271
271
  # Check imgsz
272
272
  gs = max(int(self.model.stride.max() if hasattr(self.model, "stride") else 32), 32) # grid size (max stride)
@@ -379,7 +379,7 @@ class DetectionModel(BaseModel):
379
379
 
380
380
  def init_criterion(self):
381
381
  """Initialize the loss criterion for the DetectionModel."""
382
- return E2EDetectLoss(self) if self.end2end else v8DetectionLoss(self)
382
+ return E2EDetectLoss(self) if getattr(self, "end2end", False) else v8DetectionLoss(self)
383
383
 
384
384
 
385
385
  class OBBModel(DetectionModel):
@@ -60,9 +60,9 @@ class Heatmap:
60
60
  self.heatmap_alpha = heatmap_alpha
61
61
 
62
62
  # Predict/track information
63
- self.boxes = None
64
- self.track_ids = None
65
- self.clss = None
63
+ self.boxes = []
64
+ self.track_ids = []
65
+ self.clss = []
66
66
  self.track_history = defaultdict(list)
67
67
 
68
68
  # Region & Line Information
@@ -107,16 +107,17 @@ class Heatmap:
107
107
  print("Using Circular shape now")
108
108
  self.shape = "circle"
109
109
 
110
- def extract_results(self, tracks, _intialized=False):
110
+ def extract_results(self, tracks):
111
111
  """
112
112
  Extracts results from the provided data.
113
113
 
114
114
  Args:
115
115
  tracks (list): List of tracks obtained from the object tracking process.
116
116
  """
117
- self.boxes = tracks[0].boxes.xyxy.cpu()
118
- self.clss = tracks[0].boxes.cls.cpu().tolist()
119
- self.track_ids = tracks[0].boxes.id.int().cpu().tolist()
117
+ if tracks[0].boxes.id is not None:
118
+ self.boxes = tracks[0].boxes.xyxy.cpu()
119
+ self.clss = tracks[0].boxes.cls.tolist()
120
+ self.track_ids = tracks[0].boxes.id.int().tolist()
120
121
 
121
122
  def generate_heatmap(self, im0, tracks):
122
123
  """
@@ -138,7 +139,7 @@ class Heatmap:
138
139
  self.extract_results(tracks)
139
140
  self.annotator = Annotator(self.im0, self.tf, None)
140
141
 
141
- if self.track_ids is not None:
142
+ if self.track_ids:
142
143
  # Draw counting region
143
144
  if self.count_reg_pts is not None:
144
145
  self.annotator.draw_region(
@@ -195,7 +195,7 @@ class RF100Benchmark:
195
195
  (shutil.rmtree("rf-100"), os.mkdir("rf-100")) if os.path.exists("rf-100") else os.mkdir("rf-100")
196
196
  os.chdir("rf-100")
197
197
  os.mkdir("ultralytics-benchmarks")
198
- safe_download("https://ultralytics.com/assets/datasets_links.txt")
198
+ safe_download("https://github.com/ultralytics/assets/releases/download/v0.0.0/datasets_links.txt")
199
199
 
200
200
  with open(ds_link_txt, "r") as file:
201
201
  for line in file:
@@ -315,7 +315,7 @@ def check_font(font="Arial.ttf"):
315
315
  return matches[0]
316
316
 
317
317
  # Download to USER_CONFIG_DIR if missing
318
- url = f"https://ultralytics.com/assets/{name}"
318
+ url = f"https://github.com/ultralytics/assets/releases/download/v0.0.0/{name}"
319
319
  if downloads.is_url(url, check=True):
320
320
  downloads.safe_download(url=url, file=file)
321
321
  return file
@@ -194,12 +194,12 @@ def unzip_file(file, path=None, exclude=(".DS_Store", "__MACOSX"), exist_ok=Fals
194
194
  return path # return unzip dir
195
195
 
196
196
 
197
- def check_disk_space(url="https://ultralytics.com/assets/coco128.zip", path=Path.cwd(), sf=1.5, hard=True):
197
+ def check_disk_space(url="https://ultralytics.com/assets/coco8.zip", path=Path.cwd(), sf=1.5, hard=True):
198
198
  """
199
199
  Check if there is sufficient disk space to download and store a file.
200
200
 
201
201
  Args:
202
- url (str, optional): The URL to the file. Defaults to 'https://ultralytics.com/assets/coco128.zip'.
202
+ url (str, optional): The URL to the file. Defaults to 'https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip'.
203
203
  path (str | Path, optional): The path or drive to check the available free space on.
204
204
  sf (float, optional): Safety factor, the multiplier for the required free space. Defaults to 2.0.
205
205
  hard (bool, optional): Whether to throw an error or not on insufficient disk space. Defaults to True.
@@ -320,7 +320,11 @@ def safe_download(
320
320
  if "://" not in str(url) and Path(url).is_file(): # URL exists ('://' check required in Windows Python<3.10)
321
321
  f = Path(url) # filename
322
322
  elif not f.is_file(): # URL and file do not exist
323
- desc = f"Downloading {url if gdrive else clean_url(url)} to '{f}'"
323
+ uri = (url if gdrive else clean_url(url)).replace( # cleaned and aliased url
324
+ "https://github.com/ultralytics/assets/releases/download/v0.0.0/",
325
+ "https://ultralytics.com/assets/", # assets alias
326
+ )
327
+ desc = f"Downloading {uri} to '{f}'"
324
328
  LOGGER.info(f"{desc}...")
325
329
  f.parent.mkdir(parents=True, exist_ok=True) # make directory if missing
326
330
  check_disk_space(url, path=f.parent)
@@ -354,10 +358,10 @@ def safe_download(
354
358
  f.unlink() # remove partial downloads
355
359
  except Exception as e:
356
360
  if i == 0 and not is_online():
357
- raise ConnectionError(emojis(f"❌ Download failure for {url}. Environment is not online.")) from e
361
+ raise ConnectionError(emojis(f"❌ Download failure for {uri}. Environment is not online.")) from e
358
362
  elif i >= retry:
359
- raise ConnectionError(emojis(f"❌ Download failure for {url}. Retry limit reached.")) from e
360
- LOGGER.warning(f"⚠️ Download failure, retrying {i + 1}/{retry} {url}...")
363
+ raise ConnectionError(emojis(f"❌ Download failure for {uri}. Retry limit reached.")) from e
364
+ LOGGER.warning(f"⚠️ Download failure, retrying {i + 1}/{retry} {uri}...")
361
365
 
362
366
  if unzip and f.exists() and f.suffix in {"", ".zip", ".tar", ".gz"}:
363
367
  from zipfile import is_zipfile
@@ -298,8 +298,8 @@ class Annotator:
298
298
  if label:
299
299
  w, h = self.font.getsize(label) # text width, height
300
300
  outside = p1[1] >= h # label fits outside box
301
- if p1[0] > self.im.size[1] - w: # check if label extend beyond right side of image
302
- p1 = self.im.size[1] - w, p1[1]
301
+ if p1[0] > self.im.size[0] - w: # size is (w, h), check if label extend beyond right side of image
302
+ p1 = self.im.size[0] - w, p1[1]
303
303
  self.draw.rectangle(
304
304
  (p1[0], p1[1] - h if outside else p1[1], p1[0] + w + 1, p1[1] + 1 if outside else p1[1] + h + 1),
305
305
  fill=color,
@@ -317,7 +317,7 @@ class Annotator:
317
317
  w, h = cv2.getTextSize(label, 0, fontScale=self.sf, thickness=self.tf)[0] # text width, height
318
318
  h += 3 # add pixels to pad text
319
319
  outside = p1[1] >= h # label fits outside box
320
- if p1[0] > self.im.shape[1] - w: # check if label extend beyond right side of image
320
+ if p1[0] > self.im.shape[1] - w: # shape is (h, w), check if label extend beyond right side of image
321
321
  p1 = self.im.shape[1] - w, p1[1]
322
322
  p2 = p1[0] + w, p1[1] - h if outside else p1[1] + h
323
323
  cv2.rectangle(self.im, p1, p2, color, -1, cv2.LINE_AA) # filled
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.51
3
+ Version: 8.2.53
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
File without changes
File without changes
File without changes