ultralytics 8.1.42__tar.gz → 8.1.44__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 (217) hide show
  1. {ultralytics-8.1.42/ultralytics.egg-info → ultralytics-8.1.44}/PKG-INFO +1 -1
  2. {ultralytics-8.1.42 → ultralytics-8.1.44}/tests/test_engine.py +2 -1
  3. {ultralytics-8.1.42 → ultralytics-8.1.44}/tests/test_integrations.py +1 -0
  4. {ultralytics-8.1.42 → ultralytics-8.1.44}/tests/test_python.py +14 -21
  5. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/__init__.py +3 -2
  6. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +1 -1
  7. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v9/yolov9c.yaml +1 -1
  8. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +2 -3
  9. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v9/yolov9e.yaml +2 -3
  10. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/__init__.py +3 -8
  11. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/augment.py +14 -11
  12. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/base.py +1 -1
  13. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/build.py +1 -1
  14. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/converter.py +4 -3
  15. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/dataset.py +149 -144
  16. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/explorer/explorer.py +10 -11
  17. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/explorer/gui/dash.py +3 -3
  18. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/explorer/utils.py +3 -2
  19. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/loaders.py +3 -3
  20. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/engine/exporter.py +3 -2
  21. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/engine/model.py +2 -1
  22. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/engine/trainer.py +2 -1
  23. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/hub/auth.py +3 -3
  24. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/hub/session.py +3 -3
  25. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/hub/utils.py +6 -6
  26. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/fastsam/prompt.py +4 -1
  27. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/rtdetr/val.py +1 -1
  28. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/modules/tiny_encoder.py +2 -2
  29. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/modules/transformer.py +1 -1
  30. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/predict.py +16 -13
  31. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/classify/train.py +2 -1
  32. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/detect/val.py +1 -1
  33. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/model.py +1 -1
  34. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/obb/val.py +1 -1
  35. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/world/train_world.py +2 -2
  36. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/nn/modules/head.py +1 -1
  37. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/solutions/heatmap.py +14 -27
  38. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/solutions/object_counter.py +12 -22
  39. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/trackers/utils/kalman_filter.py +4 -4
  40. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/trackers/utils/matching.py +1 -1
  41. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/__init__.py +56 -41
  42. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/benchmarks.py +1 -2
  43. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/clearml.py +4 -3
  44. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/hub.py +1 -4
  45. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/mlflow.py +1 -1
  46. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/tensorboard.py +1 -0
  47. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/wb.py +5 -5
  48. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/checks.py +17 -20
  49. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/metrics.py +3 -3
  50. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/ops.py +1 -1
  51. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/plotting.py +67 -40
  52. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/torch_utils.py +13 -6
  53. {ultralytics-8.1.42 → ultralytics-8.1.44/ultralytics.egg-info}/PKG-INFO +1 -1
  54. {ultralytics-8.1.42 → ultralytics-8.1.44}/LICENSE +0 -0
  55. {ultralytics-8.1.42 → ultralytics-8.1.44}/README.md +0 -0
  56. {ultralytics-8.1.42 → ultralytics-8.1.44}/pyproject.toml +0 -0
  57. {ultralytics-8.1.42 → ultralytics-8.1.44}/setup.cfg +0 -0
  58. {ultralytics-8.1.42 → ultralytics-8.1.44}/tests/test_cli.py +0 -0
  59. {ultralytics-8.1.42 → ultralytics-8.1.44}/tests/test_cuda.py +0 -0
  60. {ultralytics-8.1.42 → ultralytics-8.1.44}/tests/test_explorer.py +0 -0
  61. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/assets/bus.jpg +0 -0
  62. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/assets/zidane.jpg +0 -0
  63. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/__init__.py +0 -0
  64. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  65. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  66. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  67. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  68. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  69. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  70. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  71. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  72. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  73. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  74. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  75. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  76. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  77. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/coco.yaml +0 -0
  78. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  79. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  80. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  81. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  82. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  83. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  84. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  85. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  86. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  87. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  88. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  89. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/datasets/xView.yaml +0 -0
  90. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/default.yaml +0 -0
  91. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  92. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  93. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  94. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  95. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  96. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  97. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  98. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  99. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  100. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  101. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  102. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  103. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  104. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  105. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  106. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  107. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  108. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  109. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  110. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  111. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  112. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  113. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  114. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  115. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  116. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  117. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  118. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  119. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  120. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/annotator.py +0 -0
  121. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/explorer/__init__.py +0 -0
  122. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/explorer/gui/__init__.py +0 -0
  123. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/split_dota.py +0 -0
  124. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/data/utils.py +1 -1
  125. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/engine/__init__.py +0 -0
  126. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/engine/predictor.py +0 -0
  127. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/engine/results.py +0 -0
  128. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/engine/tuner.py +0 -0
  129. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/engine/validator.py +0 -0
  130. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/hub/__init__.py +0 -0
  131. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/__init__.py +0 -0
  132. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/fastsam/__init__.py +0 -0
  133. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/fastsam/model.py +0 -0
  134. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/fastsam/predict.py +0 -0
  135. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/fastsam/utils.py +0 -0
  136. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/fastsam/val.py +0 -0
  137. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/nas/__init__.py +0 -0
  138. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/nas/model.py +0 -0
  139. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/nas/predict.py +0 -0
  140. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/nas/val.py +0 -0
  141. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/rtdetr/__init__.py +0 -0
  142. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/rtdetr/model.py +0 -0
  143. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/rtdetr/predict.py +0 -0
  144. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/rtdetr/train.py +0 -0
  145. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/__init__.py +0 -0
  146. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/amg.py +0 -0
  147. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/build.py +0 -0
  148. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/model.py +0 -0
  149. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/modules/__init__.py +0 -0
  150. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/modules/decoders.py +0 -0
  151. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/modules/encoders.py +0 -0
  152. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/sam/modules/sam.py +0 -0
  153. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/utils/__init__.py +0 -0
  154. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/utils/loss.py +0 -0
  155. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/utils/ops.py +0 -0
  156. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/__init__.py +0 -0
  157. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/classify/__init__.py +0 -0
  158. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/classify/predict.py +0 -0
  159. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/classify/val.py +0 -0
  160. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/detect/__init__.py +0 -0
  161. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/detect/predict.py +0 -0
  162. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/detect/train.py +0 -0
  163. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/obb/__init__.py +0 -0
  164. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/obb/predict.py +0 -0
  165. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/obb/train.py +0 -0
  166. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/pose/__init__.py +0 -0
  167. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/pose/predict.py +0 -0
  168. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/pose/train.py +0 -0
  169. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/pose/val.py +0 -0
  170. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/segment/__init__.py +0 -0
  171. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/segment/predict.py +0 -0
  172. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/segment/train.py +0 -0
  173. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/segment/val.py +0 -0
  174. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/world/__init__.py +0 -0
  175. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/models/yolo/world/train.py +0 -0
  176. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/nn/__init__.py +0 -0
  177. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/nn/autobackend.py +0 -0
  178. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/nn/modules/__init__.py +8 -8
  179. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/nn/modules/block.py +0 -0
  180. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/nn/modules/conv.py +0 -0
  181. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/nn/modules/transformer.py +0 -0
  182. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/nn/modules/utils.py +0 -0
  183. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/nn/tasks.py +7 -7
  184. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/solutions/__init__.py +0 -0
  185. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/solutions/ai_gym.py +0 -0
  186. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/solutions/distance_calculation.py +0 -0
  187. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/solutions/queue_management.py +0 -0
  188. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/solutions/speed_estimation.py +0 -0
  189. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/trackers/__init__.py +0 -0
  190. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/trackers/basetrack.py +0 -0
  191. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/trackers/bot_sort.py +0 -0
  192. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/trackers/byte_tracker.py +1 -1
  193. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/trackers/track.py +0 -0
  194. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/trackers/utils/__init__.py +0 -0
  195. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/trackers/utils/gmc.py +0 -0
  196. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/autobatch.py +0 -0
  197. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/__init__.py +0 -0
  198. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/base.py +0 -0
  199. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/comet.py +0 -0
  200. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/dvc.py +0 -0
  201. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/neptune.py +0 -0
  202. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/callbacks/raytune.py +0 -0
  203. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/dist.py +0 -0
  204. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/downloads.py +0 -0
  205. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/errors.py +0 -0
  206. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/files.py +0 -0
  207. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/instance.py +0 -0
  208. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/loss.py +0 -0
  209. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/patches.py +0 -0
  210. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/tal.py +0 -0
  211. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/triton.py +0 -0
  212. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics/utils/tuner.py +0 -0
  213. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics.egg-info/SOURCES.txt +0 -0
  214. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics.egg-info/dependency_links.txt +0 -0
  215. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics.egg-info/entry_points.txt +0 -0
  216. {ultralytics-8.1.42 → ultralytics-8.1.44}/ultralytics.egg-info/requires.txt +0 -0
  217. {ultralytics-8.1.42 → ultralytics-8.1.44}/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.42
