ultralytics 8.3.109__tar.gz → 8.3.111__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.
Files changed (268) hide show
  1. {ultralytics-8.3.109/ultralytics.egg-info → ultralytics-8.3.111}/PKG-INFO +1 -1
  2. {ultralytics-8.3.109 → ultralytics-8.3.111}/pyproject.toml +1 -1
  3. {ultralytics-8.3.109 → ultralytics-8.3.111}/tests/test_integrations.py +8 -0
  4. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/__init__.py +1 -1
  5. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/data/augment.py +3 -0
  6. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/data/base.py +2 -1
  7. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/data/dataset.py +2 -0
  8. ultralytics-8.3.111/ultralytics/data/scripts/download_weights.sh +18 -0
  9. ultralytics-8.3.111/ultralytics/data/scripts/get_coco.sh +61 -0
  10. ultralytics-8.3.111/ultralytics/data/scripts/get_coco128.sh +18 -0
  11. ultralytics-8.3.111/ultralytics/data/scripts/get_imagenet.sh +52 -0
  12. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/data/utils.py +81 -1
  13. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/engine/exporter.py +2 -2
  14. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/autobackend.py +14 -15
  15. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/modules/block.py +2 -2
  16. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/modules/conv.py +1 -1
  17. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/modules/head.py +4 -0
  18. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/tasks.py +2 -0
  19. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/parking_management.py +1 -1
  20. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/__init__.py +1 -1
  21. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/dist.py +1 -1
  22. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/metrics.py +1 -1
  23. {ultralytics-8.3.109 → ultralytics-8.3.111/ultralytics.egg-info}/PKG-INFO +1 -1
  24. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics.egg-info/SOURCES.txt +4 -0
  25. {ultralytics-8.3.109 → ultralytics-8.3.111}/LICENSE +0 -0
  26. {ultralytics-8.3.109 → ultralytics-8.3.111}/README.md +0 -0
  27. {ultralytics-8.3.109 → ultralytics-8.3.111}/setup.cfg +0 -0
  28. {ultralytics-8.3.109 → ultralytics-8.3.111}/tests/test_cli.py +0 -0
  29. {ultralytics-8.3.109 → ultralytics-8.3.111}/tests/test_cuda.py +0 -0
  30. {ultralytics-8.3.109 → ultralytics-8.3.111}/tests/test_engine.py +0 -0
  31. {ultralytics-8.3.109 → ultralytics-8.3.111}/tests/test_exports.py +0 -0
  32. {ultralytics-8.3.109 → ultralytics-8.3.111}/tests/test_python.py +0 -0
  33. {ultralytics-8.3.109 → ultralytics-8.3.111}/tests/test_solutions.py +0 -0
  34. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/assets/bus.jpg +0 -0
  35. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/assets/zidane.jpg +0 -0
  36. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/__init__.py +0 -0
  37. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  38. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  39. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  40. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  41. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  42. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  43. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  44. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  45. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  46. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  47. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  48. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  49. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  50. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/coco.yaml +0 -0
  51. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  52. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  53. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  54. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  55. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  56. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  57. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  58. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  59. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  60. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  61. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  62. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  63. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  64. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/signature.yaml +0 -0
  65. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  66. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/datasets/xView.yaml +0 -0
  67. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/default.yaml +0 -0
  68. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  69. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  70. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  71. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  72. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  73. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  74. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  75. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  76. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  77. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  78. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  79. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  80. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  81. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  82. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  83. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  84. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  85. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  86. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  87. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  88. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  89. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  90. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  91. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  92. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  93. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  94. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  95. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  96. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  97. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  98. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  99. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  100. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  101. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  102. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  103. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  104. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  105. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  106. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  107. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  108. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  109. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  110. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  111. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  112. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  113. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  114. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  115. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  116. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  117. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  118. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  119. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  120. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  121. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  122. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  123. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/solutions/default.yaml +0 -0
  124. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  125. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  126. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/data/__init__.py +0 -0
  127. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/data/annotator.py +0 -0
  128. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/data/build.py +0 -0
  129. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/data/converter.py +0 -0
  130. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/data/loaders.py +0 -0
  131. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/data/split_dota.py +0 -0
  132. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/engine/__init__.py +0 -0
  133. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/engine/model.py +0 -0
  134. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/engine/predictor.py +0 -0
  135. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/engine/results.py +0 -0
  136. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/engine/trainer.py +0 -0
  137. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/engine/tuner.py +0 -0
  138. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/engine/validator.py +0 -0
  139. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/hub/__init__.py +0 -0
  140. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/hub/auth.py +0 -0
  141. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/hub/google/__init__.py +0 -0
  142. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/hub/session.py +0 -0
  143. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/hub/utils.py +0 -0
  144. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/__init__.py +0 -0
  145. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/fastsam/__init__.py +0 -0
  146. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/fastsam/model.py +0 -0
  147. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/fastsam/predict.py +0 -0
  148. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/fastsam/utils.py +0 -0
  149. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/fastsam/val.py +0 -0
  150. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/nas/__init__.py +0 -0
  151. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/nas/model.py +0 -0
  152. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/nas/predict.py +0 -0
  153. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/nas/val.py +0 -0
  154. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/rtdetr/__init__.py +0 -0
  155. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/rtdetr/model.py +0 -0
  156. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/rtdetr/predict.py +0 -0
  157. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/rtdetr/train.py +0 -0
  158. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/rtdetr/val.py +0 -0
  159. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/__init__.py +0 -0
  160. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/amg.py +0 -0
  161. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/build.py +0 -0
  162. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/model.py +0 -0
  163. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/modules/__init__.py +0 -0
  164. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/modules/blocks.py +0 -0
  165. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/modules/decoders.py +0 -0
  166. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/modules/encoders.py +0 -0
  167. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  168. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/modules/sam.py +0 -0
  169. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  170. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/modules/transformer.py +0 -0
  171. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/modules/utils.py +0 -0
  172. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/sam/predict.py +0 -0
  173. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/utils/__init__.py +0 -0
  174. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/utils/loss.py +0 -0
  175. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/utils/ops.py +0 -0
  176. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/__init__.py +0 -0
  177. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/classify/__init__.py +0 -0
  178. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/classify/predict.py +0 -0
  179. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/classify/train.py +0 -0
  180. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/classify/val.py +0 -0
  181. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/detect/__init__.py +0 -0
  182. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/detect/predict.py +0 -0
  183. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/detect/train.py +0 -0
  184. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/detect/val.py +0 -0
  185. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/model.py +0 -0
  186. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/obb/__init__.py +0 -0
  187. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/obb/predict.py +0 -0
  188. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/obb/train.py +0 -0
  189. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/obb/val.py +0 -0
  190. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/pose/__init__.py +0 -0
  191. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/pose/predict.py +0 -0
  192. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/pose/train.py +0 -0
  193. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/pose/val.py +0 -0
  194. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/segment/__init__.py +0 -0
  195. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/segment/predict.py +0 -0
  196. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/segment/train.py +0 -0
  197. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/segment/val.py +0 -0
  198. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/world/__init__.py +0 -0
  199. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/world/train.py +0 -0
  200. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/world/train_world.py +0 -0
  201. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  202. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  203. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/yoloe/train.py +0 -0
  204. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  205. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/models/yolo/yoloe/val.py +0 -0
  206. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/__init__.py +0 -0
  207. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/modules/__init__.py +0 -0
  208. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/modules/activation.py +0 -0
  209. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/modules/transformer.py +0 -0
  210. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/modules/utils.py +0 -0
  211. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/nn/text_model.py +0 -0
  212. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/__init__.py +0 -0
  213. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/ai_gym.py +0 -0
  214. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/analytics.py +0 -0
  215. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/distance_calculation.py +0 -0
  216. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/heatmap.py +0 -0
  217. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/instance_segmentation.py +0 -0
  218. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/object_blurrer.py +0 -0
  219. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/object_counter.py +0 -0
  220. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/object_cropper.py +0 -0
  221. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/queue_management.py +0 -0
  222. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/region_counter.py +0 -0
  223. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/security_alarm.py +0 -0
  224. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/solutions.py +0 -0
  225. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/speed_estimation.py +0 -0
  226. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/streamlit_inference.py +0 -0
  227. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/trackzone.py +0 -0
  228. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/solutions/vision_eye.py +0 -0
  229. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/trackers/__init__.py +0 -0
  230. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/trackers/basetrack.py +0 -0
  231. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/trackers/bot_sort.py +0 -0
  232. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/trackers/byte_tracker.py +0 -0
  233. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/trackers/track.py +0 -0
  234. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/trackers/utils/__init__.py +0 -0
  235. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/trackers/utils/gmc.py +0 -0
  236. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  237. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/trackers/utils/matching.py +0 -0
  238. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/autobatch.py +0 -0
  239. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/benchmarks.py +0 -0
  240. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/__init__.py +0 -0
  241. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/base.py +0 -0
  242. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/clearml.py +0 -0
  243. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/comet.py +0 -0
  244. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/dvc.py +0 -0
  245. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/hub.py +0 -0
  246. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/mlflow.py +0 -0
  247. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/neptune.py +0 -0
  248. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/raytune.py +0 -0
  249. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  250. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/callbacks/wb.py +0 -0
  251. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/checks.py +0 -0
  252. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/downloads.py +0 -0
  253. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/errors.py +0 -0
  254. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/export.py +0 -0
  255. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/files.py +0 -0
  256. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/instance.py +0 -0
  257. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/loss.py +0 -0
  258. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/ops.py +0 -0
  259. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/patches.py +0 -0
  260. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/plotting.py +0 -0
  261. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/tal.py +0 -0
  262. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/torch_utils.py +0 -0
  263. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/triton.py +0 -0
  264. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics/utils/tuner.py +0 -0
  265. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics.egg-info/dependency_links.txt +0 -0
  266. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics.egg-info/entry_points.txt +0 -0
  267. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics.egg-info/requires.txt +0 -0
  268. {ultralytics-8.3.109 → ultralytics-8.3.111}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.109
