ultralytics-opencv-headless 8.4.8__tar.gz → 8.4.10__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 (316) hide show
  1. {ultralytics_opencv_headless-8.4.8/ultralytics_opencv_headless.egg-info → ultralytics_opencv_headless-8.4.10}/PKG-INFO +3 -3
  2. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/pyproject.toml +2 -2
  3. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/tests/test_cuda.py +3 -2
  4. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/tests/test_python.py +1 -2
  5. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/__init__.py +1 -1
  6. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/augment.py +2 -2
  7. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/engine/exporter.py +12 -14
  8. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/hub/session.py +3 -5
  9. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/predict.py +3 -2
  10. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/detect/train.py +1 -1
  11. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/model.py +1 -0
  12. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/autobackend.py +22 -6
  13. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/__init__.py +1 -1
  14. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/checks.py +29 -3
  15. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/dist.py +9 -3
  16. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/instance.py +14 -1
  17. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/loss.py +0 -4
  18. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/torch_utils.py +1 -0
  19. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10/ultralytics_opencv_headless.egg-info}/PKG-INFO +3 -3
  20. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics_opencv_headless.egg-info/requires.txt +2 -2
  21. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/LICENSE +0 -0
  22. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/README.md +0 -0
  23. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/setup.cfg +0 -0
  24. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/tests/__init__.py +0 -0
  25. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/tests/conftest.py +0 -0
  26. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/tests/test_cli.py +0 -0
  27. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/tests/test_engine.py +0 -0
  28. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/tests/test_exports.py +0 -0
  29. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/tests/test_integrations.py +0 -0
  30. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/tests/test_solutions.py +0 -0
  31. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/assets/bus.jpg +0 -0
  32. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/assets/zidane.jpg +0 -0
  33. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/__init__.py +0 -0
  34. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  35. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  36. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  37. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  38. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  39. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  40. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  41. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  42. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/TT100K.yaml +0 -0
  43. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  44. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  45. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  46. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  47. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  48. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  49. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/coco.yaml +0 -0
  50. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/coco12-formats.yaml +0 -0
  51. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  52. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  53. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  54. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  55. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  56. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  57. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  58. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/construction-ppe.yaml +0 -0
  59. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  60. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  61. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  62. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  63. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  64. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/kitti.yaml +0 -0
  65. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  66. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  67. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  68. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  69. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/signature.yaml +0 -0
  70. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  71. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/datasets/xView.yaml +0 -0
  72. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/default.yaml +0 -0
  73. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  74. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  75. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  76. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  77. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  78. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  79. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  80. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  81. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  82. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  83. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  84. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  85. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  86. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/26/yolo26-cls.yaml +0 -0
  87. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/26/yolo26-obb.yaml +0 -0
  88. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/26/yolo26-p2.yaml +0 -0
  89. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/26/yolo26-p6.yaml +0 -0
  90. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/26/yolo26-pose.yaml +0 -0
  91. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/26/yolo26-seg.yaml +0 -0
  92. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/26/yolo26.yaml +0 -0
  93. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/26/yoloe-26-seg.yaml +0 -0
  94. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/26/yoloe-26.yaml +0 -0
  95. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  96. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  97. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  98. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  99. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  100. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  101. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  102. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  103. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  104. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  105. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  106. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  107. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  108. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  109. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  110. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  111. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  112. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  113. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  114. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  115. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  116. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  117. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  118. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  119. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  120. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  121. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  122. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  123. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  124. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  125. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  126. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  127. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  128. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  129. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  130. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  131. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  132. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  133. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  134. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  135. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  136. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  137. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  138. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  139. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/__init__.py +0 -0
  140. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/annotator.py +0 -0
  141. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/base.py +0 -0
  142. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/build.py +0 -0
  143. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/converter.py +0 -0
  144. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/dataset.py +0 -0
  145. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/loaders.py +0 -0
  146. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/scripts/download_weights.sh +0 -0
  147. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/scripts/get_coco.sh +0 -0
  148. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/scripts/get_coco128.sh +0 -0
  149. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  150. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/split.py +0 -0
  151. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/split_dota.py +0 -0
  152. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/data/utils.py +0 -0
  153. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/engine/__init__.py +0 -0
  154. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/engine/model.py +0 -0
  155. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/engine/predictor.py +0 -0
  156. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/engine/results.py +0 -0
  157. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/engine/trainer.py +0 -0
  158. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/engine/tuner.py +0 -0
  159. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/engine/validator.py +0 -0
  160. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/hub/__init__.py +0 -0
  161. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/hub/auth.py +0 -0
  162. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/hub/google/__init__.py +0 -0
  163. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/hub/utils.py +0 -0
  164. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/__init__.py +0 -0
  165. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/fastsam/__init__.py +0 -0
  166. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/fastsam/model.py +0 -0
  167. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/fastsam/predict.py +0 -0
  168. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/fastsam/utils.py +0 -0
  169. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/fastsam/val.py +0 -0
  170. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/nas/__init__.py +0 -0
  171. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/nas/model.py +0 -0
  172. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/nas/predict.py +0 -0
  173. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/nas/val.py +0 -0
  174. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/rtdetr/__init__.py +0 -0
  175. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/rtdetr/model.py +0 -0
  176. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/rtdetr/predict.py +0 -0
  177. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/rtdetr/train.py +0 -0
  178. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/rtdetr/val.py +0 -0
  179. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/__init__.py +0 -0
  180. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/amg.py +0 -0
  181. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/build.py +0 -0
  182. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/build_sam3.py +0 -0
  183. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/model.py +0 -0
  184. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/modules/__init__.py +0 -0
  185. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/modules/blocks.py +0 -0
  186. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/modules/decoders.py +0 -0
  187. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/modules/encoders.py +0 -0
  188. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  189. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/modules/sam.py +0 -0
  190. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  191. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/modules/transformer.py +0 -0
  192. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/modules/utils.py +0 -0
  193. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/__init__.py +0 -0
  194. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/decoder.py +0 -0
  195. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/encoder.py +0 -0
  196. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/geometry_encoders.py +0 -0
  197. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/maskformer_segmentation.py +0 -0
  198. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/model_misc.py +0 -0
  199. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/necks.py +0 -0
  200. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/sam3_image.py +0 -0
  201. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/text_encoder_ve.py +0 -0
  202. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/vitdet.py +0 -0
  203. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/sam/sam3/vl_combiner.py +0 -0
  204. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/utils/__init__.py +0 -0
  205. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/utils/loss.py +0 -0
  206. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/utils/ops.py +0 -0
  207. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/__init__.py +0 -0
  208. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/classify/__init__.py +0 -0
  209. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/classify/predict.py +0 -0
  210. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/classify/train.py +0 -0
  211. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/classify/val.py +0 -0
  212. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/detect/__init__.py +0 -0
  213. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/detect/predict.py +0 -0
  214. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/detect/val.py +0 -0
  215. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/obb/__init__.py +0 -0
  216. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/obb/predict.py +0 -0
  217. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/obb/train.py +0 -0
  218. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/obb/val.py +0 -0
  219. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/pose/__init__.py +0 -0
  220. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/pose/predict.py +0 -0
  221. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/pose/train.py +0 -0
  222. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/pose/val.py +0 -0
  223. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/segment/__init__.py +0 -0
  224. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/segment/predict.py +0 -0
  225. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/segment/train.py +0 -0
  226. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/segment/val.py +0 -0
  227. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/world/__init__.py +0 -0
  228. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/world/train.py +0 -0
  229. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/world/train_world.py +0 -0
  230. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  231. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  232. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/yoloe/train.py +0 -0
  233. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  234. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/models/yolo/yoloe/val.py +0 -0
  235. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/__init__.py +0 -0
  236. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/modules/__init__.py +0 -0
  237. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/modules/activation.py +0 -0
  238. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/modules/block.py +0 -0
  239. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/modules/conv.py +0 -0
  240. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/modules/head.py +0 -0
  241. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/modules/transformer.py +0 -0
  242. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/modules/utils.py +0 -0
  243. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/tasks.py +0 -0
  244. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/nn/text_model.py +0 -0
  245. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/optim/__init__.py +0 -0
  246. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/optim/muon.py +0 -0
  247. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/py.typed +0 -0
  248. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/__init__.py +0 -0
  249. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/ai_gym.py +0 -0
  250. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/analytics.py +0 -0
  251. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/config.py +0 -0
  252. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/distance_calculation.py +0 -0
  253. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/heatmap.py +0 -0
  254. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/instance_segmentation.py +0 -0
  255. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/object_blurrer.py +0 -0
  256. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/object_counter.py +0 -0
  257. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/object_cropper.py +0 -0
  258. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/parking_management.py +0 -0
  259. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/queue_management.py +0 -0
  260. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/region_counter.py +0 -0
  261. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/security_alarm.py +0 -0
  262. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/similarity_search.py +0 -0
  263. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/solutions.py +0 -0
  264. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/speed_estimation.py +0 -0
  265. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/streamlit_inference.py +0 -0
  266. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/templates/similarity-search.html +0 -0
  267. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/trackzone.py +0 -0
  268. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/solutions/vision_eye.py +0 -0
  269. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/trackers/__init__.py +0 -0
  270. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/trackers/basetrack.py +0 -0
  271. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/trackers/bot_sort.py +0 -0
  272. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/trackers/byte_tracker.py +0 -0
  273. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/trackers/track.py +0 -0
  274. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/trackers/utils/__init__.py +0 -0
  275. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/trackers/utils/gmc.py +0 -0
  276. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  277. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/trackers/utils/matching.py +0 -0
  278. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/autobatch.py +0 -0
  279. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/autodevice.py +0 -0
  280. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/benchmarks.py +0 -0
  281. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/__init__.py +0 -0
  282. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/base.py +0 -0
  283. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/clearml.py +0 -0
  284. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/comet.py +0 -0
  285. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/dvc.py +0 -0
  286. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/hub.py +0 -0
  287. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/mlflow.py +0 -0
  288. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/neptune.py +0 -0
  289. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/platform.py +0 -0
  290. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/raytune.py +0 -0
  291. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  292. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/callbacks/wb.py +0 -0
  293. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/cpu.py +0 -0
  294. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/downloads.py +0 -0
  295. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/errors.py +0 -0
  296. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/events.py +0 -0
  297. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/export/__init__.py +0 -0
  298. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/export/engine.py +0 -0
  299. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/export/imx.py +0 -0
  300. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/export/tensorflow.py +0 -0
  301. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/files.py +0 -0
  302. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/git.py +0 -0
  303. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/logger.py +0 -0
  304. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/metrics.py +0 -0
  305. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/nms.py +0 -0
  306. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/ops.py +0 -0
  307. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/patches.py +0 -0
  308. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/plotting.py +0 -0
  309. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/tal.py +0 -0
  310. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/tqdm.py +0 -0
  311. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/triton.py +0 -0
  312. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics/utils/tuner.py +0 -0
  313. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics_opencv_headless.egg-info/SOURCES.txt +0 -0
  314. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics_opencv_headless.egg-info/dependency_links.txt +0 -0
  315. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics_opencv_headless.egg-info/entry_points.txt +0 -0
  316. {ultralytics_opencv_headless-8.4.8 → ultralytics_opencv_headless-8.4.10}/ultralytics_opencv_headless.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics-opencv-headless