3
+ Version: 8.1.44
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
@@ -2,6 +2,7 @@
2
2
 
3
3
  import sys
4
4
  from unittest import mock
5
+
5
6
  from ultralytics import YOLO
6
7
  from ultralytics.cfg import get_cfg
7
8
  from ultralytics.engine.exporter import Exporter
@@ -52,7 +53,7 @@ def test_detect():
52
53
  pred.add_callback("on_predict_start", test_func)
53
54
  assert test_func in pred.callbacks["on_predict_start"], "callback test failed"
54
55
  # Confirm there is no issue with sys.argv being empty.
55
- with mock.patch.object(sys, 'argv', []):
56
+ with mock.patch.object(sys, "argv", []):
56
57
  result = pred(source=ASSETS, model=f"{MODEL}.pt")
57
58
  assert len(result), "predictor test failed"
58
59
 
@@ -34,6 +34,7 @@ def test_mlflow():
34
34
  @pytest.mark.skipif(not check_requirements("mlflow", install=False), reason="mlflow not installed")
35
35
  def test_mlflow_keep_run_active():
36
36
  import os
37
+
37
38
  import mlflow
38
39
 
39
40
  """Test training with MLflow tracking enabled."""
@@ -10,7 +10,6 @@ import pytest
10
10
  import torch