3
+ Version: 8.3.111
4
4
  Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -134,7 +134,7 @@ ultralytics = "ultralytics.cfg:entrypoint"
134
134
  # Tools settings -------------------------------------------------------------------------------------------------------
135
135
  [tool.setuptools] # configuration specific to the `setuptools` build backend.
136
136
  packages = { find = { where = ["."], include = ["ultralytics", "ultralytics.*"] } }
137
- package-data = { "ultralytics" = ["**/*.yaml"], "ultralytics.assets" = ["*.jpg"] }
137
+ package-data = { "ultralytics" = ["**/*.yaml", "**/*.sh"], "ultralytics.assets" = ["*.jpg"] }
138
138
 
139
139
  [tool.setuptools.dynamic]
140
140
  version = { attr = "ultralytics.__version__" }
@@ -14,6 +14,14 @@ from ultralytics.utils import DATASETS_DIR, SETTINGS
14
14
  from ultralytics.utils.checks import check_requirements
15
15
 
16
16
 
17
+ @pytest.mark.slow
18
+ def test_tensorboard():
19
+ """Test training with MLflow tracking enabled (see https://mlflow.org/ for details)."""
20
+ SETTINGS["tensorboard"] = True
21
+ YOLO("yolo11n-cls.yaml").train(data="imagenet10", imgsz=32, epochs=3, plots=False, device="cpu")
22
+ SETTINGS["tensorboard"] = False
23
+
24
+
17
25
  @pytest.mark.skipif(not check_requirements("ray", install=False), reason="ray[tune] not installed")
