ultralytics 8.1.32__tar.gz → 8.1.34__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 (210) hide show
  1. {ultralytics-8.1.32/ultralytics.egg-info → ultralytics-8.1.34}/PKG-INFO +2 -2
  2. {ultralytics-8.1.32 → ultralytics-8.1.34}/pyproject.toml +7 -3
  3. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/__init__.py +1 -1
  4. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/__init__.py +1 -0
  5. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/default.yaml +1 -0
  6. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/augment.py +5 -1
  7. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/dataset.py +1 -0
  8. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/engine/model.py +13 -11
  9. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/engine/results.py +21 -11
  10. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/engine/tuner.py +1 -0
  11. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/hub/__init__.py +1 -1
  12. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/nn/autobackend.py +2 -5
  13. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/solutions/ai_gym.py +0 -8
  14. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/solutions/object_counter.py +1 -1
  15. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/checks.py +5 -3
  16. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/downloads.py +1 -1
  17. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/torch_utils.py +1 -0
  18. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/tuner.py +1 -0
  19. {ultralytics-8.1.32 → ultralytics-8.1.34/ultralytics.egg-info}/PKG-INFO +2 -2
  20. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics.egg-info/requires.txt +1 -1
  21. {ultralytics-8.1.32 → ultralytics-8.1.34}/LICENSE +0 -0
  22. {ultralytics-8.1.32 → ultralytics-8.1.34}/README.md +0 -0
  23. {ultralytics-8.1.32 → ultralytics-8.1.34}/setup.cfg +0 -0
  24. {ultralytics-8.1.32 → ultralytics-8.1.34}/tests/test_cli.py +0 -0
  25. {ultralytics-8.1.32 → ultralytics-8.1.34}/tests/test_cuda.py +0 -0
  26. {ultralytics-8.1.32 → ultralytics-8.1.34}/tests/test_engine.py +0 -0
  27. {ultralytics-8.1.32 → ultralytics-8.1.34}/tests/test_explorer.py +0 -0
  28. {ultralytics-8.1.32 → ultralytics-8.1.34}/tests/test_integrations.py +0 -0
  29. {ultralytics-8.1.32 → ultralytics-8.1.34}/tests/test_python.py +0 -0
  30. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/assets/bus.jpg +0 -0
  31. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/assets/zidane.jpg +0 -0
  32. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  33. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  34. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  35. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  36. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  37. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  38. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  39. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  40. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  41. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  42. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  43. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  44. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  45. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/coco.yaml +0 -0
  46. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  47. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  48. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  49. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  50. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  51. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  52. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  53. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  54. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  55. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  56. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/datasets/xView.yaml +0 -0
  57. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  58. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  59. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  60. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  61. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  62. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  63. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  64. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  65. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  66. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  67. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  68. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  69. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  70. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  71. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  72. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  73. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  74. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  75. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  76. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  77. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  78. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  79. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  80. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  81. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  82. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  83. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  84. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  85. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  86. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  87. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  88. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/__init__.py +0 -0
  89. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/annotator.py +0 -0
  90. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/base.py +0 -0
  91. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/build.py +0 -0
  92. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/converter.py +0 -0
  93. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/explorer/__init__.py +0 -0
  94. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/explorer/explorer.py +0 -0
  95. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/explorer/gui/__init__.py +0 -0
  96. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/explorer/gui/dash.py +0 -0
  97. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/explorer/utils.py +0 -0
  98. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/loaders.py +0 -0
  99. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/split_dota.py +0 -0
  100. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/data/utils.py +0 -0
  101. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/engine/__init__.py +0 -0
  102. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/engine/exporter.py +0 -0
  103. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/engine/predictor.py +0 -0
  104. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/engine/trainer.py +0 -0
  105. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/engine/validator.py +0 -0
  106. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/hub/auth.py +0 -0
  107. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/hub/session.py +0 -0
  108. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/hub/utils.py +0 -0
  109. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/__init__.py +0 -0
  110. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/fastsam/__init__.py +0 -0
  111. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/fastsam/model.py +0 -0
  112. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/fastsam/predict.py +0 -0
  113. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/fastsam/prompt.py +0 -0
  114. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/fastsam/utils.py +0 -0
  115. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/fastsam/val.py +0 -0
  116. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/nas/__init__.py +0 -0
  117. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/nas/model.py +0 -0
  118. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/nas/predict.py +0 -0
  119. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/nas/val.py +0 -0
  120. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/rtdetr/__init__.py +0 -0
  121. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/rtdetr/model.py +0 -0
  122. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/rtdetr/predict.py +0 -0
  123. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/rtdetr/train.py +0 -0
  124. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/rtdetr/val.py +0 -0
  125. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/__init__.py +0 -0
  126. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/amg.py +0 -0
  127. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/build.py +0 -0
  128. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/model.py +0 -0
  129. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/modules/__init__.py +0 -0
  130. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/modules/decoders.py +0 -0
  131. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/modules/encoders.py +0 -0
  132. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/modules/sam.py +0 -0
  133. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  134. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/modules/transformer.py +0 -0
  135. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/sam/predict.py +0 -0
  136. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/utils/__init__.py +0 -0
  137. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/utils/loss.py +0 -0
  138. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/utils/ops.py +0 -0
  139. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/__init__.py +0 -0
  140. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/classify/__init__.py +0 -0
  141. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/classify/predict.py +0 -0
  142. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/classify/train.py +0 -0
  143. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/classify/val.py +0 -0
  144. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/detect/__init__.py +0 -0
  145. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/detect/predict.py +0 -0
  146. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/detect/train.py +0 -0
  147. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/detect/val.py +0 -0
  148. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/model.py +0 -0
  149. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/obb/__init__.py +0 -0
  150. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/obb/predict.py +0 -0
  151. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/obb/train.py +0 -0
  152. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/obb/val.py +0 -0
  153. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/pose/__init__.py +0 -0
  154. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/pose/predict.py +0 -0
  155. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/pose/train.py +0 -0
  156. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/pose/val.py +0 -0
  157. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/segment/__init__.py +0 -0
  158. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/segment/predict.py +0 -0
  159. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/segment/train.py +0 -0
  160. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/models/yolo/segment/val.py +0 -0
  161. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/nn/__init__.py +0 -0
  162. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/nn/modules/__init__.py +0 -0
  163. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/nn/modules/block.py +0 -0
  164. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/nn/modules/conv.py +0 -0
  165. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/nn/modules/head.py +0 -0
  166. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/nn/modules/transformer.py +0 -0
  167. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/nn/modules/utils.py +0 -0
  168. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/nn/tasks.py +0 -0
  169. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/solutions/__init__.py +0 -0
  170. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/solutions/distance_calculation.py +0 -0
  171. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/solutions/heatmap.py +0 -0
  172. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/solutions/speed_estimation.py +0 -0
  173. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/trackers/__init__.py +0 -0
  174. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/trackers/basetrack.py +0 -0
  175. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/trackers/bot_sort.py +0 -0
  176. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/trackers/byte_tracker.py +0 -0
  177. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/trackers/track.py +0 -0
  178. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/trackers/utils/__init__.py +0 -0
  179. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/trackers/utils/gmc.py +0 -0
  180. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  181. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/trackers/utils/matching.py +0 -0
  182. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/__init__.py +0 -0
  183. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/autobatch.py +0 -0
  184. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/benchmarks.py +0 -0
  185. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/__init__.py +0 -0
  186. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/base.py +0 -0
  187. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/clearml.py +0 -0
  188. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/comet.py +0 -0
  189. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/dvc.py +0 -0
  190. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/hub.py +0 -0
  191. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/mlflow.py +0 -0
  192. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/neptune.py +0 -0
  193. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/raytune.py +0 -0
  194. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  195. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/callbacks/wb.py +0 -0
  196. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/dist.py +0 -0
  197. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/errors.py +0 -0
  198. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/files.py +0 -0
  199. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/instance.py +0 -0
  200. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/loss.py +0 -0
  201. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/metrics.py +0 -0
  202. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/ops.py +0 -0
  203. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/patches.py +0 -0
  204. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/plotting.py +0 -0
  205. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/tal.py +0 -0
  206. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics/utils/triton.py +0 -0
  207. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics.egg-info/SOURCES.txt +0 -0
  208. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics.egg-info/dependency_links.txt +0 -0
  209. {ultralytics-8.1.32 → ultralytics-8.1.34}/ultralytics.egg-info/entry_points.txt +0 -0
  210. {ultralytics-8.1.32 → ultralytics-8.1.34}/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.1.32