3
- Version: 8.4.8
3
+ Version: 8.4.10
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>
@@ -39,8 +39,8 @@ Requires-Dist: pillow>=7.1.2
39
39
  Requires-Dist: pyyaml>=5.3.1
40
40
  Requires-Dist: requests>=2.23.0
41
41
  Requires-Dist: scipy>=1.4.1
42
- Requires-Dist: torch<2.10,>=1.8.0
43
- Requires-Dist: torch!=2.4.0,<2.10,>=1.8.0; sys_platform == "win32"
42
+ Requires-Dist: torch>=1.8.0
43
+ Requires-Dist: torch!=2.4.0,>=1.8.0; sys_platform == "win32"
44
44
  Requires-Dist: torchvision>=0.9.0
45
45
  Requires-Dist: psutil>=5.8.0
46
46
  Requires-Dist: polars>=0.20.0
@@ -68,8 +68,8 @@ dependencies = [
68
68
  "pyyaml>=5.3.1",
69
69
  "requests>=2.23.0",
70
70
  "scipy>=1.4.1",
71
- "torch>=1.8.0,<2.10",
72
- "torch>=1.8.0,<2.10,!=2.4.0; sys_platform == 'win32'", # Windows CPU errors w/ 2.4.0 https://github.com/ultralytics/ultralytics/issues/15049
71
+ "torch>=1.8.0",
72
+ "torch>=1.8.0,!=2.4.0; sys_platform == 'win32'", # Windows CPU errors w/ 2.4.0 https://github.com/ultralytics/ultralytics/issues/15049
73
73
  "torchvision>=0.9.0",
74
74
  "psutil>=5.8.0", # system utilization
75
75
  "polars>=0.20.0",
@@ -12,7 +12,7 @@ from ultralytics import YOLO
12
12
  from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
13
13
  from ultralytics.utils import ASSETS, IS_JETSON, WEIGHTS_DIR
14
14
  from ultralytics.utils.autodevice import GPUInfo
15
- from ultralytics.utils.checks import check_amp
15
+ from ultralytics.utils.checks import check_amp, check_tensorrt
16
16
  from ultralytics.utils.torch_utils import TORCH_1_13
17
17
 
18
18
  # Try to find idle devices if CUDA is available
@@ -91,6 +91,7 @@ def test_export_onnx_matrix(task, dynamic, int8, half, batch, simplify, nms):
91
91
  )