18
26
  def test_model_ray_tune():
19
27
  """Tune YOLO model using Ray for hyperparameter optimization."""
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.109"
3
+ __version__ = "8.3.111"
4
4
 
5
5
  import os
6
6
 
@@ -1796,6 +1796,9 @@ class Albumentations:
1796
1796
  prefix = colorstr("albumentations: ")
1797
1797
 
1798
1798
  try:
1799
+ import os
1800
+
1801
+ os.environ["NO_ALBUMENTATIONS_UPDATE"] = "1" # suppress Albumentations upgrade message
1799
1802
  import albumentations as A
1800
1803
 
1801
1804
  check_version(A.__version__, "1.0.3", hard=True) # version requirement
@@ -14,7 +14,7 @@ import numpy as np
14
14
  import psutil
15
15
  from torch.utils.data import Dataset
16
16
 
17
- from ultralytics.data.utils import FORMATS_HELP_MSG, HELP_URL, IMG_FORMATS
17
+ from ultralytics.data.utils import FORMATS_HELP_MSG, HELP_URL, IMG_FORMATS, check_file_speeds
18
18
  from ultralytics.utils import DEFAULT_CFG, LOCAL_RANK, LOGGER, NUM_THREADS, TQDM
19
19
 
20
20
 
@@ -172,6 +172,7 @@ class BaseDataset(Dataset):
172
172
  raise FileNotFoundError(f"{self.prefix}Error loading data from {img_path}\n{HELP_URL}") from e
173
173
  if self.fraction < 1:
174
174
  im_files = im_files[: round(len(im_files) * self.fraction)] # retain a fraction of the dataset
175
+ check_file_speeds(im_files, prefix=self.prefix) # check image read speeds
175
176
  return im_files
176
177
 