11
11
  import yaml
12
12
  from PIL import Image
13
- from torchvision.transforms import ToTensor
14
13
 
15
14
  from ultralytics import RTDETR, YOLO
16
15
  from ultralytics.cfg import TASK2DATA
@@ -108,20 +107,17 @@ def test_predict_img():
108
107
  assert len(model(batch, imgsz=32)) == len(batch) # multiple sources in a batch
109
108
 
110
109
  # Test tensor inference
111
- im = cv2.imread(str(SOURCE)) # OpenCV
112
- t = cv2.resize(im, (32, 32))
113
- t = ToTensor()(t)
114
- t = torch.stack([t, t, t, t])
115
- results = model(t, imgsz=32)
116
- assert len(results) == t.shape[0]
117
- results = seg_model(t, imgsz=32)
118
- assert len(results) == t.shape[0]
119
- results = cls_model(t, imgsz=32)
120
- assert len(results) == t.shape[0]
121
- results = pose_model(t, imgsz=32)
122
- assert len(results) == t.shape[0]
123
- results = obb_model(t, imgsz=32)
124
- assert len(results) == t.shape[0]
110
+ im = torch.rand((4, 3, 32, 32)) # batch-size 4, FP32 0.0-1.0 RGB order
111
+ results = model(im, imgsz=32)
112
+ assert len(results) == im.shape[0]
113
+ results = seg_model(im, imgsz=32)
114
+ assert len(results) == im.shape[0]
115
+ results = cls_model(im, imgsz=32)
116
+ assert len(results) == im.shape[0]
117
+ results = pose_model(im, imgsz=32)
118
+ assert len(results) == im.shape[0]
119
+ results = obb_model(im, imgsz=32)
120
+ assert len(results) == im.shape[0]
125
121
 
126
122
 
127
123
  def test_predict_grey_and_4ch():
@@ -518,7 +514,8 @@ def test_utils_files():
518
514
  @pytest.mark.slow
519
515
  def test_utils_patches_torch_save():
520
516
  """Test torch_save backoff when _torch_save throws RuntimeError."""
521
- from unittest.mock import patch, MagicMock
517
+ from unittest.mock import MagicMock, patch
518
+
522
519
  from ultralytics.utils.patches import torch_save
523
520
 
524
521
  mock = MagicMock(side_effect=RuntimeError)
@@ -592,8 +589,6 @@ def image():
592
589
  )
593
590
  def test_classify_transforms_train(image, auto_augment, erasing, force_color_jitter):
594
591
  """Tests classification transforms during training with various augmentation settings."""