92
92
  def test_export_engine_matrix(task, dynamic, int8, half, batch):
93
93
  """Test YOLO model export to TensorRT format for various configurations and run inference."""
94
+ check_tensorrt()
94
95
  import tensorrt as trt
95
96
 
96
97
  is_trt10 = int(trt.__version__.split(".", 1)[0]) >= 10
@@ -120,7 +121,7 @@ def test_train():
120
121
  device = tuple(DEVICES) if len(DEVICES) > 1 else DEVICES[0]
121
122
  # NVIDIA Jetson only has one GPU and therefore skipping checks
122
123
  if not IS_JETSON:
123
- results = YOLO(MODEL).train(data="coco8.yaml", imgsz=64, epochs=1, device=device, batch=15)
124
+ results = YOLO(MODEL).train(data="coco8.yaml", imgsz=64, epochs=1, device=device, batch=15, compile=True)
124
125
  results = YOLO(MODEL).train(data="coco128.yaml", imgsz=64, epochs=1, device=device, batch=15, val=False)
125
126
  visible = eval(os.environ["CUDA_VISIBLE_DEVICES"])
126
127
  assert visible == device, f"Passed GPUs '{device}', but used GPUs '{visible}'"
@@ -702,8 +702,7 @@ def test_yoloe(tmp_path):
702
702
  # Predict