177
178
  def update_labels(self, include_class: Optional[list]):
@@ -31,6 +31,7 @@ from .converter import merge_multi_segment
31
31
  from .utils import (
32
32
  HELP_URL,
33
33
  LOGGER,
34
+ check_file_speeds,
34
35
  get_hash,
35
36
  img2label_paths,
36
37
  load_dataset_cache_file,
@@ -794,6 +795,7 @@ class ClassificationDataset:
794
795
  path = Path(self.root).with_suffix(".cache") # *.cache file path
795
796
 
796
797
  try:
798
+ check_file_speeds([file for (file, _) in self.samples[:5]], prefix=self.prefix) # check image read speeds
797
799
  cache = load_dataset_cache_file(path) # attempt to load a *.cache file
798
800
  assert cache["version"] == DATASET_CACHE_VERSION # matches current version
799
801
  assert cache["hash"] == get_hash([x[0] for x in self.samples]) # identical hash
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
3
+
4
+ # Download latest models from https://github.com/ultralytics/assets/releases
5
+ # Example usage: bash ultralytics/data/scripts/download_weights.sh
6
+ # parent
7
+ # └── weights
8
+ # ├── yolov8n.pt ← downloads here
9
+ # ├── yolov8s.pt
10
+ # └── ...
11
+
12
+ python << EOF
13
+ from ultralytics.utils.downloads import attempt_download_asset
14
+
15
+ assets = [f"yolov8{size}{suffix}.pt" for size in "nsmlx" for suffix in ("", "-cls", "-seg", "-pose")]
16
+ for x in assets:
17
+ attempt_download_asset(f"weights/{x}")
18
+ EOF
@@ -0,0 +1,61 @@
1
+ #!/bin/bash
2
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
3
+
4
+ # Download COCO 2017 dataset https://cocodataset.org
5
+ # Example usage: bash data/scripts/get_coco.sh
6
+ # parent
7
+ # ├── ultralytics
8
+ # └── datasets
9
+ # └── coco ← downloads here
10
+
11
+ # Arguments (optional) Usage: bash data/scripts/get_coco.sh --train --val --test --segments
12
+ if [ "$#" -gt 0 ]; then
13
+ for opt in "$@"; do
14
+ case "${opt}" in
15
+ --train) train=true ;;
16
+ --val) val=true ;;
17
+ --test) test=true ;;
18
+ --segments) segments=true ;;
19
+ --sama) sama=true ;;
20
+ esac
21
+ done
22
+ else
23
+ train=true
24
+ val=true
25
+ test=false
26
+ segments=false
27
+ sama=false
28
+ fi
29
+
30
+ # Download/unzip labels
31
+ d='../datasets' # unzip directory
32
+ url=https://github.com/ultralytics/assets/releases/download/v0.0.0/
33
+ if [ "$segments" == "true" ]; then
34
+ f='coco2017labels-segments.zip' # 169 MB
35
+ elif [ "$sama" == "true" ]; then
36
+ f='coco2017labels-segments-sama.zip' # 199 MB https://www.sama.com/sama-coco-dataset/
37
+ else
38
+ f='coco2017labels.zip' # 46 MB
39
+ fi
40
+ echo 'Downloading' $url$f ' ...'
41
+ curl -L $url$f -o $f -# && unzip -q $f -d $d && rm $f &
42
+
43
+ # Download/unzip images
44
+ d='../datasets/coco/images' # unzip directory
45
+ url=http://images.cocodataset.org/zips/
46
+ if [ "$train" == "true" ]; then
47
+ f='train2017.zip' # 19G, 118k images
48
+ echo 'Downloading' $url$f '...'
49
+ curl -L $url$f -o $f -# && unzip -q $f -d $d && rm $f &
50
+ fi
51
+ if [ "$val" == "true" ]; then
52
+ f='val2017.zip' # 1G, 5k images
53
+ echo 'Downloading' $url$f '...'
54
+ curl -L $url$f -o $f -# && unzip -q $f -d $d && rm $f &
55
+ fi
56
+ if [ "$test" == "true" ]; then
57
+ f='test2017.zip' # 7G, 41k images (optional)
58
+ echo 'Downloading' $url$f '...'
59
+ curl -L $url$f -o $f -# && unzip -q $f -d $d && rm $f &
60
+ fi
61
+ wait # finish background tasks
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
3
+
4
+ # Download COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017)
5
+ # Example usage: bash data/scripts/get_coco128.sh
6
+ # parent
7
+ # ├── ultralytics
8
+ # └── datasets
9
+ # └── coco128 ← downloads here
10
+
11
+ # Download/unzip images and labels
12
+ d='../datasets' # unzip directory
13
+ url=https://github.com/ultralytics/assets/releases/download/v0.0.0/
14
+ f='coco128.zip' # or 'coco128-segments.zip', 68 MB
15
+ echo 'Downloading' $url$f ' ...'
16
+ curl -L $url$f -o $f -# && unzip -q $f -d $d && rm $f &
17
+
18
+ wait # finish background tasks
@@ -0,0 +1,52 @@
1
+ #!/bin/bash
2
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
3
+
4
+ # Download ILSVRC2012 ImageNet dataset https://image-net.org
5
+ # Example usage: bash data/scripts/get_imagenet.sh
6
+ # parent
7
+ # ├── ultralytics
8
+ # └── datasets
9
+ # └── imagenet ← downloads here
10
+
11
+ # Arguments (optional) Usage: bash data/scripts/get_imagenet.sh --train --val
12
+ if [ "$#" -gt 0 ]; then
13
+ for opt in "$@"; do
14
+ case "${opt}" in
15
+ --train) train=true ;;
16
+ --val) val=true ;;
17
+ esac
18
+ done
19
+ else
20
+ train=true
21
+ val=true
22
+ fi
23
+
24
+ # Make dir
25
+ d='../datasets/imagenet' # unzip directory
26
+ mkdir -p $d && cd $d
27
+
28
+ # Download/unzip train
29
+ if [ "$train" == "true" ]; then
30
+ wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_train.tar # download 138G, 1281167 images
31
+ mkdir train && mv ILSVRC2012_img_train.tar train/ && cd train
32
+ tar -xf ILSVRC2012_img_train.tar && rm -f ILSVRC2012_img_train.tar
33
+ find . -name "*.tar" | while read NAME; do
34
+ mkdir -p "${NAME%.tar}"
35
+ tar -xf "${NAME}" -C "${NAME%.tar}"
36
+ rm -f "${NAME}"
37
+ done
38
+ cd ..
39
+ fi
40
+
41
+ # Download/unzip val
42
+ if [ "$val" == "true" ]; then
43
+ wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_val.tar # download 6.3G, 50000 images
44
+ mkdir val && mv ILSVRC2012_img_val.tar val/ && cd val && tar -xf ILSVRC2012_img_val.tar
45
+ wget -qO- https://raw.githubusercontent.com/soumith/imagenetloader.torch/master/valprep.sh | bash # move into subdirs
46
+ fi
47
+
48
+ # Delete corrupted image (optional: PNG under JPEG name that may cause dataloaders to fail)
49
+ # rm train/n04266014/n04266014_10835.JPEG
50
+
51
+ # TFRecords (optional)
52
+ # wget https://raw.githubusercontent.com/tensorflow/models/master/research/slim/datasets/imagenet_lsvrc_2015_synsets.txt
@@ -47,9 +47,89 @@ def img2label_paths(img_paths):
47
47
  return [sb.join(x.rsplit(sa, 1)).rsplit(".", 1)[0] + ".txt" for x in img_paths]
