dgenerate-ultralytics-headless 8.3.189__tar.gz → 8.3.190__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 (283) hide show
  1. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/PKG-INFO +1 -1
  2. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +1 -1
  3. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +1 -0
  4. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/__init__.py +1 -1
  5. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/utils.py +2 -2
  6. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/engine/exporter.py +5 -2
  7. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/engine/predictor.py +1 -1
  8. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/engine/results.py +5 -5
  9. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/engine/trainer.py +2 -0
  10. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/engine/validator.py +3 -1
  11. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/hub/__init__.py +6 -2
  12. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/hub/auth.py +2 -2
  13. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/hub/google/__init__.py +2 -2
  14. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/hub/session.py +3 -5
  15. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/hub/utils.py +5 -5
  16. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/detect/predict.py +2 -2
  17. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/detect/val.py +2 -2
  18. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/obb/val.py +2 -1
  19. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/autobackend.py +28 -38
  20. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/modules/__init__.py +3 -3
  21. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/modules/head.py +5 -1
  22. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/__init__.py +34 -12
  23. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/platform.py +2 -1
  24. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/checks.py +3 -3
  25. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/downloads.py +2 -2
  26. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/logger.py +7 -6
  27. dgenerate_ultralytics_headless-8.3.190/ultralytics/utils/nms.py +346 -0
  28. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/ops.py +80 -249
  29. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/tal.py +1 -1
  30. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/tqdm.py +34 -23
  31. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/LICENSE +0 -0
  32. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/README.md +0 -0
  33. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
  34. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
  35. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
  36. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
  37. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/pyproject.toml +0 -0
  38. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/setup.cfg +0 -0
  39. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/tests/__init__.py +0 -0
  40. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/tests/conftest.py +0 -0
  41. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/tests/test_cli.py +0 -0
  42. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/tests/test_cuda.py +0 -0
  43. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/tests/test_engine.py +0 -0
  44. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/tests/test_exports.py +0 -0
  45. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/tests/test_integrations.py +0 -0
  46. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/tests/test_python.py +0 -0
  47. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/tests/test_solutions.py +0 -0
  48. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/assets/bus.jpg +0 -0
  49. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/assets/zidane.jpg +0 -0
  50. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/__init__.py +0 -0
  51. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  52. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  53. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  54. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  55. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  56. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  57. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  58. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  59. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  60. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  61. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  62. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  63. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  64. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  65. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/coco.yaml +0 -0
  66. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  67. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  68. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  69. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  70. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  71. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  72. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  73. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  74. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  75. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  76. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  77. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  78. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  79. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  80. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  81. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  82. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/signature.yaml +0 -0
  83. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  84. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/datasets/xView.yaml +0 -0
  85. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/default.yaml +0 -0
  86. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  87. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  88. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  89. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  90. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  91. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  92. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  93. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  94. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  95. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  96. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  97. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  98. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  99. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  100. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  101. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  102. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  103. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  104. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  105. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  106. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  107. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  108. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  109. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  110. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  111. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  112. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  113. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  114. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  115. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  116. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  117. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  118. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  119. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  120. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  121. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  122. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  123. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  124. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  125. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  126. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  127. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  128. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  129. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  130. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  131. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  132. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  133. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  134. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  135. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  136. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  137. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  138. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  139. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  140. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  141. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  142. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  143. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/__init__.py +0 -0
  144. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/annotator.py +0 -0
  145. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/augment.py +0 -0
  146. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/base.py +0 -0
  147. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/build.py +0 -0
  148. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/converter.py +0 -0
  149. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/dataset.py +0 -0
  150. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/loaders.py +0 -0
  151. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/scripts/download_weights.sh +0 -0
  152. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/scripts/get_coco.sh +0 -0
  153. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/scripts/get_coco128.sh +0 -0
  154. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  155. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/split.py +0 -0
  156. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/data/split_dota.py +0 -0
  157. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/engine/__init__.py +0 -0
  158. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/engine/model.py +0 -0
  159. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/engine/tuner.py +0 -0
  160. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/__init__.py +0 -0
  161. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/fastsam/__init__.py +0 -0
  162. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/fastsam/model.py +0 -0
  163. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/fastsam/predict.py +0 -0
  164. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/fastsam/utils.py +0 -0
  165. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/fastsam/val.py +0 -0
  166. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/nas/__init__.py +0 -0
  167. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/nas/model.py +0 -0
  168. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/nas/predict.py +0 -0
  169. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/nas/val.py +0 -0
  170. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/rtdetr/__init__.py +0 -0
  171. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/rtdetr/model.py +0 -0
  172. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/rtdetr/predict.py +0 -0
  173. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/rtdetr/train.py +0 -0
  174. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/rtdetr/val.py +0 -0
  175. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/__init__.py +0 -0
  176. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/amg.py +0 -0
  177. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/build.py +0 -0
  178. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/model.py +0 -0
  179. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/modules/__init__.py +0 -0
  180. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/modules/blocks.py +0 -0
  181. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/modules/decoders.py +0 -0
  182. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/modules/encoders.py +0 -0
  183. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  184. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/modules/sam.py +0 -0
  185. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  186. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/modules/transformer.py +0 -0
  187. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/modules/utils.py +0 -0
  188. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/sam/predict.py +0 -0
  189. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/utils/__init__.py +0 -0
  190. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/utils/loss.py +0 -0
  191. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/utils/ops.py +0 -0
  192. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/__init__.py +0 -0
  193. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/classify/__init__.py +0 -0
  194. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/classify/predict.py +0 -0
  195. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/classify/train.py +0 -0
  196. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/classify/val.py +0 -0
  197. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/detect/__init__.py +0 -0
  198. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/detect/train.py +0 -0
  199. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/model.py +0 -0
  200. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/obb/__init__.py +0 -0
  201. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/obb/predict.py +0 -0
  202. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/obb/train.py +0 -0
  203. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/pose/__init__.py +0 -0
  204. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/pose/predict.py +0 -0
  205. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/pose/train.py +0 -0
  206. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/pose/val.py +0 -0
  207. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/segment/__init__.py +0 -0
  208. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/segment/predict.py +0 -0
  209. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/segment/train.py +0 -0
  210. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/segment/val.py +0 -0
  211. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/world/__init__.py +0 -0
  212. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/world/train.py +0 -0
  213. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/world/train_world.py +0 -0
  214. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  215. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  216. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/yoloe/train.py +0 -0
  217. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  218. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/models/yolo/yoloe/val.py +0 -0
  219. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/__init__.py +0 -0
  220. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/modules/activation.py +0 -0
  221. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/modules/block.py +0 -0
  222. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/modules/conv.py +0 -0
  223. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/modules/transformer.py +0 -0
  224. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/modules/utils.py +0 -0
  225. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/tasks.py +0 -0
  226. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/nn/text_model.py +0 -0
  227. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/py.typed +0 -0
  228. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/__init__.py +0 -0
  229. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/ai_gym.py +0 -0
  230. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/analytics.py +0 -0
  231. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/config.py +0 -0
  232. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/distance_calculation.py +0 -0
  233. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/heatmap.py +0 -0
  234. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/instance_segmentation.py +0 -0
  235. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/object_blurrer.py +0 -0
  236. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/object_counter.py +0 -0
  237. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/object_cropper.py +0 -0
  238. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/parking_management.py +0 -0
  239. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/queue_management.py +0 -0
  240. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/region_counter.py +0 -0
  241. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/security_alarm.py +0 -0
  242. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/similarity_search.py +0 -0
  243. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/solutions.py +0 -0
  244. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/speed_estimation.py +0 -0
  245. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/streamlit_inference.py +0 -0
  246. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/templates/similarity-search.html +0 -0
  247. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/trackzone.py +0 -0
  248. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/solutions/vision_eye.py +0 -0
  249. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/trackers/__init__.py +0 -0
  250. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/trackers/basetrack.py +0 -0
  251. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/trackers/bot_sort.py +0 -0
  252. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/trackers/byte_tracker.py +0 -0
  253. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/trackers/track.py +0 -0
  254. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/trackers/utils/__init__.py +0 -0
  255. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/trackers/utils/gmc.py +0 -0
  256. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  257. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/trackers/utils/matching.py +0 -0
  258. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/autobatch.py +0 -0
  259. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/autodevice.py +0 -0
  260. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/benchmarks.py +0 -0
  261. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/__init__.py +0 -0
  262. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/base.py +0 -0
  263. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/clearml.py +0 -0
  264. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/comet.py +0 -0
  265. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/dvc.py +0 -0
  266. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/hub.py +0 -0
  267. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/mlflow.py +0 -0
  268. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/neptune.py +0 -0
  269. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/raytune.py +0 -0
  270. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  271. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/callbacks/wb.py +0 -0
  272. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/dist.py +0 -0
  273. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/errors.py +0 -0
  274. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/export.py +0 -0
  275. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/files.py +0 -0
  276. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/instance.py +0 -0
  277. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/loss.py +0 -0
  278. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/metrics.py +0 -0
  279. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/patches.py +0 -0
  280. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/plotting.py +0 -0
  281. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/torch_utils.py +0 -0
  282. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/triton.py +0 -0
  283. {dgenerate_ultralytics_headless-8.3.189 → dgenerate_ultralytics_headless-8.3.190}/ultralytics/utils/tuner.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.189