703
703
  # text-prompts
704
704
  model = YOLO(WEIGHTS_DIR / "yoloe-11s-seg.pt")
705
- names = ["person", "bus"]
706
- model.set_classes(names, model.get_text_pe(names))
705
+ model.set_classes(["person", "bus"])
707
706
  model(SOURCE, conf=0.01)
708
707
 
709
708
  from ultralytics import YOLOE
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.4.8"
3
+ __version__ = "8.4.10"
4
4
 
5
5
  import importlib
6
6
  import os
@@ -1745,7 +1745,7 @@ class CopyPaste(BaseMixTransform):
1745
1745
  instances.convert_bbox(format="xyxy")
1746
1746
  instances.denormalize(w, h)
1747
1747
 
1748
- im_new = np.zeros(im.shape, np.uint8)
1748
+ im_new = np.zeros(im.shape[:2], np.uint8)
1749
1749
  instances2 = labels2.pop("instances", None)
1750
1750
  if instances2 is None:
1751
1751
  instances2 = deepcopy(instances)
@@ -1758,7 +1758,7 @@ class CopyPaste(BaseMixTransform):
1758
1758
  for j in indexes[: round(self.p * n)]:
1759
1759
  cls = np.concatenate((cls, labels2.get("cls", cls)[[j]]), axis=0)
1760
1760
  instances = Instances.concatenate((instances, instances2[[j]]), axis=0)
1761
- cv2.drawContours(im_new, instances2.segments[[j]].astype(np.int32), -1, (1, 1, 1), cv2.FILLED)
1761
+ cv2.drawContours(im_new, instances2.segments[[j]].astype(np.int32), -1, 1, cv2.FILLED)
1762
1762
 
1763
1763
  result = labels2.get("img", cv2.flip(im, 1)) # augment segments
1764
1764
  if result.ndim == 2: # cv2.flip would eliminate the last dimension for grayscale images