48
48
 
49
49
 
50
+ def check_file_speeds(files, threshold_ms=10, max_files=5, prefix=""):
51
+ """
52
+ Check dataset file access speed and provide performance feedback.
53
+
54
+ This function tests the access speed of dataset files by measuring ping (stat call) time and read speed.
55
+ It samples up to 5 files from the provided list and warns if access times exceed the threshold.
56
+
57
+ Args:
58
+ files (list): List of file paths to check for access speed.
59
+ threshold_ms (float, optional): Threshold in milliseconds for ping time warnings.
60
+ max_files (int, optional): The maximum number of files to check.
61
+ prefix (str, optional): Prefix string to add to log messages.
62
+
63
+ Examples:
64
+ >>> from pathlib import Path
65
+ >>> image_files = list(Path("dataset/images").glob("*.jpg"))
66
+ >>> check_file_speeds(image_files, threshold_ms=15)
67
+ """
68
+ if not files or len(files) == 0:
69
+ LOGGER.warning(f"{prefix}WARNING ⚠️ Image speed checks: No files to check")
70
+ return
71
+
72
+ # Sample files (max 5)
73
+ files = random.sample(files, min(max_files, len(files)))
74
+
75
+ # Test ping (stat time)
76
+ ping_times = []
77
+ file_sizes = []
78
+ read_speeds = []
79
+
80
+ for f in files:
81
+ try:
82
+ # Measure ping (stat call)
83
+ start = time.perf_counter()
84
+ file_size = os.stat(f).st_size
85
+ ping_times.append((time.perf_counter() - start) * 1000) # ms
86
+ file_sizes.append(file_size)
87
+
88
+ # Measure read speed
89
+ start = time.perf_counter()
90
+ with open(f, "rb") as file_obj:
91
+ _ = file_obj.read()
92
+ read_time = time.perf_counter() - start
93
+ if read_time > 0: # Avoid division by zero
94
+ read_speeds.append(file_size / (1 << 20) / read_time) # MB/s
95
+ except Exception:
96
+ pass
97
+
98
+ if not ping_times:
99
+ LOGGER.warning(f"{prefix}WARNING ⚠️ Image speed checks: failed to access files")
100
+ return
101
+
102
+ # Calculate stats with uncertainties
103
+ avg_ping = np.mean(ping_times)
104
+ std_ping = np.std(ping_times, ddof=1) if len(ping_times) > 1 else 0
105
+ size_msg = f", size: {np.mean(file_sizes) / (1 << 10):.1f} KB"
106
+ ping_msg = f"ping: {avg_ping:.1f}±{std_ping:.1f} ms"
107
+
108
+ if read_speeds:
109
+ avg_speed = np.mean(read_speeds)
110
+ std_speed = np.std(read_speeds, ddof=1) if len(read_speeds) > 1 else 0
111
+ speed_msg = f", read: {avg_speed:.1f}±{std_speed:.1f} MB/s"
112
+ else:
113
+ speed_msg = ""
114
+
115
+ if avg_ping < threshold_ms:
116
+ LOGGER.info(f"{prefix}Fast image access ✅ ({ping_msg}{speed_msg}{size_msg})")
117
+ else:
118
+ LOGGER.warning(
119
+ f"{prefix}WARNING ⚠️ Slow image access detected ({ping_msg}{speed_msg}{size_msg}). "
120
+ f"Use local storage instead of remote/mounted storage for better performance. "
121
+ f"See https://docs.ultralytics.com/guides/model-training-tips/"
122
+ )
123
+
124
+
50
125
  def get_hash(paths):