3
+ Version: 8.1.34
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
@@ -71,7 +71,7 @@ Requires-Dist: comet; extra == "logging"
71
71
  Requires-Dist: tensorboard>=2.13.0; extra == "logging"
72
72
  Requires-Dist: dvclive>=2.12.0; extra == "logging"
73
73
  Provides-Extra: extra
74
- Requires-Dist: hub-sdk>=0.0.2; extra == "extra"
74
+ Requires-Dist: hub-sdk>=0.0.5; extra == "extra"
75
75
  Requires-Dist: ipython; extra == "extra"
76
76
  Requires-Dist: albumentations>=1.0.3; extra == "extra"
77
77
  Requires-Dist: pycocotools>=2.0.7; extra == "extra"
@@ -117,7 +117,7 @@ logging = [
117
117
  "dvclive>=2.12.0",
118
118
  ]
119
119
  extra = [
120
- "hub-sdk>=0.0.2", # Ultralytics HUB
120
+ "hub-sdk>=0.0.5", # Ultralytics HUB
121
121
  "ipython", # interactive notebook
122
122
  "albumentations>=1.0.3", # training augmentations
123
123
  "pycocotools>=2.0.7", # COCO mAP
@@ -140,9 +140,13 @@ package-data = { "ultralytics" = ["**/*.yaml"], "ultralytics.assets" = ["*.jpg"]
140
140
  [tool.setuptools.dynamic]
141
141
  version = { attr = "ultralytics.__version__" }
142
142
 
143
- [tool.pytest]
144
- norecursedirs = [".git", "dist", "build"]
143
+ [tool.pytest.ini_options]
145
144
  addopts = "--doctest-modules --durations=30 --color=yes"
145
+ markers = [
146
+ "slow: skip slow tests unless --slow is set",
147
+ ]
148
+ norecursedirs = [".git", "dist", "build"]
149
+
146
150
 
147
151
  [tool.coverage.run]
148
152
  source = ["ultralytics/"]
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.1.32"
3
+ __version__ = "8.1.34"
4
4
 
5
5
  from ultralytics.data.explorer.explorer import Explorer
6
6
  from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld
@@ -112,6 +112,7 @@ CFG_FRACTION_KEYS = {
112
112
  "perspective",
113
113
  "flipud",
114
114
  "fliplr",
115
+ "bgr",
115
116
  "mosaic",
116
117
  "mixup",
117
118
  "copy_paste",
@@ -111,6 +111,7 @@ shear: 0.0 # (float) image shear (+/- deg)
111
111
  perspective: 0.0 # (float) image perspective (+/- fraction), range 0-0.001
112
112
  flipud: 0.0 # (float) image flip up-down (probability)
113
113
  fliplr: 0.5 # (float) image flip left-right (probability)
114
+ bgr: 0.0 # (float) image channel BGR (probability)
114
115
  mosaic: 1.0 # (float) image mosaic (probability)
115
116
  mixup: 0.0 # (float) image mixup (probability)
116
117
  copy_paste: 0.0 # (float) segment copy-paste (probability)
@@ -886,6 +886,7 @@ class Format:
886
886
  mask_ratio (int): Downsample ratio for masks. Default is 4.
887
887
  mask_overlap (bool): Whether to overlap masks. Default is True.
888
888
  batch_idx (bool): Keep batch indexes. Default is True.
889
+ bgr (float): The probability to return BGR images. Default is 0.0.
889
890
  """
890
891
 
891
892
  def __init__(
@@ -898,6 +899,7 @@ class Format:
898
899
  mask_ratio=4,
899
900
  mask_overlap=True,
900
901
  batch_idx=True,
902
+ bgr=0.0,
901
903
  ):
902
904
  """Initializes the Format class with given parameters."""
903
905
  self.bbox_format = bbox_format
@@ -908,6 +910,7 @@ class Format:
908
910
  self.mask_ratio = mask_ratio
909
911
  self.mask_overlap = mask_overlap
910
912
  self.batch_idx = batch_idx # keep the batch indexes
913
+ self.bgr = bgr
911
914
 
912
915
  def __call__(self, labels):
913
916
  """Return formatted image, classes, bounding boxes & keypoints to be used by 'collate_fn'."""
@@ -948,7 +951,8 @@ class Format:
948
951
  """Format the image for YOLO from Numpy array to PyTorch tensor."""
949
952
  if len(img.shape) < 3:
950
953
  img = np.expand_dims(img, -1)
951
- img = np.ascontiguousarray(img.transpose(2, 0, 1)[::-1])
954
+ img = img.transpose(2, 0, 1)
955
+ img = np.ascontiguousarray(img[::-1] if random.uniform(0, 1) > self.bgr else img)
952
956
  img = torch.from_numpy(img)
953
957
  return img
954
958
 
@@ -167,6 +167,7 @@ class YOLODataset(BaseDataset):
167
167
  batch_idx=True,
168
168
  mask_ratio=hyp.mask_ratio,
169
169
  mask_overlap=hyp.overlap_mask,
170
+ bgr=hyp.bgr if self.augment else 0.0, # only affect training.
170
171
  )
171
172
  )
172
173
  return transforms
@@ -119,30 +119,27 @@ class Model(nn.Module):
119
119
  self.metrics = None # validation/training metrics
120
120
  self.session = None # HUB session
121
121
  self.task = task # task type
122
- self.model_name = model = str(model).strip() # strip spaces
122
+ model = str(model).strip()
123
123
 
124
124
  # Check if Ultralytics HUB model from https://hub.ultralytics.com
125
125
  if self.is_hub_model(model):
126
126
  # Fetch model from HUB
127
- checks.check_requirements("hub-sdk>=0.0.5")
127
+ checks.check_requirements("hub-sdk>=0.0.6")
128
128
  self.session = self._get_hub_session(model)
129
129
  model = self.session.model_file
130
130
 
131
131
  # Check if Triton Server model
132
132
  elif self.is_triton_model(model):
133
- self.model = model
133
+ self.model_name = self.model = model
134
134
  self.task = task
135
135
  return
136
136
 
137
137
  # Load or create new YOLO model
138
- model = checks.check_model_file_from_stem(model) # add suffix, i.e. yolov8n -> yolov8n.pt
139
138
  if Path(model).suffix in (".yaml", ".yml"):
140
139
  self._new(model, task=task, verbose=verbose)
141
140
  else:
142
141
  self._load(model, task=task)
143
142
 
144
- self.model_name = model
145
-
146
143
  def __call__(
147
144
  self,
148
145
  source: Union[str, Path, int, list, tuple, np.ndarray, torch.Tensor] = None,
@@ -190,8 +187,8 @@ class Model(nn.Module):
190
187
  return any(
191
188
  (
192
189
  model.startswith(f"{HUB_WEB_ROOT}/models/"), # i.e. https://hub.ultralytics.com/models/MODEL_ID
193
- [len(x) for x in model.split("_")] == [42, 20], # APIKEY_MODELID
194
- len(model) == 20 and not Path(model).exists() and all(x not in model for x in "./\\"), # MODELID
190
+ [len(x) for x in model.split("_")] == [42, 20], # APIKEY_MODEL
191
+ len(model) == 20 and not Path(model).exists() and all(x not in model for x in "./\\"), # MODEL
195
192
  )
196
193
  )
197
194
 
@@ -215,6 +212,7 @@ class Model(nn.Module):
215
212
  # Below added to allow export from YAMLs
216
213
  self.model.args = {**DEFAULT_CFG_DICT, **self.overrides} # combine default and model args (prefer model args)
217
214
  self.model.task = self.task
215
+ self.model_name = cfg
218
216
 
219
217
  def _load(self, weights: str, task=None) -> None:
220
218
  """
@@ -224,19 +222,23 @@ class Model(nn.Module):
224
222
  weights (str): model checkpoint to be loaded
225
223
  task (str | None): model task
226
224
  """
227
- suffix = Path(weights).suffix
228
- if suffix == ".pt":
225
+ if weights.lower().startswith(("https://", "http://", "rtsp://", "rtmp://", "tcp://")):
226
+ weights = checks.check_file(weights) # automatically download and return local filename
227
+ weights = checks.check_model_file_from_stem(weights) # add suffix, i.e. yolov8n -> yolov8n.pt
228
+
229
+ if Path(weights).suffix == ".pt":
229
230
  self.model, self.ckpt = attempt_load_one_weight(weights)
230
231
  self.task = self.model.args["task"]
231
232
  self.overrides = self.model.args = self._reset_ckpt_args(self.model.args)
232
233
  self.ckpt_path = self.model.pt_path
233
234
  else:
234
- weights = checks.check_file(weights)
235
+ weights = checks.check_file(weights) # runs in all cases, not redundant with above call
235
236
  self.model, self.ckpt = weights, None
236
237
  self.task = task or guess_model_task(weights)
237
238
  self.ckpt_path = weights
238
239
  self.overrides["model"] = weights
239
240
  self.overrides["task"] = self.task
241
+ self.model_name = weights
240
242
 
241
243
  def _check_is_pytorch_model(self) -> None:
242
244
  """Raises TypeError is model is not a PyTorch model."""
@@ -385,10 +385,10 @@ class Results(SimpleClass):
385
385
  BGR=True,
386
386
  )
387
387
 
388
- def summary(self, normalize=False):
388
+ def summary(self, normalize=False, decimals=5):
389
389
  """Convert the results to a summarized format."""
390
390
  if self.probs is not None:
391
- LOGGER.warning("Warning: Classify task do not support `summary` and `tojson` yet.")
391
+ LOGGER.warning("Warning: Classify results do not support the `summary()` method yet.")
392
392
  return
393
393
 
394
394
  # Create list of detection dictionaries
@@ -396,28 +396,38 @@ class Results(SimpleClass):
396
396
  data = self.boxes.data.cpu().tolist()
397
397
  h, w = self.orig_shape if normalize else (1, 1)
398
398
  for i, row in enumerate(data): # xyxy, track_id if tracking, conf, class_id
399
- box = {"x1": row[0] / w, "y1": row[1] / h, "x2": row[2] / w, "y2": row[3] / h}
400
- conf = row[-2]
399
+ box = {
400
+ "x1": round(row[0] / w, decimals),
401
+ "y1": round(row[1] / h, decimals),
402
+ "x2": round(row[2] / w, decimals),
403
+ "y2": round(row[3] / h, decimals),
404
+ }
405
+ conf = round(row[-2], decimals)
401
406
  class_id = int(row[-1])
402
- name = self.names[class_id]
403
- result = {"name": name, "class": class_id, "confidence": conf, "box": box}
407
+ result = {"name": self.names[class_id], "class": class_id, "confidence": conf, "box": box}
404
408
  if self.boxes.is_track:
405
409
  result["track_id"] = int(row[-3]) # track ID
406
410
  if self.masks:
407
- x, y = self.masks.xy[i][:, 0], self.masks.xy[i][:, 1] # numpy array
408
- result["segments"] = {"x": (x / w).tolist(), "y": (y / h).tolist()}
411
+ result["segments"] = {
412
+ "x": (self.masks.xy[i][:, 0] / w).round(decimals).tolist(),
413
+ "y": (self.masks.xy[i][:, 1] / h).round(decimals).tolist(),
414
+ }
409
415
  if self.keypoints is not None:
410
416
  x, y, visible = self.keypoints[i].data[0].cpu().unbind(dim=1) # torch Tensor
411
- result["keypoints"] = {"x": (x / w).tolist(), "y": (y / h).tolist(), "visible": visible.tolist()}
417
+ result["keypoints"] = {
418
+ "x": (x / w).numpy().round(decimals).tolist(), # decimals named argument required
419
+ "y": (y / h).numpy().round(decimals).tolist(),
420
+ "visible": visible.numpy().round(decimals).tolist(),
421
+ }
412
422
  results.append(result)
413
423
 
414
424
  return results
415
425
 
416
- def tojson(self, normalize=False):
426
+ def tojson(self, normalize=False, decimals=5):
417
427
  """Convert the results to JSON format."""
418
428
  import json
419
429
 
420
- return json.dumps(self.summary(normalize=normalize), indent=2)
430
+ return json.dumps(self.summary(normalize=normalize, decimals=decimals), indent=2)
421
431
 
422
432
 
423
433
  class Boxes(BaseTensor):
@@ -95,6 +95,7 @@ class Tuner:
95
95
  "perspective": (0.0, 0.001), # image perspective (+/- fraction), range 0-0.001
96
96
  "flipud": (0.0, 1.0), # image flip up-down (probability)
97
97
  "fliplr": (0.0, 1.0), # image flip left-right (probability)
98
+ "bgr": (0.0, 1.0), # image channel bgr (probability)
98
99
  "mosaic": (0.0, 1.0), # image mixup (probability)
99
100
  "mixup": (0.0, 1.0), # image mixup (probability)
100
101
  "copy_paste": (0.0, 1.0), # segment copy-paste (probability)
@@ -23,7 +23,7 @@ def login(api_key: str = None, save=True) -> bool:
23
23
  Returns:
24
24
  (bool): True if authentication is successful, False otherwise.
25
25
  """
26
- checks.check_requirements("hub-sdk>=0.0.2")
26
+ checks.check_requirements("hub-sdk>=0.0.6")
27
27
  from hub_sdk import HUBClient
28
28
 
29
29
  api_key_url = f"{HUB_WEB_ROOT}/settings?tab=api+keys" # set the redirect URL
@@ -202,13 +202,10 @@ class AutoBackend(nn.Module):
202
202
  ov_model = core.read_model(model=str(w), weights=w.with_suffix(".bin"))
203
203
  if ov_model.get_parameters()[0].get_layout().empty:
204
204
  ov_model.get_parameters()[0].set_layout(ov.Layout("NCHW"))
205
- batch_dim = ov.get_batch(ov_model)
206
- if batch_dim.is_static:
207
- batch_size = batch_dim.get_length()
208
205
 
209
206
  # OpenVINO inference modes are 'LATENCY', 'THROUGHPUT' (not recommended), or 'CUMULATIVE_THROUGHPUT'
210
207
  inference_mode = "CUMULATIVE_THROUGHPUT" if batch > 1 else "LATENCY"
211
- LOGGER.info(f"Using OpenVINO {inference_mode} mode for batch-size={batch_size} inference...")
208
+ LOGGER.info(f"Using OpenVINO {inference_mode} mode for batch={batch} inference...")
212
209
  ov_compiled_model = core.compile_model(
213
210
  ov_model,
214
211
  device_name="AUTO", # AUTO selects best available device, do not modify
@@ -606,7 +603,7 @@ class AutoBackend(nn.Module):
606
603
  from ultralytics.engine.exporter import export_formats
607
604
 
608
605
  sf = list(export_formats().Suffix) # export suffixes
609
- if not is_url(p, check=False) and not isinstance(p, str):
606
+ if not is_url(p) and not isinstance(p, str):
610
607
  check_suffix(p, sf) # checks
611
608
  name = Path(p).name
612
609
  types = [s in name for s in sf]
@@ -80,14 +80,6 @@ class AIGym:
80
80
  self.keypoints = results[0].keypoints.data
81
81
  self.annotator = Annotator(im0, line_width=2)
82
82
 
83
- num_keypoints = len(results[0])
84
-
85
- # Resize self.angle, self.count, and self.stage if the number of keypoints has changed
86
- if len(self.angle) != num_keypoints:
87
- self.angle = [0] * num_keypoints
88
- self.count = [0] * num_keypoints
89
- self.stage = ["-" for _ in range(num_keypoints)]
90
-
91
83
  for ind, k in enumerate(reversed(self.keypoints)):
92
84
  if self.pose_type in ["pushup", "pullup"]:
93
85
  self.angle[ind] = self.annotator.estimate_pose_angle(
@@ -171,7 +171,7 @@ class ObjectCounter:
171
171
  # Extract tracks
172
172
  for box, track_id, cls in zip(boxes, track_ids, clss):
173
173
  # Draw bounding box
174
- self.annotator.box_label(box, label=f"{track_id}:{self.names[cls]}", color=colors(int(cls), True))
174
+ self.annotator.box_label(box, label=f"{track_id}:{self.names[cls]}", color=colors(int(track_id), True))
175
175
 
176
176
  # Draw Tracks
177
177
  track_line = self.track_history[track_id]
@@ -142,6 +142,8 @@ def check_imgsz(imgsz, stride=32, min_dim=1, max_dim=2, floor=0):
142
142
  imgsz = [imgsz]
143
143
  elif isinstance(imgsz, (list, tuple)):
144
144
  imgsz = list(imgsz)
145
+ elif isinstance(imgsz, str): # i.e. '640' or '[640,640]'
146
+ imgsz = [int(imgsz)] if imgsz.isnumeric() else eval(imgsz)
145
147
  else:
146
148
  raise TypeError(
147
149
  f"'imgsz={imgsz}' is of invalid type {type(imgsz).__name__}. "
@@ -315,7 +317,7 @@ def check_font(font="Arial.ttf"):
315
317
 
316
318
  # Download to USER_CONFIG_DIR if missing
317
319
  url = f"https://ultralytics.com/assets/{name}"
318
- if downloads.is_url(url):
320
+ if downloads.is_url(url, check=True):
319
321
  downloads.safe_download(url=url, file=file)
320
322
  return file
321
323
 
@@ -498,7 +500,7 @@ def check_file(file, suffix="", download=True, hard=True):
498
500
  raise FileNotFoundError(f"'{file}' does not exist")
499
501
  elif len(files) > 1 and hard:
500
502
  raise FileNotFoundError(f"Multiple files match '{file}', specify exact path: {files}")
501
- return files[0] if len(files) else [] # return file
503
+ return files[0] if len(files) else [] if hard else file # return file
502
504
 
503
505
 
504
506
  def check_yaml(file, suffix=(".yaml", ".yml"), hard=True):
@@ -726,4 +728,4 @@ def cuda_is_available() -> bool:
726
728
 
727
729
 
728
730
  # Define constants
729
- IS_PYTHON_3_12 = check_version(PYTHON_VERSION, "==3.12", name="Python ", hard=False)
731
+ IS_PYTHON_3_12 = PYTHON_VERSION.startswith("3.12")
@@ -33,7 +33,7 @@ GITHUB_ASSETS_NAMES = (
33
33
  GITHUB_ASSETS_STEMS = [Path(k).stem for k in GITHUB_ASSETS_NAMES]
34
34
 
35
35
 
36
- def is_url(url, check=True):
36
+ def is_url(url, check=False):
37
37
  """
38
38
  Validates if the given string is a URL and optionally checks if the URL exists online.
39
39
 
@@ -24,6 +24,7 @@ try:
24
24
  except ImportError:
25
25
  thop = None
26
26
 
27
+ # Version checks (all default to version>=min_version)
27
28
  TORCH_1_9 = check_version(torch.__version__, "1.9.0")
28
29
  TORCH_1_13 = check_version(torch.__version__, "1.13.0")
29
30
  TORCH_2_0 = check_version(torch.__version__, "2.0.0")
@@ -78,6 +78,7 @@ def run_ray_tune(
78
78
  "perspective": tune.uniform(0.0, 0.001), # image perspective (+/- fraction), range 0-0.001
79
79
  "flipud": tune.uniform(0.0, 1.0), # image flip up-down (probability)
80
80
  "fliplr": tune.uniform(0.0, 1.0), # image flip left-right (probability)
81
+ "bgr": tune.uniform(0.0, 1.0), # image channel BGR (probability)
81
82
  "mosaic": tune.uniform(0.0, 1.0), # image mixup (probability)
82
83
  "mixup": tune.uniform(0.0, 1.0), # image mixup (probability)
83
84
  "copy_paste": tune.uniform(0.0, 1.0), # segment copy-paste (probability)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.1.32
3
+ Version: 8.1.34
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
@@ -71,7 +71,7 @@ Requires-Dist: comet; extra == "logging"
71
71
  Requires-Dist: tensorboard>=2.13.0; extra == "logging"
72
72
  Requires-Dist: dvclive>=2.12.0; extra == "logging"
73
73
  Provides-Extra: extra
74
- Requires-Dist: hub-sdk>=0.0.2; extra == "extra"
74
+ Requires-Dist: hub-sdk>=0.0.5; extra == "extra"
75
75
  Requires-Dist: ipython; extra == "extra"
76
76
  Requires-Dist: albumentations>=1.0.3; extra == "extra"
77
77
  Requires-Dist: pycocotools>=2.0.7; extra == "extra"
@@ -43,7 +43,7 @@ tensorflow<=2.13.1
43
43
  tensorflowjs>=3.9.0
44
44
 
45
45
  [extra]
46
- hub-sdk>=0.0.2
46
+ hub-sdk>=0.0.5
47
47
  ipython
48
48
  albumentations>=1.0.3
49
49
  pycocotools>=2.0.7
File without changes
File without changes
File without changes