@@ -87,7 +87,6 @@ from ultralytics.utils import (
87
87
  IS_COLAB,
88
88
  IS_DEBIAN_BOOKWORM,
89
89
  IS_DEBIAN_TRIXIE,
90
- IS_DOCKER,
91
90
  IS_JETSON,
92
91
  IS_RASPBERRYPI,
93
92
  IS_UBUNTU,
@@ -103,13 +102,16 @@ from ultralytics.utils import (
103
102
  callbacks,
104
103
  colorstr,
105
104
  get_default_args,
105
+ is_jetson,
106
106
  )
107
107
  from ultralytics.utils.checks import (
108
108
  IS_PYTHON_3_10,
109
109
  IS_PYTHON_MINIMUM_3_9,
110
110
  check_apt_requirements,
111
+ check_executorch_requirements,
111
112
  check_imgsz,
112
113
  check_requirements,
114
+ check_tensorrt,
113
115
  check_version,
114
116
  is_intel,
115
117
  is_sudo_available,
@@ -1002,12 +1004,15 @@ class Exporter:
1002
1004
  assert self.im.device.type != "cpu", "export running on CPU but must be on GPU, i.e. use 'device=0'"
1003
1005
  f_onnx = self.export_onnx() # run before TRT import https://github.com/ultralytics/ultralytics/issues/7016
1004
1006
 
1007
+ # Force re-install TensorRT on CUDA 13 ARM devices to 10.15.x versions for RT-DETR exports
1008
+ # https://github.com/ultralytics/ultralytics/issues/22873
1009
+ if is_jetson(jetpack=7):
1010
+ check_tensorrt("10.15")
1011
+
1005
1012
  try:
1006
1013
  import tensorrt as trt
1007
1014
  except ImportError:
1008
- if LINUX:
1009
- cuda_version = torch.version.cuda.split(".")[0]
1010
- check_requirements(f"tensorrt-cu{cuda_version}>7.0.0,!=10.1.0")
1015
+ check_tensorrt()
1011
1016
  import tensorrt as trt
1012
1017
  check_version(trt.__version__, ">=7.0.0", hard=True)
1013
1018
  check_version(trt.__version__, "!=10.1.0", msg="https://github.com/ultralytics/ultralytics/pull/14239")
@@ -1197,16 +1202,9 @@ class Exporter:
1197
1202
  following Ultralytics conventions.
1198
1203
  """
1199
1204
  LOGGER.info(f"\n{prefix} starting export with ExecuTorch...")
1200
- assert TORCH_2_9, f"ExecuTorch export requires torch>=2.9.0 but torch=={TORCH_VERSION} is installed"
1201
-
1202
- # BUG executorch build on arm64 Docker requires packaging>=22.0 https://github.com/pypa/setuptools/issues/4483
1203
- if LINUX and ARM64 and IS_DOCKER:
1204
- check_requirements("packaging>=22.0")
1205
+ assert TORCH_2_9, f"ExecuTorch requires torch>=2.9.0 but torch=={TORCH_VERSION} is installed"
1205
1206
 
1206
- check_requirements("ruamel.yaml<0.19.0")
1207
- check_requirements("executorch==1.0.1", "flatbuffers")
1208
- # Pin numpy to avoid coremltools errors with numpy>=2.4.0, must be separate
1209
- check_requirements("numpy<=2.3.5")
1207
+ check_executorch_requirements()
1210
1208
 
1211
1209
  from executorch.backends.xnnpack.partition.xnnpack_partitioner import XnnpackPartitioner
1212
1210
  from executorch.exir import to_edge_transform_and_lower
@@ -1402,7 +1400,7 @@ class Exporter:
1402
1400
  nms.confidenceThresholdInputFeatureName = "confidenceThreshold"
1403
1401
  nms.iouThreshold = self.args.iou
1404
1402
  nms.confidenceThreshold = self.args.conf
1405
- nms.pickTop.perClass = True
1403
+ nms.pickTop.perClass = not self.args.agnostic_nms
1406
1404
  nms.stringClassLabels.vector.extend(names.values())
1407
1405
  nms_model = ct.models.MLModel(nms_spec)
1408
1406
 
@@ -12,7 +12,7 @@ from urllib.parse import parse_qs, urlparse
12
12
 
13
13
  from ultralytics import __version__
14
14
  from ultralytics.hub.utils import HELP_MSG, HUB_WEB_ROOT, PREFIX
15
- from ultralytics.utils import IS_COLAB, LOGGER, SETTINGS, TQDM, checks, emojis
15
+ from ultralytics.utils import IS_COLAB, LOGGER, SETTINGS, TQDM, checks
16
16
  from ultralytics.utils.errors import HUBModelError
17
17
 
18
18
  AGENT_NAME = f"python-{__version__}-colab" if IS_COLAB else f"python-{__version__}-local"
@@ -121,7 +121,7 @@ class HUBTrainingSession:
121
121
  """
122
122
  self.model = self.client.model(model_id)
123
123
  if not self.model.data: # then model does not exist
124
- raise ValueError(emojis("❌ The specified HUB model does not exist")) # TODO: improve error handling
124
+ raise HUBModelError(f"❌ Model not found: '{model_id}'. Verify the model ID is correct.")
125
125
 
126
126
  self.model_url = f"{HUB_WEB_ROOT}/models/{self.model.id}"
127
127
  if self.model.is_trained():
@@ -167,10 +167,8 @@ class HUBTrainingSession:
167
167
 
168
168
  self.model.create_model(payload)
169
169
 
170
- # Model could not be created
171
- # TODO: improve error handling
172
170
  if not self.model.id:
173
- return None
171
+ raise HUBModelError(f"❌ Failed to create model '{self.filename}' on Ultralytics HUB. Please try again.")
174
172
 
175
173
  self.model_url = f"{HUB_WEB_ROOT}/models/{self.model.id}"
176
174
 
@@ -2619,7 +2619,7 @@ class SAM3VideoSemanticPredictor(SAM3SemanticPredictor):
2619
2619
  if not isinstance(orig_imgs, list): # input images are a torch.Tensor, not a list
2620
2620
  orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)
2621
2621
 
2622
- names = []
2622
+ names = self.model.names if self.model.names != "visual" else {}
2623
2623
  if len(curr_obj_ids) == 0:
2624
2624
  pred_masks, pred_boxes = None, torch.zeros((0, 7), device=self.device)
2625
2625
  else:
@@ -2638,6 +2638,8 @@ class SAM3VideoSemanticPredictor(SAM3SemanticPredictor):
2638
2638
  pred_boxes = torch.cat(
2639
2639
  [pred_boxes, pred_ids[keep][:, None], pred_scores[keep][..., None], pred_cls[keep][..., None]], dim=-1
2640
2640
  )
2641
+ if pred_boxes.shape[0]:
2642
+ names = names or dict(enumerate(str(i) for i in range(pred_boxes[:, 6].int().max() + 1)))
2641
2643
  if pred_masks.shape[0] > 1:
2642
2644
  tracker_scores = torch.tensor(
2643
2645
  [
@@ -2657,7 +2659,6 @@ class SAM3VideoSemanticPredictor(SAM3SemanticPredictor):
2657
2659
  background_value=0,
2658
2660
  ).squeeze(1)
2659
2661
  ) > 0
2660
- names = self.model.names or dict(enumerate(str(i) for i in range(pred_boxes[:, 6].int().max())))
2661
2662
 
2662
2663
  results = []
2663
2664
  for masks, boxes, orig_img, img_path in zip([pred_masks], [pred_boxes], orig_imgs, self.batch[0]):
@@ -73,7 +73,7 @@ class DetectionTrainer(BaseTrainer):
73
73
  Returns:
74
74
  (Dataset): YOLO dataset object configured for the specified mode.
75
75
  """
76
- gs = max(int(unwrap_model(self.model).stride.max() if self.model else 0), 32)
76
+ gs = max(int(unwrap_model(self.model).stride.max()), 32)
77
77
  return build_yolo_dataset(self.args, img_path, batch, self.data, mode=mode, rect=mode == "val", stride=gs)
78
78
 
79
79
  def get_dataloader(self, dataset_path: str, batch_size: int = 16, rank: int = 0, mode: str = "train"):
@@ -426,5 +426,6 @@ class YOLOE(Model):
426
426
  self.predictor = None # reset predictor
427
427
  elif isinstance(self.predictor, yolo.yoloe.YOLOEVPDetectPredictor):
428
428
  self.predictor = None # reset predictor if no visual prompts
429
+ self.overrides["agnostic_nms"] = True # use agnostic nms for YOLOE default
429
430
 
430
431
  return super().predict(source, stream, **kwargs)
@@ -16,8 +16,24 @@ import torch
16
16
  import torch.nn as nn
17
17
  from PIL import Image
18
18
 
19
- from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, YAML, is_jetson
20
- from ultralytics.utils.checks import check_requirements, check_suffix, check_version, check_yaml, is_rockchip
19
+ from ultralytics.utils import (
20
+ ARM64,
21
+ IS_JETSON,
22
+ LINUX,
23
+ LOGGER,
24
+ PYTHON_VERSION,
25
+ ROOT,
26
+ YAML,
27
+ is_jetson,
28
+ )
29
+ from ultralytics.utils.checks import (
30
+ check_executorch_requirements,
31
+ check_requirements,
32
+ check_suffix,
33
+ check_version,
34
+ check_yaml,
35
+ is_rockchip,
36
+ )
21
37
  from ultralytics.utils.downloads import attempt_download_asset, is_url
22
38
  from ultralytics.utils.nms import non_max_suppression
23
39
 
@@ -323,7 +339,7 @@ class AutoBackend(nn.Module):
323
339
  batch = metadata["batch"]
324
340
  dynamic = metadata.get("args", {}).get("dynamic", dynamic)
325
341
  # OpenVINO inference modes are 'LATENCY', 'THROUGHPUT' (not recommended), or 'CUMULATIVE_THROUGHPUT'
326
- inference_mode = "CUMULATIVE_THROUGHPUT" if batch > 1 and dynamic else "LATENCY"
342
+ inference_mode = "CUMULATIVE_THROUGHPUT" if dynamic and batch > 1 else "LATENCY"
327
343
  ov_compiled_model = core.compile_model(
328
344
  ov_model,
329
345
  device_name=device_name,
@@ -616,9 +632,9 @@ class AutoBackend(nn.Module):
616
632
  # ExecuTorch
617
633
  elif pte:
618
634
  LOGGER.info(f"Loading {w} for ExecuTorch inference...")
619
- # TorchAO release compatibility table bug https://github.com/pytorch/ao/issues/2919
620
- check_requirements("setuptools<71.0.0") # Setuptools bug: https://github.com/pypa/setuptools/issues/4483
621
- check_requirements(("executorch==1.0.1", "flatbuffers"))
635
+
636
+ check_executorch_requirements()
637
+
622
638
  from executorch.runtime import Runtime
623
639
 
624
640
  w = Path(w)
@@ -762,7 +762,7 @@ def is_jetson(jetpack=None) -> bool:
762
762
  if jetson and jetpack:
763
763
  try:
764
764
  content = open("/etc/nv_tegra_release").read()
765
- version_map = {4: "R32", 5: "R35", 6: "R36"} # JetPack to L4T major version mapping
765
+ version_map = {4: "R32", 5: "R35", 6: "R36", 7: "R38"} # JetPack to L4T major version mapping
766
766
  return jetpack in version_map and version_map[jetpack] in content
767
767
  except Exception:
768
768
  return False
@@ -29,6 +29,7 @@ from ultralytics.utils import (
29
29
  AUTOINSTALL,
30
30
  GIT,
31
31
  IS_COLAB,
32
+ IS_DOCKER,
32
33
  IS_JETSON,
33
34
  IS_KAGGLE,
34
35
  IS_PIP_PACKAGE,
@@ -495,6 +496,28 @@ def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=()
495
496
  return True
496
497
 
497
498
 
499
+ def check_executorch_requirements():
500
+ """Check and install ExecuTorch requirements including platform-specific dependencies."""
501
+ # BUG executorch build on arm64 Docker requires packaging>=22.0 https://github.com/pypa/setuptools/issues/4483
502
+ if LINUX and ARM64 and IS_DOCKER:
503
+ check_requirements("packaging>=22.0")
504
+
505
+ check_requirements("executorch", cmds=f"torch=={TORCH_VERSION.split('+')[0]}")
506
+ # Pin numpy to avoid coremltools errors with numpy>=2.4.0, must be separate
507
+ check_requirements("numpy<=2.3.5")
508
+
509
+
510
+ def check_tensorrt(min_version: str = "7.0.0"):
511
+ """Check and install TensorRT requirements including platform-specific dependencies.
512
+
513
+ Args:
514
+ min_version (str): Minimum supported TensorRT version (default: "7.0.0").
515
+ """
516
+ if LINUX:
517
+ cuda_version = torch.version.cuda.split(".")[0]
518
+ check_requirements(f"tensorrt-cu{cuda_version}>={min_version},!=10.1.0")
519
+
520
+
498
521
  def check_torchvision():
499
522
  """Check the installed versions of PyTorch and Torchvision to ensure they're compatible.
500
523
 
@@ -546,7 +569,7 @@ def check_suffix(file="yolo26n.pt", suffix=".pt", msg=""):
546
569
  assert f".{s}" in suffix, f"{msg}{f} acceptable suffix is {suffix}, not .{s}"
547
570
 
548
571
 
549
- def check_yolov5u_filename(file: str, verbose: bool = True):
572
+ def check_yolov5u_filename(file: str, verbose: bool = True) -> str:
550
573
  """Replace legacy YOLOv5 filenames with updated YOLOv5u filenames.
551
574
 
552
575
  Args:
@@ -573,7 +596,7 @@ def check_yolov5u_filename(file: str, verbose: bool = True):
573
596
  return file
574
597
 
575
598
 
576
- def check_model_file_from_stem(model="yolo11n"):
599
+ def check_model_file_from_stem(model: str = "yolo11n") -> str | Path:
577
600
  """Return a model filename from a valid model stem.
578
601
 
579
602
  Args:
@@ -619,6 +642,9 @@ def check_file(file, suffix="", download=True, download_dir=".", hard=True):
619
642
  # Use URI path for unique directory structure: ul://user/project/model -> user/project/model/filename.pt
620
643
  uri_path = file[5:] # Remove "ul://"
621
644
  local_file = Path(download_dir) / uri_path / url2file(url)
645
+ # Always re-download NDJSON datasets (cheap, ensures fresh data after updates)
646
+ if local_file.suffix == ".ndjson":
647
+ local_file.unlink(missing_ok=True)
622
648
  if local_file.exists():
623
649
  LOGGER.info(f"Found {clean_url(url)} locally at {local_file}")
624
650
  else:
@@ -660,7 +686,7 @@ def check_yaml(file, suffix=(".yaml", ".yml"), hard=True):
660
686
  return check_file(file, suffix, hard=hard)
661
687
 
662
688
 
663
- def check_is_path_safe(basedir, path):
689
+ def check_is_path_safe(basedir: Path | str, path: Path | str) -> bool:
664
690
  """Check if the resolved path is under the intended directory to prevent path traversal.
665
691
 
666
692
  Args:
@@ -1,13 +1,19 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
+ from __future__ import annotations
4
+
3
5
  import os
4
6
  import shutil
5
7
  import sys
6
8
  import tempfile
9
+ from typing import TYPE_CHECKING
7
10
 
8
11
  from . import USER_CONFIG_DIR
9
12
  from .torch_utils import TORCH_1_9
10
13
 
14
+ if TYPE_CHECKING:
15
+ from ultralytics.engine.trainer import BaseTrainer
16
+
11
17
 
12
18
  def find_free_network_port() -> int:
13
19
  """Find a free port on localhost.
@@ -25,7 +31,7 @@ def find_free_network_port() -> int:
25
31
  return s.getsockname()[1] # port
26
32
 
27
33
 
28
- def generate_ddp_file(trainer):
34
+ def generate_ddp_file(trainer: BaseTrainer) -> str:
29
35
  """Generate a DDP (Distributed Data Parallel) file for multi-GPU training.
30
36
 
31
37
  This function creates a temporary Python file that enables distributed training across multiple GPUs. The file
@@ -75,7 +81,7 @@ if __name__ == "__main__":
75
81
  return file.name
76
82
 
77
83
 
78
- def generate_ddp_command(trainer):
84
+ def generate_ddp_command(trainer: BaseTrainer) -> tuple[list[str], str]:
79
85
  """Generate command for distributed training.
80
86
 
81
87
  Args:
@@ -105,7 +111,7 @@ def generate_ddp_command(trainer):
105
111
  return cmd, file
106
112
 
107
113
 
108
- def ddp_cleanup(trainer, file):
114
+ def ddp_cleanup(trainer: BaseTrainer, file: str) -> None:
109
115
  """Delete temporary file if created during distributed data parallel (DDP) training.
110
116
 
111
117
  This function checks if the provided file contains the trainer's ID in its name, indicating it was created as a
@@ -408,7 +408,7 @@ class Instances:
408
408
  good = self.bbox_areas > 0
409
409
  if not all(good):
410
410
  self._bboxes = self._bboxes[good]
411
- if len(self.segments):
411
+ if self.segments is not None and len(self.segments):
412
412
  self.segments = self.segments[good]
413
413
  if self.keypoints is not None:
414
414
  self.keypoints = self.keypoints[good]
@@ -482,3 +482,16 @@ class Instances:
482
482
  def bboxes(self) -> np.ndarray:
483
483
  """Return bounding boxes."""
484
484
  return self._bboxes.bboxes
485
+
486
+ def __repr__(self) -> str:
487
+ """Return a string representation of the Instances object."""
488
+ # Map private to public names and include direct attributes
489
+ attr_map = {"_bboxes": "bboxes"}
490
+ parts = []
491
+ for key, value in self.__dict__.items():
492
+ name = attr_map.get(key, key)
493
+ if name == "bboxes":
494
+ value = self.bboxes # Use the property
495
+ if value is not None:
496
+ parts.append(f"{name}={value!r}")
497
+ return "Instances({})".format("\n".join(parts))
@@ -1193,8 +1193,6 @@ class TVPDetectLoss:
1193
1193
 
1194
1194
  def loss(self, preds: dict[str, torch.Tensor], batch: dict[str, torch.Tensor]) -> tuple[torch.Tensor, torch.Tensor]:
1195
1195
  """Calculate the loss for text-visual prompt detection."""
1196
- assert self.ori_reg_max == self.vp_criterion.reg_max # TODO: remove it
1197
-
1198
1196
  if self.ori_nc == preds["scores"].shape[1]:
1199
1197
  loss = torch.zeros(3, device=self.vp_criterion.device, requires_grad=True)
1200
1198
  return loss, loss.detach()
@@ -1230,8 +1228,6 @@ class TVPSegmentLoss(TVPDetectLoss):
1230
1228
 
1231
1229
  def loss(self, preds: Any, batch: dict[str, torch.Tensor]) -> tuple[torch.Tensor, torch.Tensor]:
1232
1230
  """Calculate the loss for text-visual prompt detection."""
1233
- assert self.ori_reg_max == self.vp_criterion.reg_max # TODO: remove it
1234
-
1235
1231
  if self.ori_nc == preds["scores"].shape[1]:
1236
1232
  loss = torch.zeros(4, device=self.vp_criterion.device, requires_grad=True)
1237
1233
  return loss, loss.detach()
@@ -46,6 +46,7 @@ TORCH_2_1 = check_version(TORCH_VERSION, "2.1.0")
46
46
  TORCH_2_4 = check_version(TORCH_VERSION, "2.4.0")
47
47
  TORCH_2_8 = check_version(TORCH_VERSION, "2.8.0")
48
48
  TORCH_2_9 = check_version(TORCH_VERSION, "2.9.0")
49
+ TORCH_2_10 = check_version(TORCH_VERSION, "2.10.0")
49
50
  TORCHVISION_0_10 = check_version(TORCHVISION_VERSION, "0.10.0")
50
51
  TORCHVISION_0_11 = check_version(TORCHVISION_VERSION, "0.11.0")
51
52
  TORCHVISION_0_13 = check_version(TORCHVISION_VERSION, "0.13.0")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics-opencv-headless
3
- Version: 8.4.8
3
+ Version: 8.4.10
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>
@@ -39,8 +39,8 @@ Requires-Dist: pillow>=7.1.2
39
39
  Requires-Dist: pyyaml>=5.3.1
40
40
  Requires-Dist: requests>=2.23.0
41
41
  Requires-Dist: scipy>=1.4.1
42
- Requires-Dist: torch<2.10,>=1.8.0
43
- Requires-Dist: torch!=2.4.0,<2.10,>=1.8.0; sys_platform == "win32"
42
+ Requires-Dist: torch>=1.8.0
43
+ Requires-Dist: torch!=2.4.0,>=1.8.0; sys_platform == "win32"
44
44
  Requires-Dist: torchvision>=0.9.0
45
45
  Requires-Dist: psutil>=5.8.0
46
46
  Requires-Dist: polars>=0.20.0
@@ -5,14 +5,14 @@ pillow>=7.1.2
5
5
  pyyaml>=5.3.1
6
6
  requests>=2.23.0
7
7
  scipy>=1.4.1
8
- torch<2.10,>=1.8.0
8
+ torch>=1.8.0
9
9
  torchvision>=0.9.0
10
10
  psutil>=5.8.0
11
11
  polars>=0.20.0
12
12
  ultralytics-thop>=2.0.18
13
13
 
14
14
  [:sys_platform == "win32"]
15
- torch!=2.4.0,<2.10,>=1.8.0
15
+ torch!=2.4.0,>=1.8.0
16
16
 
17
17
  [dev]
18
18
  ipython