51
126
  """Returns a single hash value of a list of paths (files or dirs)."""
52
- size = sum(os.path.getsize(p) for p in paths if os.path.exists(p)) # sizes
127
+ size = 0
128
+ for p in paths:
129
+ try:
130
+ size += os.stat(p).st_size
131
+ except OSError:
132
+ continue
53
133
  h = hashlib.sha256(str(size).encode()) # hash sizes
54
134
  h.update("".join(paths).encode()) # hash paths
55
135
  return h.hexdigest() # return hash
@@ -1000,7 +1000,7 @@ class Exporter:
1000
1000
 
1001
1001
  @try_export
1002
1002
  def export_pb(self, keras_model, prefix=colorstr("TensorFlow GraphDef:")):
1003
- """YOLO TensorFlow GraphDef *.pb export https://github.com/leimao/Frozen_Graph_TensorFlow."""
1003
+ """YOLO TensorFlow GraphDef *.pb export https://github.com/leimao/Frozen-Graph-TensorFlow."""
1004
1004
  import tensorflow as tf # noqa
1005
1005
  from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2 # noqa
1006
1006
 
@@ -1281,7 +1281,7 @@ class Exporter:
1281
1281
  return f, None
1282
1282
 
1283
1283
  def _add_tflite_metadata(self, file):
1284
- """Add metadata to *.tflite models per https://www.tensorflow.org/lite/models/convert/metadata."""
1284
+ """Add metadata to *.tflite models per https://ai.google.dev/edge/litert/models/metadata."""
1285
1285
  import flatbuffers
1286
1286
 
1287
1287
  try:
@@ -110,14 +110,14 @@ class AutoBackend(nn.Module):
110
110
  Initialize the AutoBackend for inference.
111
111
 
112
112
  Args:
113
- weights (str | torch.nn.Module): Path to the model weights file or a module instance. Defaults to 'yolo11n.pt'.
114
- device (torch.device): Device to run the model on. Defaults to CPU.
115
- dnn (bool): Use OpenCV DNN module for ONNX inference. Defaults to False.
113
+ weights (str | List[str] | torch.nn.Module): Path to the model weights file or a module instance.
114
+ device (torch.device): Device to run the model on.
115
+ dnn (bool): Use OpenCV DNN module for ONNX inference.
116
116
  data (str | Path | optional): Path to the additional data.yaml file containing class names.