595
- import torchvision.transforms as T
596
-
597
592
  from ultralytics.data.augment import classify_augmentations
598
593
 
599
594
  transform = classify_augmentations(
@@ -610,7 +605,6 @@ def test_classify_transforms_train(image, auto_augment, erasing, force_color_jit
610
605
  hsv_v=0.4,
611
606
  force_color_jitter=force_color_jitter,
612
607
  erasing=erasing,
613
- interpolation=T.InterpolationMode.BILINEAR,
614
608
  )
615
609
 
616
610
  transformed_image = transform(Image.fromarray(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)))
@@ -658,9 +652,8 @@ def test_yolo_world():
658
652
  from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
659
653
 
660
654
  model = YOLO("yolov8s-worldv2.yaml") # no YOLOv8n-world model yet
661
- data = dict(train=dict(yolo_data=["coco8.yaml"]), val=dict(yolo_data=["coco8.yaml"]))
662
655
  model.train(
663
- data=data,
656
+ data={"train": {"yolo_data": ["coco8.yaml"]}, "val": {"yolo_data": ["coco8.yaml"]}},
664
657
  epochs=2,
665
658
  imgsz=32,
666
659
  cache="disk",
@@ -1,15 +1,16 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.1.42"
3
+ __version__ = "8.1.44"
4
4
 
5
5
  from ultralytics.data.explorer.explorer import Explorer
6
6
  from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld
7
7
  from ultralytics.models.fastsam import FastSAM
8
8
  from ultralytics.models.nas import NAS
9
- from ultralytics.utils import ASSETS, SETTINGS as settings
9
+ from ultralytics.utils import ASSETS, SETTINGS
10
10
  from ultralytics.utils.checks import check_yolo as checks
11
11
  from ultralytics.utils.downloads import download
12
12
 
13
+ settings = SETTINGS
13
14
  __all__ = (
14
15
  "__version__",
15
16
  "ASSETS",
@@ -35,4 +35,4 @@ head:
35
35
  - [[-1, 9], 1, Concat, [1]] # cat head P5
36
36
  - [-1, 1, RepNCSPELAN4, [512, 512, 256, 1]] # 21 (P5/32-large)
37
37
 
38
- - [[15, 18, 21], 1, Segment, [nc, 32, 256]] # Segment(P3, P4, P5)
38
+ - [[15, 18, 21], 1, Segment, [nc, 32, 256]] # Segment(P3, P4, P5)
@@ -35,4 +35,4 @@ head:
35
35
  - [[-1, 9], 1, Concat, [1]] # cat head P5
36
36
  - [-1, 1, RepNCSPELAN4, [512, 512, 256, 1]] # 21 (P5/32-large)
37
37
 
38
- - [[15, 18, 21], 1, Detect, [nc]] # DDetect(P3, P4, P5)
38
+ - [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)
@@ -17,13 +17,13 @@ backbone:
17
17
  - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 7
18
18
  - [-1, 1, ADown, [1024]] # 8-P5/32
19
19
  - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 9
20
-
20
+
21
21
  - [1, 1, CBLinear, [[64]]] # 10
22
22
  - [3, 1, CBLinear, [[64, 128]]] # 11
23
23
  - [5, 1, CBLinear, [[64, 128, 256]]] # 12
24
24
  - [7, 1, CBLinear, [[64, 128, 256, 512]]] # 13
25
25
  - [9, 1, CBLinear, [[64, 128, 256, 512, 1024]]] # 14
26
-
26
+
27
27
  - [0, 1, Conv, [64, 3, 2]] # 15-P1/2
28
28
  - [[10, 11, 12, 13, 14, -1], 1, CBFuse, [[0, 0, 0, 0, 0]]] # 16
29
29
  - [-1, 1, Conv, [128, 3, 2]] # 17-P2/4
@@ -58,5 +58,4 @@ head:
58
58
  - [[-1, 29], 1, Concat, [1]] # cat head P5
59
59
  - [-1, 1, RepNCSPELAN4, [512, 1024, 512, 2]] # 41 (P5/32-large)
60
60
 
61
- # segment
62
61
  - [[35, 38, 41], 1, Segment, [nc, 32, 256]] # Segment (P3, P4, P5)
@@ -17,13 +17,13 @@ backbone:
17
17
  - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 7
18
18
  - [-1, 1, ADown, [1024]] # 8-P5/32
19
19
  - [-1, 1, RepNCSPELAN4, [1024, 512, 256, 2]] # 9
20
-
20
+
21
21
  - [1, 1, CBLinear, [[64]]] # 10
22
22
  - [3, 1, CBLinear, [[64, 128]]] # 11
23
23
  - [5, 1, CBLinear, [[64, 128, 256]]] # 12
24
24
  - [7, 1, CBLinear, [[64, 128, 256, 512]]] # 13
25
25
  - [9, 1, CBLinear, [[64, 128, 256, 512, 1024]]] # 14
26
-
26
+
27
27
  - [0, 1, Conv, [64, 3, 2]] # 15-P1/2
28
28
  - [[10, 11, 12, 13, 14, -1], 1, CBFuse, [[0, 0, 0, 0, 0]]] # 16
29
29
  - [-1, 1, Conv, [128, 3, 2]] # 17-P2/4
@@ -58,5 +58,4 @@ head:
58
58
  - [[-1, 29], 1, Concat, [1]] # cat head P5
59
59
  - [-1, 1, RepNCSPELAN4, [512, 1024, 512, 2]] # 41 (P5/32-large)
60
60
 
61
- # detect
62
61
  - [[35, 38, 41], 1, Detect, [nc]] # Detect(P3, P4, P5)
@@ -1,19 +1,14 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
3
  from .base import BaseDataset
4
- from .build import (
5
- build_dataloader,
6
- build_yolo_dataset,
7
- build_grounding,
8
- load_inference_source,
9
- )
4
+ from .build import build_dataloader, build_grounding, build_yolo_dataset, load_inference_source
10
5
  from .dataset import (
11
6
  ClassificationDataset,
7
+ GroundingDataset,
12
8
  SemanticDataset,
9
+ YOLOConcatDataset,
13
10
  YOLODataset,
14
11
  YOLOMultiModalDataset,
15
- GroundingDataset,
16
- YOLOConcatDataset,
17
12
  )
18
13
 
19
14
  __all__ = (
@@ -8,7 +8,7 @@ from typing import Tuple, Union
8
8
  import cv2
9
9
  import numpy as np
10
10
  import torch
11
- import torchvision.transforms as T
11
+ from PIL import Image
12
12
 
13
13
  from ultralytics.utils import LOGGER, colorstr
14
14
  from ultralytics.utils.checks import check_version
@@ -20,7 +20,7 @@ from .utils import polygons2masks, polygons2masks_overlap
20
20
 
21
21
  DEFAULT_MEAN = (0.0, 0.0, 0.0)
22
22
  DEFAULT_STD = (1.0, 1.0, 1.0)
23
- DEFAULT_CROP_FTACTION = 1.0
23
+ DEFAULT_CROP_FRACTION = 1.0
24
24
 
25
25
 
26
26
  # TODO: we might need a BaseTransform to make all these augments be compatible with both classification and semantic
@@ -167,8 +167,8 @@ class BaseMixTransform:
167
167
  text2id = {text: i for i, text in enumerate(mix_texts)}
168
168
 
169
169
  for label in [labels] + labels["mix_labels"]:
170
- for i, l in enumerate(label["cls"].squeeze(-1).tolist()):
171
- text = label["texts"][int(l)]
170
+ for i, cls in enumerate(label["cls"].squeeze(-1).tolist()):
171
+ text = label["texts"][int(cls)]
172
172
  label["cls"][i] = text2id[tuple(text)]
173
173
  label["texts"] = mix_texts
174
174
  return labels
@@ -1133,8 +1133,8 @@ def classify_transforms(
1133
1133
  size=224,
1134
1134
  mean=DEFAULT_MEAN,
1135
1135
  std=DEFAULT_STD,
1136
- interpolation: T.InterpolationMode = T.InterpolationMode.BILINEAR,
1137
- crop_fraction: float = DEFAULT_CROP_FTACTION,
1136
+ interpolation=Image.BILINEAR,
1137
+ crop_fraction: float = DEFAULT_CROP_FRACTION,
1138
1138
  ):
1139
1139
  """
1140
1140
  Classification transforms for evaluation/inference. Inspired by timm/data/transforms_factory.py.
@@ -1149,6 +1149,7 @@ def classify_transforms(
1149
1149
  Returns:
1150
1150
  (T.Compose): torchvision transforms
1151
1151
  """
1152
+ import torchvision.transforms as T # scope for faster 'import ultralytics'
1152
1153
 
1153
1154
  if isinstance(size, (tuple, list)):
1154
1155
  assert len(size) == 2
@@ -1157,12 +1158,12 @@ def classify_transforms(
1157
1158
  scale_size = math.floor(size / crop_fraction)
1158
1159
  scale_size = (scale_size, scale_size)
1159
1160
 
1160
- # aspect ratio is preserved, crops center within image, no borders are added, image is lost
1161
+ # Aspect ratio is preserved, crops center within image, no borders are added, image is lost
1161
1162
  if scale_size[0] == scale_size[1]:
1162
- # simple case, use torchvision built-in Resize w/ shortest edge mode (scalar size arg)
1163
+ # Simple case, use torchvision built-in Resize with the shortest edge mode (scalar size arg)
1163
1164
  tfl = [T.Resize(scale_size[0], interpolation=interpolation)]
1164
1165
  else:
1165
- # resize shortest edge to matching target dim for non-square target
1166
+ # Resize the shortest edge to matching target dim for non-square target
1166
1167
  tfl = [T.Resize(scale_size)]
1167
1168
  tfl += [T.CenterCrop(size)]
1168
1169
 
@@ -1192,7 +1193,7 @@ def classify_augmentations(
1192
1193
  hsv_v=0.4, # image HSV-Value augmentation (fraction)
1193
1194
  force_color_jitter=False,
1194
1195
  erasing=0.0,
1195
- interpolation: T.InterpolationMode = T.InterpolationMode.BILINEAR,
1196
+ interpolation=Image.BILINEAR,
1196
1197
  ):
1197
1198
  """
1198
1199
  Classification transforms with augmentation for training. Inspired by timm/data/transforms_factory.py.
@@ -1216,7 +1217,9 @@ def classify_augmentations(
1216
1217
  Returns:
1217
1218
  (T.Compose): torchvision transforms
1218
1219
  """
1219
- # Transforms to apply if albumentations not installed
1220
+ # Transforms to apply if Albumentations not installed
1221
+ import torchvision.transforms as T # scope for faster 'import ultralytics'
1222
+
1220
1223
  if not isinstance(size, int):
1221
1224
  raise TypeError(f"classify_transforms() size {size} must be integer, not (list, tuple)")
1222
1225
  scale = tuple(scale or (0.08, 1.0)) # default imagenet scale range
@@ -15,7 +15,7 @@ import psutil
15
15
  from torch.utils.data import Dataset
16
16
 
17
17
  from ultralytics.utils import DEFAULT_CFG, LOCAL_RANK, LOGGER, NUM_THREADS, TQDM
18
- from .utils import HELP_URL, FORMATS_HELP_MSG, IMG_FORMATS
18
+ from .utils import FORMATS_HELP_MSG, HELP_URL, IMG_FORMATS
19
19
 
20
20
 
21
21
  class BaseDataset(Dataset):
@@ -22,7 +22,7 @@ from ultralytics.data.loaders import (
22
22
  from ultralytics.data.utils import IMG_FORMATS, VID_FORMATS
23
23
  from ultralytics.utils import RANK, colorstr
24
24
  from ultralytics.utils.checks import check_file
25
- from .dataset import YOLODataset, YOLOMultiModalDataset, GroundingDataset
25
+ from .dataset import GroundingDataset, YOLODataset, YOLOMultiModalDataset
26
26
  from .utils import PIN_MEMORY
27
27
 
28
28
 
@@ -519,11 +519,12 @@ def yolo_bbox2segment(im_dir, save_dir=None, sam_model="sam_b.pt"):
519
519
  ├─ ..
520
520
  └─ NNN.txt
521
521
  """
522
+ from tqdm import tqdm
523
+
524
+ from ultralytics import SAM
522
525
  from ultralytics.data import YOLODataset
523
- from ultralytics.utils.ops import xywh2xyxy
524
526
  from ultralytics.utils import LOGGER
525
- from ultralytics import SAM
526
- from tqdm import tqdm
527
+ from ultralytics.utils.ops import xywh2xyxy
527
528
 
528
529
  # NOTE: add placeholder to pass class index check
529
530
  dataset = YOLODataset(im_dir, data=dict(names=list(range(1000))))