3
+ Version: 8.3.190
4
4
  Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.189
3
+ Version: 8.3.190
4
4
  Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -265,6 +265,7 @@ ultralytics/utils/instance.py
265
265
  ultralytics/utils/logger.py
266
266
  ultralytics/utils/loss.py
267
267
  ultralytics/utils/metrics.py
268
+ ultralytics/utils/nms.py
268
269
  ultralytics/utils/ops.py
269
270
  ultralytics/utils/patches.py
270
271
  ultralytics/utils/plotting.py
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.189"
3
+ __version__ = "8.3.190"
4
4
 
5
5
  import os
6
6
 
@@ -464,7 +464,7 @@ def check_det_dataset(dataset: str, autodownload: bool = True) -> Dict[str, Any]
464
464
  safe_download(url=s, dir=DATASETS_DIR, delete=True)
465
465
  elif s.startswith("bash "): # bash script
466
466
  LOGGER.info(f"Running {s} ...")
467
- r = os.system(s)
467
+ subprocess.run(s.split(), check=True)
468
468
  else: # python script
469
469
  exec(s, {"yaml": data})
470
470
  dt = f"({round(time.time() - t, 1)}s)"
@@ -509,7 +509,7 @@ def check_cls_dataset(dataset: Union[str, Path], split: str = "") -> Dict[str, A
509
509
  LOGGER.warning(f"Dataset not found, missing path {data_dir}, attempting download...")
510
510
  t = time.time()
511
511
  if str(dataset) == "imagenet":
512
- subprocess.run(f"bash {ROOT / 'data/scripts/get_imagenet.sh'}", shell=True, check=True)
512
+ subprocess.run(["bash", str(ROOT / "data/scripts/get_imagenet.sh")], check=True)
513
513
  else:
514
514
  url = f"https://github.com/ultralytics/assets/releases/download/v0.0.0/{dataset}.zip"
515
515
  download(url, dir=data_dir.parent)
@@ -107,7 +107,9 @@ from ultralytics.utils.checks import (
107
107
  from ultralytics.utils.downloads import attempt_download_asset, get_github_assets, safe_download
108
108
  from ultralytics.utils.export import export_engine, export_onnx
109
109
  from ultralytics.utils.files import file_size, spaces_in_path
110
- from ultralytics.utils.ops import Profile, nms_rotated
110
+ from ultralytics.utils.metrics import batch_probiou
111
+ from ultralytics.utils.nms import TorchNMS
112
+ from ultralytics.utils.ops import Profile
111
113
  from ultralytics.utils.patches import arange_patch
112
114
  from ultralytics.utils.torch_utils import TORCH_1_13, get_latest_opset, select_device
113
115
 
@@ -1562,12 +1564,13 @@ class NMSModel(torch.nn.Module):
1562
1564
  nmsbox = torch.cat((offbox, nmsbox[:, end:]), dim=-1)
1563
1565
  nms_fn = (
1564
1566
  partial(
1565
- nms_rotated,
1567
+ TorchNMS.fast_nms,
1566
1568
  use_triu=not (
1567
1569
  self.is_tf
1568
1570
  or (self.args.opset or 14) < 14
1569
1571
  or (self.args.format == "openvino" and self.args.int8) # OpenVINO int8 error with triu
1570
1572
  ),
1573
+ iou_func=batch_probiou,
1571
1574
  )
1572
1575
  if self.obb
1573
1576
  else nms
@@ -389,7 +389,7 @@ class BasePredictor:
389
389
  verbose (bool): Whether to print verbose output.
390
390
  """
391
391
  self.model = AutoBackend(
392
- weights=model or self.args.model,
392
+ model=model or self.args.model,
393
393
  device=select_device(self.args.device, verbose=verbose),
394
394
  dnn=self.args.dnn,
395
395
  data=self.args.data,
@@ -681,12 +681,12 @@ class Results(SimpleClass, DataExportMixin):
681
681
  - For classification tasks, it returns the top 5 class probabilities and their corresponding class names.
682
682
  - The returned string is comma-separated and ends with a comma and a space.
683
683
  """
684
- probs = self.probs
684
+ boxes = self.obb if self.obb is not None else self.boxes
685
685
  if len(self) == 0:
686
- return "" if probs is not None else "(no detections), "
687
- if probs is not None:
688
- return f"{', '.join(f'{self.names[j]} {probs.data[j]:.2f}' for j in probs.top5)}, "
689
- if boxes := self.boxes:
686
+ return "" if self.probs is not None else "(no detections), "
687
+ if self.probs is not None:
688
+ return f"{', '.join(f'{self.names[j]} {self.probs.data[j]:.2f}' for j in self.probs.top5)}, "
689
+ if boxes:
690
690
  counts = boxes.cls.int().bincount()
691
691
  return "".join(f"{n} {self.names[i]}{'s' * (n > 1)}, " for i, n in enumerate(counts) if n > 0)
692
692
 
@@ -36,6 +36,7 @@ from ultralytics.utils import (
36
36
  clean_url,
37
37
  colorstr,
38
38
  emojis,
39
+ get_git_commit,
39
40
  )
40
41
  from ultralytics.utils.autobatch import check_train_batch_size
41
42
  from ultralytics.utils.checks import check_amp, check_file, check_imgsz, check_model_file_from_stem, print_args
@@ -572,6 +573,7 @@ class BaseTrainer:
572
573
  "train_results": self.read_results_csv(),
573
574
  "date": datetime.now().isoformat(),
574
575
  "version": __version__,
576
+ "git_commit": get_git_commit(),
575
577
  "license": "AGPL-3.0 (https://ultralytics.com/license)",
576
578
  "docs": "https://docs.ultralytics.com",
577
579
  },
@@ -101,6 +101,8 @@ class BaseValidator:
101
101
  args (SimpleNamespace, optional): Configuration for the validator.
102
102
  _callbacks (dict, optional): Dictionary to store various callback functions.
103
103
  """
104
+ import torchvision # noqa (import here so torchvision import time not recorded in postprocess time)
105
+
104
106
  self.args = get_cfg(overrides=args)
105
107
  self.dataloader = dataloader
106
108
  self.stride = None
@@ -155,7 +157,7 @@ class BaseValidator:
155
157
  LOGGER.warning("validating an untrained model YAML will result in 0 mAP.")
156
158
  callbacks.add_integration_callbacks(self)
157
159
  model = AutoBackend(
158
- weights=model or self.args.model,
160
+ model=model or self.args.model,
159
161
  device=select_device(self.args.device, self.args.batch),
160
162
  dnn=self.args.dnn,
161
163
  data=self.args.data,
@@ -1,7 +1,5 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- import requests
4
-
5
3
  from ultralytics.data.utils import HUBDatasetStats
6
4
  from ultralytics.hub.auth import Auth
7
5
  from ultralytics.hub.session import HUBTrainingSession
@@ -75,6 +73,8 @@ def logout():
75
73
 
76
74
  def reset_model(model_id: str = ""):
77
75
  """Reset a trained model to an untrained state."""
76
+ import requests # scoped as slow import
77
+
78
78
  r = requests.post(f"{HUB_API_ROOT}/model-reset", json={"modelId": model_id}, headers={"x-api-key": Auth().api_key})
79
79
  if r.status_code == 200:
80
80
  LOGGER.info(f"{PREFIX}Model reset successfully")
@@ -105,6 +105,8 @@ def export_model(model_id: str = "", format: str = "torchscript"):
105
105
  >>> from ultralytics import hub
106
106
  >>> hub.export_model(model_id="your_model_id", format="torchscript")
107
107
  """
108
+ import requests # scoped as slow import
109
+
108
110
  assert format in export_fmts_hub(), f"Unsupported export format '{format}', valid formats are {export_fmts_hub()}"
109
111
  r = requests.post(
110
112
  f"{HUB_API_ROOT}/v1/models/{model_id}/export", json={"format": format}, headers={"x-api-key": Auth().api_key}
@@ -132,6 +134,8 @@ def get_export(model_id: str = "", format: str = "torchscript"):
132
134
  >>> from ultralytics import hub
133
135
  >>> result = hub.get_export(model_id="your_model_id", format="torchscript")
134
136
  """
137
+ import requests # scoped as slow import
138
+
135
139
  assert format in export_fmts_hub(), f"Unsupported export format '{format}', valid formats are {export_fmts_hub()}"
136
140
  r = requests.post(
137
141
  f"{HUB_API_ROOT}/get-export",
@@ -1,7 +1,5 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- import requests
4
-
5
3
  from ultralytics.hub.utils import HUB_API_ROOT, HUB_WEB_ROOT, PREFIX, request_with_credentials
6
4
  from ultralytics.utils import IS_COLAB, LOGGER, SETTINGS, emojis
7
5
 
@@ -110,6 +108,8 @@ class Auth:
110
108
  Returns:
111
109
  (bool): True if authentication is successful, False otherwise.
112
110
  """
111
+ import requests # scoped as slow import
112
+
113
113
  try:
114
114
  if header := self.get_auth_header():
115
115
  r = requests.post(f"{HUB_API_ROOT}/v1/auth", headers=header)
@@ -5,8 +5,6 @@ import statistics
5
5
  import time
6
6
  from typing import List, Optional, Tuple
7
7
 
8
- import requests
9
-
10
8
 
11
9
  class GCPRegions:
12
10
  """
@@ -101,6 +99,8 @@ class GCPRegions:
101
99
  >>> region, mean, std, min_lat, max_lat = GCPRegions._ping_region("us-central1", attempts=3)
102
100
  >>> print(f"Region {region} has mean latency: {mean:.2f}ms")
103
101
  """
102
+ import requests # scoped as slow import
103
+
104
104
  url = f"https://{region}-docker.pkg.dev"
105
105
  latencies = []
106
106
  for _ in range(attempts):
@@ -8,8 +8,6 @@ from pathlib import Path
8
8
  from typing import Any, Dict, Optional
9
9
  from urllib.parse import parse_qs, urlparse
10
10
 
11
- import requests
12
-
13
11
  from ultralytics import __version__
14
12
  from ultralytics.hub.utils import HELP_MSG, HUB_WEB_ROOT, PREFIX
15
13
  from ultralytics.utils import IS_COLAB, LOGGER, SETTINGS, TQDM, checks, emojis
@@ -341,7 +339,7 @@ class HUBTrainingSession:
341
339
  }
342
340
  return status_code in retry_codes
343
341
 
344
- def _get_failure_message(self, response: requests.Response, retry: int, timeout: int) -> str:
342
+ def _get_failure_message(self, response, retry: int, timeout: int) -> str:
345
343
  """
346
344
  Generate a retry message based on the response status code.
347
345
 
@@ -419,14 +417,14 @@ class HUBTrainingSession:
419
417
  )
420
418
 
421
419
  @staticmethod
422
- def _show_upload_progress(content_length: int, response: requests.Response) -> None:
420
+ def _show_upload_progress(content_length: int, response) -> None:
423
421
  """Display a progress bar to track the upload progress of a file download."""
424
422
  with TQDM(total=content_length, unit="B", unit_scale=True, unit_divisor=1024) as pbar:
425
423
  for data in response.iter_content(chunk_size=1024):
426
424
  pbar.update(len(data))
427
425
 
428
426
  @staticmethod
429
- def _iterate_content(response: requests.Response) -> None:
427
+ def _iterate_content(response) -> None:
430
428
  """Process the streamed HTTP response data."""
431
429
  for _ in response.iter_content(chunk_size=1024):
432
430
  pass # Do nothing with data chunks
@@ -5,9 +5,7 @@ import random
5
5
  import threading
6
6
  import time
7
7
  from pathlib import Path
8
- from typing import Any, Optional
9
-
10
- import requests
8
+ from typing import Any
11
9
 
12
10
  from ultralytics import __version__
13
11
  from ultralytics.utils import (
@@ -78,7 +76,7 @@ def request_with_credentials(url: str) -> Any:
78
76
  return output.eval_js("_hub_tmp")
79
77
 
80
78
 
81
- def requests_with_progress(method: str, url: str, **kwargs) -> requests.Response:
79
+ def requests_with_progress(method: str, url: str, **kwargs):
82
80
  """
83
81
  Make an HTTP request using the specified method and URL, with an optional progress bar.
84
82
 
@@ -95,6 +93,8 @@ def requests_with_progress(method: str, url: str, **kwargs) -> requests.Response
95
93
  content length.
96
94
  - If 'progress' is a number then progress bar will display assuming content length = progress.
97
95
  """
96
+ import requests # scoped as slow import
97
+
98
98
  progress = kwargs.pop("progress", False)
99
99
  if not progress:
100
100
  return requests.request(method, url, **kwargs)
@@ -120,7 +120,7 @@ def smart_request(
120
120
  verbose: bool = True,
121
121
  progress: bool = False,
122
122
  **kwargs,
123
- ) -> Optional[requests.Response]:
123
+ ):
124
124
  """
125
125
  Make an HTTP request using the 'requests' library, with exponential backoff retries up to a specified timeout.
126
126
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  from ultralytics.engine.predictor import BasePredictor
4
4
  from ultralytics.engine.results import Results
5
- from ultralytics.utils import ops
5
+ from ultralytics.utils import nms, ops
6
6
 
7
7
 
8
8
  class DetectionPredictor(BasePredictor):
@@ -53,7 +53,7 @@ class DetectionPredictor(BasePredictor):
53
53
  >>> processed_results = predictor.postprocess(preds, img, orig_imgs)
54
54
  """
55
55
  save_feats = getattr(self, "_feats", None) is not None
56
- preds = ops.non_max_suppression(
56
+ preds = nms.non_max_suppression(
57
57
  preds,
58
58
  self.args.conf,
59
59
  self.args.iou,
@@ -9,7 +9,7 @@ import torch
9
9
 
10
10
  from ultralytics.data import build_dataloader, build_yolo_dataset, converter
11
11
  from ultralytics.engine.validator import BaseValidator
12
- from ultralytics.utils import LOGGER, ops
12
+ from ultralytics.utils import LOGGER, nms, ops
13
13
  from ultralytics.utils.checks import check_requirements
14
14
  from ultralytics.utils.metrics import ConfusionMatrix, DetMetrics, box_iou
15
15
  from ultralytics.utils.plotting import plot_images
@@ -115,7 +115,7 @@ class DetectionValidator(BaseValidator):
115
115
  (List[Dict[str, torch.Tensor]]): Processed predictions after NMS, where each dict contains
116
116
  'bboxes', 'conf', 'cls', and 'extra' tensors.
117
117
  """
118
- outputs = ops.non_max_suppression(
118
+ outputs = nms.non_max_suppression(
119
119
  preds,
120
120
  self.args.conf,
121
121
  self.args.iou,
@@ -9,6 +9,7 @@ import torch
9
9
  from ultralytics.models.yolo.detect import DetectionValidator
10
10
  from ultralytics.utils import LOGGER, ops
11
11
  from ultralytics.utils.metrics import OBBMetrics, batch_probiou
12
+ from ultralytics.utils.nms import TorchNMS
12
13
 
13
14
 
14
15
  class OBBValidator(DetectionValidator):
@@ -281,7 +282,7 @@ class OBBValidator(DetectionValidator):
281
282
  b = bbox[:, :5].clone()
282
283
  b[:, :2] += c
283
284
  # 0.3 could get results close to the ones from official merging script, even slightly better.
284
- i = ops.nms_rotated(b, scores, 0.3)
285
+ i = TorchNMS.fast_nms(b, scores, 0.3, iou_func=batch_probiou)
285
286
  bbox = bbox[i]
286
287
 
287
288
  b = ops.xywhr2xyxyxyxy(bbox[:, :5]).view(-1, 8)
@@ -127,14 +127,14 @@ class AutoBackend(nn.Module):
127
127
  _model_type: Determine the model type from file path.
128
128
 
129
129
  Examples:
130
- >>> model = AutoBackend(weights="yolo11n.pt", device="cuda")
130
+ >>> model = AutoBackend(model="yolo11n.pt", device="cuda")
131
131
  >>> results = model(img)
132
132
  """
133
133
 
134
134
  @torch.no_grad()
135
135
  def __init__(
136
136
  self,
137
- weights: Union[str, List[str], torch.nn.Module] = "yolo11n.pt",
137
+ model: Union[str, List[str], torch.nn.Module] = "yolo11n.pt",
138
138
  device: torch.device = torch.device("cpu"),
139
139
  dnn: bool = False,
140
140
  data: Optional[Union[str, Path]] = None,
@@ -146,7 +146,7 @@ class AutoBackend(nn.Module):
146
146
  Initialize the AutoBackend for inference.
147
147
 
148
148
  Args:
149
- weights (str | List[str] | torch.nn.Module): Path to the model weights file or a module instance.
149
+ model (str | List[str] | torch.nn.Module): Path to the model weights file or a module instance.
150
150
  device (torch.device): Device to run the model on.
151
151
  dnn (bool): Use OpenCV DNN module for ONNX inference.
152
152
  data (str | Path, optional): Path to the additional data.yaml file containing class names.
@@ -155,8 +155,8 @@ class AutoBackend(nn.Module):
155
155
  verbose (bool): Enable verbose logging.
156
156
  """
157
157
  super().__init__()
158
- w = str(weights[0] if isinstance(weights, list) else weights)
159
- nn_module = isinstance(weights, torch.nn.Module)
158
+ w = str(model[0] if isinstance(model, list) else model)
159
+ nn_module = isinstance(model, torch.nn.Module)
160
160
  (
161
161
  pt,
162
162
  jit,
@@ -180,7 +180,7 @@ class AutoBackend(nn.Module):
180
180
  nhwc = coreml or saved_model or pb or tflite or edgetpu or rknn # BHWC formats (vs torch BCWH)
181
181
  stride, ch = 32, 3 # default stride and channels
182
182
  end2end, dynamic = False, False
183
- model, metadata, task = None, None, None
183
+ metadata, task = None, None
184
184
 
185
185
  # Set device
186
186
  cuda = isinstance(device, torch.device) and torch.cuda.is_available() and device.type != "cpu" # use CUDA
@@ -192,36 +192,32 @@ class AutoBackend(nn.Module):
192
192
  if not (pt or triton or nn_module):
193
193
  w = attempt_download_asset(w)
194
194
 
195
- # In-memory PyTorch model
196
- if nn_module:
197
- if fuse:
198
- if IS_JETSON and is_jetson(jetpack=5):
199
- # Jetson Jetpack5 requires device before fuse https://github.com/ultralytics/ultralytics/pull/21028
200
- weights = weights.to(device)
201
- weights = weights.fuse(verbose=verbose)
202
- model = weights.to(device)
203
- if hasattr(model, "kpt_shape"):
204
- kpt_shape = model.kpt_shape # pose-only
205
- stride = max(int(model.stride.max()), 32) # model stride
206
- names = model.module.names if hasattr(model, "module") else model.names # get class names
207
- model.half() if fp16 else model.float()
208
- ch = model.yaml.get("channels", 3)
209
- self.model = model # explicitly assign for to(), cpu(), cuda(), half()
210
- pt = True
211
-
212
- # PyTorch
213
- elif pt:
214
- from ultralytics.nn.tasks import attempt_load_weights
195
+ # PyTorch (in-memory or file)
196
+ if nn_module or pt:
197
+ if nn_module:
198
+ pt = True
199
+ if fuse:
200
+ if IS_JETSON and is_jetson(jetpack=5):
201
+ # Jetson Jetpack5 requires device before fuse https://github.com/ultralytics/ultralytics/pull/21028
202
+ model = model.to(device)
203
+ model = model.fuse(verbose=verbose)
204
+ model = model.to(device)
205
+ else: # pt file
206
+ from ultralytics.nn.tasks import attempt_load_weights
207
+
208
+ model = attempt_load_weights(
209
+ model if isinstance(model, list) else w, device=device, inplace=True, fuse=fuse
210
+ )
215
211
 
216
- model = attempt_load_weights(
217
- weights if isinstance(weights, list) else w, device=device, inplace=True, fuse=fuse
218
- )
212
+ # Common PyTorch model processing
219
213
  if hasattr(model, "kpt_shape"):
220
214
  kpt_shape = model.kpt_shape # pose-only
221
215
  stride = max(int(model.stride.max()), 32) # model stride
222
216
  names = model.module.names if hasattr(model, "module") else model.names # get class names
223
217
  model.half() if fp16 else model.float()
224
218
  ch = model.yaml.get("channels", 3)
219
+ for p in model.parameters():
220
+ p.requires_grad = False
225
221
  self.model = model # explicitly assign for to(), cpu(), cuda(), half()
226
222
 
227
223
  # TorchScript
@@ -407,6 +403,7 @@ class AutoBackend(nn.Module):
407
403
 
408
404
  # CoreML
409
405
  elif coreml:
406
+ check_requirements("coremltools>=8.0")
410
407
  LOGGER.info(f"Loading {w} for CoreML inference...")
411
408
  import coremltools as ct
412
409
 
@@ -601,18 +598,13 @@ class AutoBackend(nn.Module):
601
598
  dynamic = metadata.get("args", {}).get("dynamic", dynamic)
602
599
  ch = metadata.get("channels", 3)
603
600
  elif not (pt or triton or nn_module):
604
- LOGGER.warning(f"Metadata not found for 'model={weights}'")
601
+ LOGGER.warning(f"Metadata not found for 'model={w}'")
605
602
 
606
603
  # Check names
607
604
  if "names" not in locals(): # names missing
608
605
  names = default_class_names(data)
609
606
  names = check_class_names(names)
610
607
 
611
- # Disable gradients
612
- if pt:
613
- for p in model.parameters():
614
- p.requires_grad = False
615
-
616
608
  self.__dict__.update(locals()) # assign all variables to self
617
609
 
618
610
  def forward(
@@ -858,8 +850,6 @@ class AutoBackend(nn.Module):
858
850
  Args:
859
851
  imgsz (tuple): The shape of the dummy input tensor in the format (batch_size, channels, height, width)
860
852
  """
861
- import torchvision # noqa (import here so torchvision import time not recorded in postprocess time)
862
-
863
853
  warmup_types = self.pt, self.jit, self.onnx, self.engine, self.saved_model, self.pb, self.triton, self.nn_module
864
854
  if any(warmup_types) and (self.device.type != "cpu" or self.triton):
865
855
  im = torch.empty(*imgsz, dtype=torch.half if self.fp16 else torch.float, device=self.device) # input
@@ -878,7 +868,7 @@ class AutoBackend(nn.Module):
878
868
  (List[bool]): List of booleans indicating the model type.
879
869
 
880
870
  Examples:
881
- >>> model = AutoBackend(weights="path/to/model.onnx")
871
+ >>> model = AutoBackend(model="path/to/model.onnx")
882
872
  >>> model_type = model._model_type() # returns "onnx"
883
873
  """
884
874
  from ultralytics.engine.exporter import export_formats
@@ -7,14 +7,14 @@ blocks, attention mechanisms, transformer components, and detection/segmentation
7
7
 
8
8
  Examples:
9
9
  Visualize a module with Netron
10
- >>> from ultralytics.nn.modules import *
10
+ >>> from ultralytics.nn.modules import Conv
11
11
  >>> import torch
12
- >>> import os
12
+ >>> import subprocess
13
13
  >>> x = torch.ones(1, 128, 40, 40)
14
14
  >>> m = Conv(128, 128)
15
15
  >>> f = f"{m._get_name()}.onnx"
16
16
  >>> torch.onnx.export(m, x, f)
17
- >>> os.system(f"onnxslim {f} {f} && open {f}") # pip install onnxslim
17
+ >>> subprocess.run(f"onnxslim {f} {f} && open {f}", shell=True, check=True) # pip install onnxslim
18
18
  """
19
19
 
20
20
  from .block import (
@@ -10,6 +10,7 @@ import torch.nn as nn
10
10
  import torch.nn.functional as F
11
11
  from torch.nn.init import constant_, xavier_uniform_
12
12
 
13
+ from ultralytics.utils import NOT_MACOS14
13
14
  from ultralytics.utils.tal import TORCH_1_10, dist2bbox, dist2rbox, make_anchors
14
15
  from ultralytics.utils.torch_utils import fuse_conv_and_bn, smart_inference_mode
15
16
 
@@ -408,7 +409,10 @@ class Pose(Detect):
408
409
  else:
409
410
  y = kpts.clone()
410
411
  if ndim == 3:
411
- y[:, 2::ndim] = y[:, 2::ndim].sigmoid() # sigmoid (WARNING: inplace .sigmoid_() Apple MPS bug)
412
+ if NOT_MACOS14:
413
+ y[:, 2::ndim].sigmoid_()
414
+ else: # Apple macOS14 MPS bug https://github.com/ultralytics/ultralytics/pull/21878
415
+ y[:, 2::ndim] = y[:, 2::ndim].sigmoid()
412
416
  y[:, 0::ndim] = (y[:, 0::ndim] * 2.0 + (self.anchors[0] - 0.5)) * self.strides
413
417
  y[:, 1::ndim] = (y[:, 1::ndim] * 2.0 + (self.anchors[1] - 0.5)) * self.strides
414
418
  return y
@@ -8,6 +8,7 @@ import logging
8
8
  import os
9
9
  import platform
10
10
  import re
11
+ import socket
11
12
  import subprocess
12
13
  import sys
13
14
  import threading
@@ -44,6 +45,7 @@ VERBOSE = str(os.getenv("YOLO_VERBOSE", True)).lower() == "true" # global verbo
44
45
  LOGGING_NAME = "ultralytics"
45
46
  MACOS, LINUX, WINDOWS = (platform.system() == x for x in ["Darwin", "Linux", "Windows"]) # environment booleans
46
47
  MACOS_VERSION = platform.mac_ver()[0] if MACOS else None
48
+ NOT_MACOS14 = not (MACOS and MACOS_VERSION.startswith("14."))
47
49
  ARM64 = platform.machine() in {"arm64", "aarch64"} # ARM64 booleans
48
50
  PYTHON_VERSION = platform.python_version()
49
51
  TORCH_VERSION = torch.__version__
@@ -752,20 +754,21 @@ def is_jetson(jetpack=None) -> bool:
752
754
 
753
755
  def is_online() -> bool:
754
756
  """
755
- Check internet connectivity by attempting to connect to a known online host.
757
+ Fast online check using DNS (v4/v6) resolution (Cloudflare + Google).
756
758
 
757
759
  Returns:
758
760
  (bool): True if connection is successful, False otherwise.
759
761
  """
760
- try:
761
- assert str(os.getenv("YOLO_OFFLINE", "")).lower() != "true" # check if ENV var YOLO_OFFLINE="True"
762
- import socket
762
+ if str(os.getenv("YOLO_OFFLINE", "")).lower() == "true":
763
+ return False
763
764
 
764
- for dns in ("1.1.1.1", "8.8.8.8"): # check Cloudflare and Google DNS
765
- socket.create_connection(address=(dns, 80), timeout=2.0).close()
765
+ for host in ("one.one.one.one", "dns.google"):
766
+ try:
767
+ socket.getaddrinfo(host, 0, socket.AF_UNSPEC, 0, 0, socket.AI_ADDRCONFIG)
766
768
  return True
767
- except Exception:
768
- return False
769
+ except OSError:
770
+ continue
771
+ return False
769
772
 
770
773
 
771
774
  def is_pip_package(filepath: str = __name__) -> bool:
@@ -842,6 +845,7 @@ def is_git_dir():
842
845
  return GIT_DIR is not None
843
846
 
844
847
 
848
+ @lru_cache(maxsize=1)
845
849
  def get_git_origin_url():
846
850
  """
847
851
  Retrieve the origin URL of a git repository.
@@ -851,12 +855,14 @@ def get_git_origin_url():
851
855
  """
852
856
  if IS_GIT_DIR:
853
857
  try:
854
- origin = subprocess.check_output(["git", "config", "--get", "remote.origin.url"])
855
- return origin.decode().strip()
858
+ return subprocess.check_output(
859
+ ["git", "config", "--get", "remote.origin.url"], stderr=subprocess.DEVNULL, text=True
860
+ ).strip()
856
861
  except subprocess.CalledProcessError:
857
862
  return None
858
863
 
859
864
 
865
+ @lru_cache(maxsize=1)
860
866
  def get_git_branch():
861
867
  """
862
868
  Return the current git branch name. If not in a git repository, return None.
@@ -866,8 +872,24 @@ def get_git_branch():
866
872
  """
867
873
  if IS_GIT_DIR:
868
874
  try:
869
- origin = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"])
870
- return origin.decode().strip()
875
+ return subprocess.check_output(
876
+ ["git", "rev-parse", "--abbrev-ref", "HEAD"], stderr=subprocess.DEVNULL, text=True
877
+ ).strip()
878
+ except subprocess.CalledProcessError:
879
+ return None
880
+
881
+
882
+ @lru_cache(maxsize=1)
883
+ def get_git_commit():
884
+ """
885
+ Return the current git commit hash. If not in a git repository, return None.
886
+
887
+ Returns:
888
+ (str | None): The current git commit hash or None if not a git directory.
889
+ """
890
+ if IS_GIT_DIR:
891
+ try:
892
+ return subprocess.check_output(["git", "rev-parse", "HEAD"], stderr=subprocess.DEVNULL, text=True).strip()
871
893
  except subprocess.CalledProcessError:
872
894
  return None
873
895
 
@@ -1,12 +1,13 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
3
  from ultralytics.utils import RANK, SETTINGS
4
- from ultralytics.utils.logger import DEFAULT_LOG_PATH, ConsoleLogger, SystemLogger
5
4
 
6
5
 
7
6
  def on_pretrain_routine_start(trainer):
8
7
  """Initialize and start console logging immediately at the very beginning."""
9
8
  if RANK in {-1, 0}:
9
+ from ultralytics.utils.logger import DEFAULT_LOG_PATH, ConsoleLogger, SystemLogger
10
+
10
11
  trainer.system_logger = SystemLogger()
11
12
  trainer.console_logger = ConsoleLogger(DEFAULT_LOG_PATH)
12
13
  trainer.console_logger.start_capture()