117
- fp16 (bool): Enable half-precision inference. Supported only on specific backends. Defaults to False.
117
+ fp16 (bool): Enable half-precision inference. Supported only on specific backends.
118
118
  batch (int): Batch-size to assume for inference.
119
- fuse (bool): Fuse Conv2D + BatchNorm layers for optimization. Defaults to True.
120
- verbose (bool): Enable verbose logging. Defaults to True.
119
+ fuse (bool): Fuse Conv2D + BatchNorm layers for optimization.
120
+ verbose (bool): Enable verbose logging.
121
121
  """
122
122
  super().__init__()
123
123
  w = str(weights[0] if isinstance(weights, list) else weights)
@@ -288,8 +288,8 @@ class AutoBackend(nn.Module):
288
288
  # fix error: `np.bool` was a deprecated alias for the builtin `bool` for JetPack 4 with Python <= 3.8.0
289
289
  check_requirements("numpy==1.23.5")
290
290
 
291
- try:
292
- import tensorrt as trt # noqa https://developer.nvidia.com/nvidia-tensorrt-download
291
+ try: # https://developer.nvidia.com/nvidia-tensorrt-download
292
+ import tensorrt as trt # noqa
293
293
  except ImportError:
294
294
  if LINUX:
295
295
  check_requirements("tensorrt>7.0.0,!=10.1.0")
@@ -397,7 +397,7 @@ class AutoBackend(nn.Module):
397
397
  pass
398
398
 
399
399
  # TFLite or TFLite Edge TPU
400
- elif tflite or edgetpu: # https://www.tensorflow.org/lite/guide/python#install_tensorflow_lite_for_python
400
+ elif tflite or edgetpu: # https://ai.google.dev/edge/litert/microcontrollers/python
401
401
  try: # https://coral.ai/docs/edgetpu/tflite-python/#update-existing-tf-lite-code-for-the-edge-tpu
402
402
  from tflite_runtime.interpreter import Interpreter, load_delegate
403
403
  except ImportError:
@@ -562,9 +562,9 @@ class AutoBackend(nn.Module):
562
562
 
563
563
  Args:
564
564
  im (torch.Tensor): The image tensor to perform inference on.
565
- augment (bool): Whether to perform data augmentation during inference. Defaults to False.
566
- visualize (bool): Whether to visualize the output predictions. Defaults to False.
567
- embed (list, optional): A list of feature vectors/embeddings to return.
565
+ augment (bool): Whether to perform data augmentation during inference.
566
+ visualize (bool): Whether to visualize the output predictions.
567
+ embed (list | None): A list of feature vectors/embeddings to return.
568
568
  **kwargs (Any): Additional keyword arguments for model configuration.
569
569
 
570
570
  Returns:
@@ -799,11 +799,10 @@ class AutoBackend(nn.Module):
799
799
  @staticmethod
800
800
  def _model_type(p="path/to/model.pt"):
801
801
  """
802
- Takes a path to a model file and returns the model type. Possibles types are pt, jit, onnx, xml, engine, coreml,
803
- saved_model, pb, tflite, edgetpu, tfjs, ncnn, mnn, imx or paddle.
802
+ Takes a path to a model file and returns the model type.
804
803
 
805
804
  Args:
806
- p (str): Path to the model file. Defaults to path/to/model.pt
805
+ p (str): Path to the model file.
807
806
 
808
807
  Returns:
809
808
  (List[bool]): List of booleans indicating the model type.
@@ -422,7 +422,7 @@ class C3Ghost(C3):
422
422
 
423
423
 
424
424
  class GhostBottleneck(nn.Module):
425
- """Ghost Bottleneck https://github.com/huawei-noah/ghostnet."""
425
+ """Ghost Bottleneck https://github.com/huawei-noah/Efficient-AI-Backbones."""
426
426
 
427
427
  def __init__(self, c1, c2, k=3, s=1):
428
428
  """
@@ -603,7 +603,7 @@ class MaxSigmoidAttnBlock(nn.Module):
603
603
  bs, _, h, w = x.shape
604
604
 
605
605
  guide = self.gl(guide)
606
- guide = guide.view(bs, -1, self.nh, self.hc)
606
+ guide = guide.view(bs, guide.shape[1], self.nh, self.hc)
607
607
  embed = self.ec(x) if self.ec is not None else x
608
608
  embed = embed.view(bs, self.nh, self.hc, h, w)
609
609
 
@@ -337,7 +337,7 @@ class GhostConv(nn.Module):
337
337
  cv2 (Conv): Cheap operation convolution.
338
338
 
339
339
  References:
340
- https://github.com/huawei-noah/ghostnet
340
+ https://github.com/huawei-noah/Efficient-AI-Backbones
341
341
  """
342
342
 
343
343
  def __init__(self, c1, c2, k=1, s=1, g=1, act=True):
@@ -872,3 +872,7 @@ class v10Detect(Detect):
872
872
  for x in ch
873
873
  )
874
874
  self.one2one_cv3 = copy.deepcopy(self.cv3)
875
+
876
+ def fuse(self):
877
+ """Removes the one2many head."""
878
+ self.cv2 = self.cv3 = nn.ModuleList([nn.Identity()] * self.nl)
@@ -221,6 +221,8 @@ class BaseModel(torch.nn.Module):
221
221
  if isinstance(m, RepVGGDW):
222
222
  m.fuse()
223
223
  m.forward = m.forward_fuse
224
+ if isinstance(m, v10Detect):
225
+ m.fuse() # remove one2many head
224
226
  self.info(verbose=verbose)
225
227
 
226
228
  return self
@@ -58,7 +58,7 @@ class ParkingPtsSelection:
58
58
  "Linux": "sudo apt install python3-tk (Debian/Ubuntu) | sudo dnf install python3-tkinter (Fedora) | "
59
59
  "sudo pacman -S tk (Arch)",
60
60
  "Windows": "reinstall Python and enable the checkbox `tcl/tk and IDLE` on **Optional Features** during installation",
61
- "Darwin": "reinstall Python from https://www.python.org/downloads/mac-osx/ or `brew install python-tk`",
61
+ "Darwin": "reinstall Python from https://www.python.org/downloads/macos/ or `brew install python-tk`",
62
62
  }.get(platform.system(), "Unknown OS. Check your Python installation.")
63
63
 
64
64
  LOGGER.warning(f"WARNING ⚠️ Tkinter is not configured or supported. Potential fix: {install_cmd}")
@@ -1243,7 +1243,7 @@ class SettingsManager(JSONDict):
1243
1243
  "mlflow": True, # MLflow integration
1244
1244
  "neptune": True, # Neptune integration
1245
1245
  "raytune": True, # Ray Tune integration
1246
- "tensorboard": True, # TensorBoard logging
1246
+ "tensorboard": False, # TensorBoard logging
1247
1247
  "wandb": False, # Weights & Biases logging
1248
1248
  "vscode_msg": True, # VSCode messaging
1249
1249
  }
@@ -87,7 +87,7 @@ def generate_ddp_command(world_size, trainer):
87
87
  cmd (List[str]): The command to execute for distributed training.
88
88
  file (str): Path to the temporary file created for DDP training.
89
89
  """
90
- import __main__ # noqa local import to avoid https://github.com/Lightning-AI/lightning/issues/15218
90
+ import __main__ # noqa local import to avoid https://github.com/Lightning-AI/pytorch-lightning/issues/15218
91
91
 
92
92
  if not trainer.resume:
93
93
  shutil.rmtree(trainer.save_dir) # remove the save_dir
@@ -52,7 +52,7 @@ def bbox_ioa(box1, box2, iou=False, eps=1e-7):
52
52
  def box_iou(box1, box2, eps=1e-7):
53
53
  """
54
54
  Calculate intersection-over-union (IoU) of boxes. Both sets of boxes are expected to be in (x1, y1, x2, y2) format.
55
- Based on https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py.
55
+ Based on https://github.com/pytorch/vision/blob/main/torchvision/ops/boxes.py.
56
56
 
57
57
  Args:
58
58
  box1 (torch.Tensor): A tensor of shape (N, 4) representing N bounding boxes.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.109
3
+ Version: 8.3.111
4
4
  Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -117,6 +117,10 @@ ultralytics/data/dataset.py
117
117
  ultralytics/data/loaders.py
118
118
  ultralytics/data/split_dota.py
119
119
  ultralytics/data/utils.py
120
+ ultralytics/data/scripts/download_weights.sh
121
+ ultralytics/data/scripts/get_coco.sh
122
+ ultralytics/data/scripts/get_coco128.sh
123
+ ultralytics/data/scripts/get_imagenet.sh
120
124
  ultralytics/engine/__init__.py
121
125
  ultralytics/engine/exporter.py
122
126
  ultralytics/engine/model.py
File without changes
File without changes
File without changes