dgenerate-ultralytics-headless 8.3.187__tar.gz → 8.3.189__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 (282) hide show
  1. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/PKG-INFO +3 -2
  2. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +3 -2
  3. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/dgenerate_ultralytics_headless.egg-info/requires.txt +6 -1
  4. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/pyproject.toml +2 -1
  5. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/__init__.py +1 -1
  6. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/engine/exporter.py +4 -4
  7. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/rtdetr/val.py +3 -1
  8. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/detect/val.py +13 -2
  9. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/obb/val.py +3 -1
  10. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/segment/val.py +0 -3
  11. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/autobackend.py +6 -3
  12. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/tasks.py +2 -2
  13. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/__init__.py +15 -2
  14. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/benchmarks.py +12 -6
  15. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/downloads.py +44 -38
  16. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/torch_utils.py +50 -47
  17. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/tqdm.py +25 -37
  18. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/LICENSE +0 -0
  19. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/README.md +0 -0
  20. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +0 -0
  21. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
  22. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
  23. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
  24. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/setup.cfg +0 -0
  25. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/tests/__init__.py +0 -0
  26. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/tests/conftest.py +0 -0
  27. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/tests/test_cli.py +0 -0
  28. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/tests/test_cuda.py +0 -0
  29. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/tests/test_engine.py +0 -0
  30. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/tests/test_exports.py +0 -0
  31. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/tests/test_integrations.py +0 -0
  32. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/tests/test_python.py +0 -0
  33. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/tests/test_solutions.py +0 -0
  34. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/assets/bus.jpg +0 -0
  35. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/assets/zidane.jpg +0 -0
  36. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/__init__.py +0 -0
  37. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  38. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  39. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  40. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  41. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  42. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  43. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  44. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  45. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  46. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  47. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  48. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  49. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  50. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  51. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/coco.yaml +0 -0
  52. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  53. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  54. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  55. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  56. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  57. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  58. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  59. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  60. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  61. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  62. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  63. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  64. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  65. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  66. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  67. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  68. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/signature.yaml +0 -0
  69. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  70. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/datasets/xView.yaml +0 -0
  71. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/default.yaml +0 -0
  72. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  73. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  74. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  75. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  76. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  77. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  78. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  79. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  80. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  81. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  82. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  83. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  84. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  85. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  86. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  87. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  88. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  89. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  90. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  91. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  92. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  93. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  94. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  95. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  96. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  97. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  98. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  99. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  100. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  101. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  102. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  103. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  104. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  105. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  106. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  107. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  108. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  109. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  110. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  111. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  112. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  113. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  114. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  115. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  116. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  117. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  118. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  119. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  120. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  121. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  122. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  123. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  124. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  125. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  126. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  127. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  128. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  129. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/__init__.py +0 -0
  130. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/annotator.py +0 -0
  131. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/augment.py +0 -0
  132. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/base.py +0 -0
  133. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/build.py +0 -0
  134. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/converter.py +0 -0
  135. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/dataset.py +0 -0
  136. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/loaders.py +0 -0
  137. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/scripts/download_weights.sh +0 -0
  138. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/scripts/get_coco.sh +0 -0
  139. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/scripts/get_coco128.sh +0 -0
  140. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  141. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/split.py +0 -0
  142. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/split_dota.py +0 -0
  143. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/data/utils.py +0 -0
  144. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/engine/__init__.py +0 -0
  145. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/engine/model.py +0 -0
  146. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/engine/predictor.py +0 -0
  147. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/engine/results.py +0 -0
  148. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/engine/trainer.py +0 -0
  149. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/engine/tuner.py +0 -0
  150. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/engine/validator.py +0 -0
  151. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/hub/__init__.py +0 -0
  152. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/hub/auth.py +0 -0
  153. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/hub/google/__init__.py +0 -0
  154. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/hub/session.py +0 -0
  155. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/hub/utils.py +0 -0
  156. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/__init__.py +0 -0
  157. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/fastsam/__init__.py +0 -0
  158. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/fastsam/model.py +0 -0
  159. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/fastsam/predict.py +0 -0
  160. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/fastsam/utils.py +0 -0
  161. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/fastsam/val.py +0 -0
  162. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/nas/__init__.py +0 -0
  163. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/nas/model.py +0 -0
  164. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/nas/predict.py +0 -0
  165. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/nas/val.py +0 -0
  166. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/rtdetr/__init__.py +0 -0
  167. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/rtdetr/model.py +0 -0
  168. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/rtdetr/predict.py +0 -0
  169. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/rtdetr/train.py +0 -0
  170. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/__init__.py +0 -0
  171. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/amg.py +0 -0
  172. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/build.py +0 -0
  173. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/model.py +0 -0
  174. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/modules/__init__.py +0 -0
  175. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/modules/blocks.py +0 -0
  176. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/modules/decoders.py +0 -0
  177. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/modules/encoders.py +0 -0
  178. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  179. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/modules/sam.py +0 -0
  180. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  181. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/modules/transformer.py +0 -0
  182. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/modules/utils.py +0 -0
  183. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/sam/predict.py +0 -0
  184. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/utils/__init__.py +0 -0
  185. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/utils/loss.py +0 -0
  186. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/utils/ops.py +0 -0
  187. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/__init__.py +0 -0
  188. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/classify/__init__.py +0 -0
  189. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/classify/predict.py +0 -0
  190. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/classify/train.py +0 -0
  191. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/classify/val.py +0 -0
  192. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/detect/__init__.py +0 -0
  193. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/detect/predict.py +0 -0
  194. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/detect/train.py +0 -0
  195. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/model.py +0 -0
  196. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/obb/__init__.py +0 -0
  197. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/obb/predict.py +0 -0
  198. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/obb/train.py +0 -0
  199. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/pose/__init__.py +0 -0
  200. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/pose/predict.py +0 -0
  201. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/pose/train.py +0 -0
  202. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/pose/val.py +0 -0
  203. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/segment/__init__.py +0 -0
  204. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/segment/predict.py +0 -0
  205. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/segment/train.py +0 -0
  206. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/world/__init__.py +0 -0
  207. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/world/train.py +0 -0
  208. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/world/train_world.py +0 -0
  209. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  210. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  211. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/yoloe/train.py +0 -0
  212. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  213. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/models/yolo/yoloe/val.py +0 -0
  214. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/__init__.py +0 -0
  215. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/modules/__init__.py +0 -0
  216. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/modules/activation.py +0 -0
  217. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/modules/block.py +0 -0
  218. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/modules/conv.py +0 -0
  219. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/modules/head.py +0 -0
  220. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/modules/transformer.py +0 -0
  221. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/modules/utils.py +0 -0
  222. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/nn/text_model.py +0 -0
  223. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/py.typed +0 -0
  224. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/__init__.py +0 -0
  225. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/ai_gym.py +0 -0
  226. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/analytics.py +0 -0
  227. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/config.py +0 -0
  228. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/distance_calculation.py +0 -0
  229. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/heatmap.py +0 -0
  230. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/instance_segmentation.py +0 -0
  231. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/object_blurrer.py +0 -0
  232. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/object_counter.py +0 -0
  233. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/object_cropper.py +0 -0
  234. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/parking_management.py +0 -0
  235. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/queue_management.py +0 -0
  236. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/region_counter.py +0 -0
  237. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/security_alarm.py +0 -0
  238. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/similarity_search.py +0 -0
  239. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/solutions.py +0 -0
  240. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/speed_estimation.py +0 -0
  241. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/streamlit_inference.py +0 -0
  242. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/templates/similarity-search.html +0 -0
  243. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/trackzone.py +0 -0
  244. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/solutions/vision_eye.py +0 -0
  245. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/trackers/__init__.py +0 -0
  246. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/trackers/basetrack.py +0 -0
  247. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/trackers/bot_sort.py +0 -0
  248. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/trackers/byte_tracker.py +0 -0
  249. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/trackers/track.py +0 -0
  250. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/trackers/utils/__init__.py +0 -0
  251. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/trackers/utils/gmc.py +0 -0
  252. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  253. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/trackers/utils/matching.py +0 -0
  254. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/autobatch.py +0 -0
  255. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/autodevice.py +0 -0
  256. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/__init__.py +0 -0
  257. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/base.py +0 -0
  258. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/clearml.py +0 -0
  259. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/comet.py +0 -0
  260. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/dvc.py +0 -0
  261. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/hub.py +0 -0
  262. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/mlflow.py +0 -0
  263. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/neptune.py +0 -0
  264. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/platform.py +0 -0
  265. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/raytune.py +0 -0
  266. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  267. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/callbacks/wb.py +0 -0
  268. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/checks.py +0 -0
  269. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/dist.py +0 -0
  270. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/errors.py +0 -0
  271. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/export.py +0 -0
  272. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/files.py +0 -0
  273. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/instance.py +0 -0
  274. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/logger.py +0 -0
  275. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/loss.py +0 -0
  276. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/metrics.py +0 -0
  277. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/ops.py +0 -0
  278. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/patches.py +0 -0
  279. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/plotting.py +0 -0
  280. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/tal.py +0 -0
  281. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/ultralytics/utils/triton.py +0 -0
  282. {dgenerate_ultralytics_headless-8.3.187 → dgenerate_ultralytics_headless-8.3.189}/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.187
3
+ Version: 8.3.189
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>
@@ -58,7 +58,8 @@ Requires-Dist: mkdocs-ultralytics-plugin>=0.1.29; extra == "dev"
58
58
  Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
59
59
  Provides-Extra: export
60
60
  Requires-Dist: numpy<2.0.0; extra == "export"
61
- Requires-Dist: onnx<1.18.0,>=1.12.0; extra == "export"
61
+ Requires-Dist: onnx>=1.12.0; platform_system != "Darwin" and extra == "export"
62
+ Requires-Dist: onnx<1.18.0,>=1.12.0; platform_system == "Darwin" and extra == "export"
62
63
  Requires-Dist: coremltools>=8.0; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
63
64
  Requires-Dist: scikit-learn>=1.3.2; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
64
65
  Requires-Dist: openvino>=2024.0.0; extra == "export"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.187
3
+ Version: 8.3.189
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>
@@ -58,7 +58,8 @@ Requires-Dist: mkdocs-ultralytics-plugin>=0.1.29; extra == "dev"
58
58
  Requires-Dist: mkdocs-macros-plugin>=1.0.5; extra == "dev"
59
59
  Provides-Extra: export
60
60
  Requires-Dist: numpy<2.0.0; extra == "export"
61
- Requires-Dist: onnx<1.18.0,>=1.12.0; extra == "export"
61
+ Requires-Dist: onnx>=1.12.0; platform_system != "Darwin" and extra == "export"
62
+ Requires-Dist: onnx<1.18.0,>=1.12.0; platform_system == "Darwin" and extra == "export"
62
63
  Requires-Dist: coremltools>=8.0; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
63
64
  Requires-Dist: scikit-learn>=1.3.2; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
64
65
  Requires-Dist: openvino>=2024.0.0; extra == "export"
@@ -28,7 +28,6 @@ mkdocs-macros-plugin>=1.0.5
28
28
 
29
29
  [export]
30
30
  numpy<2.0.0
31
- onnx<1.18.0,>=1.12.0
32
31
  openvino>=2024.0.0
33
32
  tensorflow<=2.19.0,>=2.0.0
34
33
  tensorflowjs>=2.0.0
@@ -39,10 +38,16 @@ h5py!=3.11.0
39
38
  [export:platform_machine == "aarch64" and python_version >= "3.9"]
40
39
  tensorstore>=0.1.63
41
40
 
41
+ [export:platform_system != "Darwin"]
42
+ onnx>=1.12.0
43
+
42
44
  [export:platform_system != "Windows" and python_version <= "3.13"]
43
45
  coremltools>=8.0
44
46
  scikit-learn>=1.3.2
45
47
 
48
+ [export:platform_system == "Darwin"]
49
+ onnx<1.18.0,>=1.12.0
50
+
46
51
  [extra]
47
52
  hub-sdk>=0.0.12
48
53
  ipython
@@ -92,7 +92,8 @@ dev = [
92
92
  ]
93
93
  export = [
94
94
  "numpy<2.0.0", # TF 2.20 compatibility
95
- "onnx>=1.12.0,<1.18.0", # ONNX export
95
+ "onnx>=1.12.0; platform_system != 'Darwin'", # ONNX export
96
+ "onnx>=1.12.0,<1.18.0; platform_system == 'Darwin'", # TF inference hanging on MacOS
96
97
  "coremltools>=8.0; platform_system != 'Windows' and python_version <= '3.13'", # CoreML supported on macOS and Linux
97
98
  "scikit-learn>=1.3.2; platform_system != 'Windows' and python_version <= '3.13'", # CoreML k-means quantization
98
99
  "openvino>=2024.0.0", # OpenVINO export
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.187"
3
+ __version__ = "8.3.189"
4
4
 
5
5
  import os
6
6
 
@@ -582,9 +582,9 @@ class Exporter:
582
582
  @try_export
583
583
  def export_onnx(self, prefix=colorstr("ONNX:")):
584
584
  """Export YOLO model to ONNX format."""
585
- requirements = ["onnx>=1.12.0,<1.18.0"]
585
+ requirements = ["onnx>=1.12.0"]
586
586
  if self.args.simplify:
587
- requirements += ["onnxslim>=0.1.59", "onnxruntime" + ("-gpu" if torch.cuda.is_available() else "")]
587
+ requirements += ["onnxslim>=0.1.65", "onnxruntime" + ("-gpu" if torch.cuda.is_available() else "")]
588
588
  check_requirements(requirements)
589
589
  import onnx # noqa
590
590
 
@@ -960,9 +960,9 @@ class Exporter:
960
960
  "sng4onnx>=1.0.1", # required by 'onnx2tf' package
961
961
  "onnx_graphsurgeon>=0.3.26", # required by 'onnx2tf' package
962
962
  "ai-edge-litert>=1.2.0,<1.4.0", # required by 'onnx2tf' package
963
- "onnx>=1.12.0,<1.18.0",
963
+ "onnx>=1.12.0",
964
964
  "onnx2tf>=1.26.3",
965
- "onnxslim>=0.1.59",
965
+ "onnxslim>=0.1.65",
966
966
  "onnxruntime-gpu" if cuda else "onnxruntime",
967
967
  "protobuf>=5",
968
968
  ),
@@ -196,7 +196,8 @@ class RTDETRValidator(DetectionValidator):
196
196
  with bounding box coordinates, confidence scores, and class predictions.
197
197
  pbatch (Dict[str, Any]): Batch dictionary containing 'imgsz', 'ori_shape', 'ratio_pad', and 'im_file'.
198
198
  """
199
- stem = Path(pbatch["im_file"]).stem
199
+ path = Path(pbatch["im_file"])
200
+ stem = path.stem
200
201
  image_id = int(stem) if stem.isnumeric() else stem
201
202
  box = predn["bboxes"].clone()
202
203
  box[..., [0, 2]] *= pbatch["ori_shape"][1] / self.args.imgsz # native-space pred
@@ -207,6 +208,7 @@ class RTDETRValidator(DetectionValidator):
207
208
  self.jdict.append(
208
209
  {
209
210
  "image_id": image_id,
211
+ "file_name": path.name,
210
212
  "category_id": self.class_map[int(c)],
211
213
  "bbox": [round(x, 3) for x in b],
212
214
  "score": round(s, 5),
@@ -372,8 +372,18 @@ class DetectionValidator(BaseValidator):
372
372
  predn (Dict[str, torch.Tensor]): Predictions dictionary containing 'bboxes', 'conf', and 'cls' keys
373
373
  with bounding box coordinates, confidence scores, and class predictions.
374
374
  pbatch (Dict[str, Any]): Batch dictionary containing 'imgsz', 'ori_shape', 'ratio_pad', and 'im_file'.
375
- """
376
- stem = Path(pbatch["im_file"]).stem
375
+
376
+ Examples:
377
+ >>> result = {
378
+ ... "image_id": 42,
379
+ ... "file_name": "42.jpg",
380
+ ... "category_id": 18,
381
+ ... "bbox": [258.15, 41.29, 348.26, 243.78],
382
+ ... "score": 0.236,
383
+ ... }
384
+ """
385
+ path = Path(pbatch["im_file"])
386
+ stem = path.stem
377
387
  image_id = int(stem) if stem.isnumeric() else stem
378
388
  box = ops.xyxy2xywh(predn["bboxes"]) # xywh
379
389
  box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner
@@ -381,6 +391,7 @@ class DetectionValidator(BaseValidator):
381
391
  self.jdict.append(
382
392
  {
383
393
  "image_id": image_id,
394
+ "file_name": path.name,
384
395
  "category_id": self.class_map[int(c)],
385
396
  "bbox": [round(x, 3) for x in b],
386
397
  "score": round(s, 5),
@@ -176,7 +176,8 @@ class OBBValidator(DetectionValidator):
176
176
  (x, y, w, h, angle) and polygon format (x1, y1, x2, y2, x3, y3, x4, y4) before adding them
177
177
  to the JSON dictionary.
178
178
  """
179
- stem = Path(pbatch["im_file"]).stem
179
+ path = Path(pbatch["im_file"])
180
+ stem = path.stem
180
181
  image_id = int(stem) if stem.isnumeric() else stem
181
182
  rbox = predn["bboxes"]
182
183
  poly = ops.xywhr2xyxyxyxy(rbox).view(-1, 8)
@@ -184,6 +185,7 @@ class OBBValidator(DetectionValidator):
184
185
  self.jdict.append(
185
186
  {
186
187
  "image_id": image_id,
188
+ "file_name": path.name,
187
189
  "category_id": self.class_map[int(c)],
188
190
  "score": round(s, 5),
189
191
  "rbox": [round(x, 3) for x in r],
@@ -217,9 +217,6 @@ class SegmentationValidator(DetectionValidator):
217
217
  Args:
218
218
  predn (Dict[str, torch.Tensor]): Predictions containing bboxes, masks, confidence scores, and classes.
219
219
  pbatch (Dict[str, Any]): Batch dictionary containing 'imgsz', 'ori_shape', 'ratio_pad', and 'im_file'.
220
-
221
- Examples:
222
- >>> result = {"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}
223
220
  """
224
221
  from faster_coco_eval.core.mask import encode # noqa
225
222
 
@@ -14,7 +14,7 @@ import torch
14
14
  import torch.nn as nn
15
15
  from PIL import Image
16
16
 
17
- from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, YAML
17
+ from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, YAML, is_jetson
18
18
  from ultralytics.utils.checks import check_requirements, check_suffix, check_version, check_yaml, is_rockchip
19
19
  from ultralytics.utils.downloads import attempt_download_asset, is_url
20
20
 
@@ -194,9 +194,12 @@ class AutoBackend(nn.Module):
194
194
 
195
195
  # In-memory PyTorch model
196
196
  if nn_module:
197
- model = weights.to(device)
198
197
  if fuse:
199
- model = model.fuse(verbose=verbose)
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)
200
203
  if hasattr(model, "kpt_shape"):
201
204
  kpt_shape = model.kpt_shape # pose-only
202
205
  stride = max(int(model.stride.max()), 32) # model stride
@@ -1500,7 +1500,7 @@ def attempt_load_weights(weights, device=None, inplace=True, fuse=False):
1500
1500
  for w in weights if isinstance(weights, list) else [weights]:
1501
1501
  ckpt, w = torch_safe_load(w) # load ckpt
1502
1502
  args = {**DEFAULT_CFG_DICT, **ckpt["train_args"]} if "train_args" in ckpt else None # combined args
1503
- model = (ckpt.get("ema") or ckpt["model"]).to(device).float() # FP32 model
1503
+ model = (ckpt.get("ema") or ckpt["model"]).float() # FP32 model
1504
1504
 
1505
1505
  # Model compatibility updates
1506
1506
  model.args = args # attach args to model
@@ -1510,7 +1510,7 @@ def attempt_load_weights(weights, device=None, inplace=True, fuse=False):
1510
1510
  model.stride = torch.tensor([32.0])
1511
1511
 
1512
1512
  # Append
1513
- ensemble.append(model.fuse().eval() if fuse and hasattr(model, "fuse") else model.eval()) # model in eval mode
1513
+ ensemble.append((model.fuse().eval() if fuse and hasattr(model, "fuse") else model.eval()).to(device))
1514
1514
 
1515
1515
  # Module updates
1516
1516
  for m in ensemble.modules():
@@ -12,6 +12,7 @@ import subprocess
12
12
  import sys
13
13
  import threading
14
14
  import time
15
+ from functools import lru_cache
15
16
  from pathlib import Path
16
17
  from threading import Lock
17
18
  from types import SimpleNamespace
@@ -727,14 +728,26 @@ def is_raspberrypi() -> bool:
727
728
  return "rpi" in DEVICE_MODEL
728
729
 
729
730
 
730
- def is_jetson() -> bool:
731
+ @lru_cache(maxsize=3)
732
+ def is_jetson(jetpack=None) -> bool:
731
733
  """
732
734
  Determine if the Python environment is running on an NVIDIA Jetson device.
733
735
 
736
+ Args:
737
+ jetpack (int | None): If specified, check for specific JetPack version (4, 5, 6).
738
+
734
739
  Returns:
735
740
  (bool): True if running on an NVIDIA Jetson device, False otherwise.
736
741
  """
737
- return "tegra" in DEVICE_MODEL
742
+ if jetson := ("tegra" in DEVICE_MODEL):
743
+ if jetpack:
744
+ try:
745
+ content = open("/etc/nv_tegra_release").read()
746
+ version_map = {4: "R32", 5: "R35", 6: "R36"} # JetPack to L4T major version mapping
747
+ return jetpack in version_map and version_map[jetpack] in content
748
+ except Exception:
749
+ return False
750
+ return jetson
738
751
 
739
752
 
740
753
  def is_online() -> bool:
@@ -90,9 +90,13 @@ def benchmark(
90
90
 
91
91
  import polars as pl # scope for faster 'import ultralytics'
92
92
 
93
- pl.Config.set_tbl_cols(10)
94
- pl.Config.set_tbl_width_chars(120)
95
- pl.Config.set_tbl_hide_dataframe_shape(True)
93
+ pl.Config.set_tbl_cols(-1) # Show all columns
94
+ pl.Config.set_tbl_rows(-1) # Show all rows
95
+ pl.Config.set_tbl_width_chars(-1) # No width limit
96
+ pl.Config.set_tbl_hide_column_data_types(True) # Hide data types
97
+ pl.Config.set_tbl_hide_dataframe_shape(True) # Hide shape info
98
+ pl.Config.set_tbl_formatting("ASCII_BORDERS_ONLY_CONDENSED")
99
+
96
100
  device = select_device(device, verbose=False)
97
101
  if isinstance(model, (str, Path)):
98
102
  model = YOLO(model)
@@ -194,12 +198,14 @@ def benchmark(
194
198
 
195
199
  # Print results
196
200
  check_yolo(device=device) # print system info
197
- df = pl.DataFrame(y, schema=["Format", "Status❔", "Size (MB)", key, "Inference time (ms/im)", "FPS"])
201
+ df = pl.DataFrame(y, schema=["Format", "Status❔", "Size (MB)", key, "Inference time (ms/im)", "FPS"], orient="row")
202
+ df = df.with_row_index(" ", offset=1) # add index info
203
+ df_display = df.with_columns(pl.all().cast(pl.String).fill_null("-"))
198
204
 
199
205
  name = model.model_name
200
206
  dt = time.time() - t0
201
207
  legend = "Benchmarks legend: - ✅ Success - ❎ Export passed but validation failed - ❌️ Export failed"
202
- s = f"\nBenchmarks complete for {name} on {data} at imgsz={imgsz} ({dt:.2f}s)\n{legend}\n{df.fill_null('-')}\n"
208
+ s = f"\nBenchmarks complete for {name} on {data} at imgsz={imgsz} ({dt:.2f}s)\n{legend}\n{df_display}\n"
203
209
  LOGGER.info(s)
204
210
  with open("benchmarks.log", "a", errors="ignore", encoding="utf-8") as f:
205
211
  f.write(s)
@@ -209,7 +215,7 @@ def benchmark(
209
215
  floor = verbose # minimum metric floor to pass, i.e. = 0.29 mAP for YOLOv5n
210
216
  assert all(x > floor for x in metrics if not np.isnan(x)), f"Benchmark failure: metric(s) < floor {floor}"
211
217
 
212
- return df
218
+ return df_display
213
219
 
214
220
 
215
221
  class RF100Benchmark:
@@ -1,12 +1,13 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
+ from __future__ import annotations
4
+
3
5
  import re
4
6
  import shutil
5
7
  import subprocess
6
8
  from itertools import repeat
7
9
  from multiprocessing.pool import ThreadPool
8
10
  from pathlib import Path
9
- from typing import List, Tuple
10
11
  from urllib import parse, request
11
12
 
12
13
  from ultralytics.utils import LOGGER, TQDM, checks, clean_url, emojis, is_online, url2file
@@ -41,7 +42,7 @@ GITHUB_ASSETS_NAMES = frozenset(
41
42
  GITHUB_ASSETS_STEMS = frozenset(k.rpartition(".")[0] for k in GITHUB_ASSETS_NAMES)
42
43
 
43
44
 
44
- def is_url(url, check: bool = False) -> bool:
45
+ def is_url(url: str | Path, check: bool = False) -> bool:
45
46
  """
46
47
  Validate if the given string is a URL and optionally check if the URL exists online.
47
48
 
@@ -68,7 +69,7 @@ def is_url(url, check: bool = False) -> bool:
68
69
  return False
69
70
 
70
71
 
71
- def delete_dsstore(path, files_to_delete=(".DS_Store", "__MACOSX")):
72
+ def delete_dsstore(path: str | Path, files_to_delete: tuple[str, ...] = (".DS_Store", "__MACOSX")) -> None:
72
73
  """
73
74
  Delete all specified system files in a directory.
74
75
 
@@ -91,7 +92,12 @@ def delete_dsstore(path, files_to_delete=(".DS_Store", "__MACOSX")):
91
92
  f.unlink()
92
93
 
93
94
 
94
- def zip_directory(directory, compress: bool = True, exclude=(".DS_Store", "__MACOSX"), progress: bool = True) -> Path:
95
+ def zip_directory(
96
+ directory: str | Path,
97
+ compress: bool = True,
98
+ exclude: tuple[str, ...] = (".DS_Store", "__MACOSX"),
99
+ progress: bool = True,
100
+ ) -> Path:
95
101
  """
96
102
  Zip the contents of a directory, excluding specified files.
97
103
 
@@ -129,9 +135,9 @@ def zip_directory(directory, compress: bool = True, exclude=(".DS_Store", "__MAC
129
135
 
130
136
 
131
137
  def unzip_file(
132
- file,
133
- path=None,
134
- exclude=(".DS_Store", "__MACOSX"),
138
+ file: str | Path,
139
+ path: str | Path | None = None,
140
+ exclude: tuple[str, ...] = (".DS_Store", "__MACOSX"),
135
141
  exist_ok: bool = False,
136
142
  progress: bool = True,
137
143
  ) -> Path:
@@ -198,8 +204,8 @@ def unzip_file(
198
204
 
199
205
 
200
206
  def check_disk_space(
201
- url: str = "https://ultralytics.com/assets/coco8.zip",
202
- path=Path.cwd(),
207
+ file_bytes: int,
208
+ path: str | Path = Path.cwd(),
203
209
  sf: float = 1.5,
204
210
  hard: bool = True,
205
211
  ) -> bool:
@@ -207,7 +213,7 @@ def check_disk_space(
207
213
  Check if there is sufficient disk space to download and store a file.
208
214
 
209
215
  Args:
210
- url (str, optional): The URL to the file.
216
+ file_bytes (int): The file size in bytes.
211
217
  path (str | Path, optional): The path or drive to check the available free space on.
212
218
  sf (float, optional): Safety factor, the multiplier for the required free space.
213
219
  hard (bool, optional): Whether to throw an error or not on insufficient disk space.
@@ -215,26 +221,14 @@ def check_disk_space(
215
221
  Returns:
216
222
  (bool): True if there is sufficient disk space, False otherwise.
217
223
  """
218
- import requests # slow import
219
-
220
- try:
221
- r = requests.head(url) # response
222
- assert r.status_code < 400, f"URL error for {url}: {r.status_code} {r.reason}" # check response
223
- except Exception:
224
- return True # requests issue, default to True
225
-
226
- # Check file size
227
- gib = 1 << 30 # bytes per GiB
228
- data = int(r.headers.get("Content-Length", 0)) / gib # file size (GB)
229
- total, used, free = (x / gib for x in shutil.disk_usage(path)) # bytes
230
-
231
- if data * sf < free:
224
+ total, used, free = shutil.disk_usage(path) # bytes
225
+ if file_bytes * sf < free:
232
226
  return True # sufficient space
233
227
 
234
228
  # Insufficient space
235
229
  text = (
236
- f"Insufficient free disk space {free:.1f} GB < {data * sf:.3f} GB required, "
237
- f"Please free {data * sf - free:.1f} GB additional disk space and try again."
230
+ f"Insufficient free disk space {free >> 30:.3f} GB < {int(file_bytes * sf) >> 30:.3f} GB required, "
231
+ f"Please free {int(file_bytes * sf - free) >> 30:.3f} GB additional disk space and try again."
238
232
  )
239
233
  if hard:
240
234
  raise MemoryError(text)
@@ -242,7 +236,7 @@ def check_disk_space(
242
236
  return False
243
237
 
244
238
 
245
- def get_google_drive_file_info(link: str) -> Tuple[str, str]:
239
+ def get_google_drive_file_info(link: str) -> tuple[str, str | None]:
246
240
  """
247
241
  Retrieve the direct download link and filename for a shareable Google Drive file link.
248
242
 
@@ -283,9 +277,9 @@ def get_google_drive_file_info(link: str) -> Tuple[str, str]:
283
277
 
284
278
 
285
279
  def safe_download(
286
- url,
287
- file=None,
288
- dir=None,
280
+ url: str | Path,
281
+ file: str | Path | None = None,
282
+ dir: str | Path | None = None,
289
283
  unzip: bool = True,
290
284
  delete: bool = False,
291
285
  curl: bool = False,
@@ -293,7 +287,7 @@ def safe_download(
293
287
  min_bytes: float = 1e0,
294
288
  exist_ok: bool = False,
295
289
  progress: bool = True,
296
- ):
290
+ ) -> Path | str:
297
291
  """
298
292
  Download files from a URL with options for retrying, unzipping, and deleting the downloaded file. Enhanced with
299
293
  robust partial download detection using Content-Length validation.
@@ -335,7 +329,6 @@ def safe_download(
335
329
  )
336
330
  desc = f"Downloading {uri} to '{f}'"
337
331
  f.parent.mkdir(parents=True, exist_ok=True) # make directory if missing
338
- check_disk_space(url, path=f.parent)
339
332
  curl_installed = shutil.which("curl")
340
333
  for i in range(retry + 1):
341
334
  try:
@@ -347,6 +340,9 @@ def safe_download(
347
340
  else: # urllib download
348
341
  with request.urlopen(url) as response:
349
342
  expected_size = int(response.getheader("Content-Length", 0))
343
+ if i == 0 and expected_size > 1048576:
344
+ check_disk_space(expected_size, path=f.parent)
345
+ buffer_size = max(8192, min(1048576, expected_size // 1000)) if expected_size else 8192
350
346
  with TQDM(
351
347
  total=expected_size,
352
348
  desc=desc,
@@ -356,7 +352,10 @@ def safe_download(
356
352
  unit_divisor=1024,
357
353
  ) as pbar:
358
354
  with open(f, "wb") as f_opened:
359
- for data in response:
355
+ while True:
356
+ data = response.read(buffer_size)
357
+ if not data:
358
+ break
360
359
  f_opened.write(data)
361
360
  pbar.update(len(data))
362
361
 
@@ -371,6 +370,8 @@ def safe_download(
371
370
  else:
372
371
  break # success
373
372
  f.unlink() # remove partial downloads
373
+ except MemoryError:
374
+ raise # Re-raise immediately - no point retrying if insufficient disk space
374
375
  except Exception as e:
375
376
  if i == 0 and not is_online():
376
377
  raise ConnectionError(emojis(f"❌ Download failure for {uri}. Environment is not online.")) from e
@@ -397,7 +398,7 @@ def get_github_assets(
397
398
  repo: str = "ultralytics/assets",
398
399
  version: str = "latest",
399
400
  retry: bool = False,
400
- ) -> Tuple[str, List[str]]:
401
+ ) -> tuple[str, list[str]]:
401
402
  """
402
403
  Retrieve the specified version's tag and assets from a GitHub repository.
403
404
 
@@ -430,7 +431,12 @@ def get_github_assets(
430
431
  return data["tag_name"], [x["name"] for x in data["assets"]] # tag, assets i.e. ['yolo11n.pt', 'yolov8s.pt', ...]
431
432
 
432
433
 
433
- def attempt_download_asset(file, repo: str = "ultralytics/assets", release: str = "v8.3.0", **kwargs) -> str:
434
+ def attempt_download_asset(
435
+ file: str | Path,
436
+ repo: str = "ultralytics/assets",
437
+ release: str = "v8.3.0",
438
+ **kwargs,
439
+ ) -> str:
434
440
  """
435
441
  Attempt to download a file from GitHub release assets if it is not found locally.
436
442
 
@@ -482,15 +488,15 @@ def attempt_download_asset(file, repo: str = "ultralytics/assets", release: str
482
488
 
483
489
 
484
490
  def download(
485
- url,
486
- dir=Path.cwd(),
491
+ url: str | list[str] | Path,
492
+ dir: Path = Path.cwd(),
487
493
  unzip: bool = True,
488
494
  delete: bool = False,
489
495
  curl: bool = False,
490
496
  threads: int = 1,
491
497
  retry: int = 3,
492
498
  exist_ok: bool = False,
493
- ):
499
+ ) -> None:
494
500
  """
495
501
  Download files from specified URLs to a given directory.
496
502
 
@@ -250,68 +250,71 @@ def time_sync():
250
250
 
251
251
 
252
252
  def fuse_conv_and_bn(conv, bn):
253
- """Fuse Conv2d() and BatchNorm2d() layers."""
254
- fusedconv = (
255
- nn.Conv2d(
256
- conv.in_channels,
257
- conv.out_channels,
258
- kernel_size=conv.kernel_size,
259
- stride=conv.stride,
260
- padding=conv.padding,
261
- dilation=conv.dilation,
262
- groups=conv.groups,
263
- bias=True,
264
- )
265
- .requires_grad_(False)
266
- .to(conv.weight.device)
267
- )
253
+ """
254
+ Fuse Conv2d and BatchNorm2d layers for inference optimization.
255
+
256
+ Args:
257
+ conv (nn.Conv2d): Convolutional layer to fuse.
258
+ bn (nn.BatchNorm2d): Batch normalization layer to fuse.
259
+
260
+ Returns:
261
+ (nn.Conv2d): The fused convolutional layer with gradients disabled.
268
262
 
269
- # Prepare filters
263
+ Example:
264
+ >>> conv = nn.Conv2d(3, 16, 3)
265
+ >>> bn = nn.BatchNorm2d(16)
266
+ >>> fused_conv = fuse_conv_and_bn(conv, bn)
267
+ """
268
+ # Compute fused weights
270
269
  w_conv = conv.weight.view(conv.out_channels, -1)
271
270
  w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps + bn.running_var)))
272
- fusedconv.weight.copy_(torch.mm(w_bn, w_conv).view(fusedconv.weight.shape))
271
+ conv.weight.data = torch.mm(w_bn, w_conv).view(conv.weight.shape)
273
272
 
274
- # Prepare spatial bias
275
- b_conv = (
276
- torch.zeros(conv.weight.shape[0], dtype=conv.weight.dtype, device=conv.weight.device)
277
- if conv.bias is None
278
- else conv.bias
279
- )
273
+ # Compute fused bias
274
+ b_conv = torch.zeros(conv.out_channels, device=conv.weight.device) if conv.bias is None else conv.bias
280
275
  b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps))
281
- fusedconv.bias.copy_(torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn)
276
+ fused_bias = torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn
277
+
278
+ if conv.bias is None:
279
+ conv.register_parameter("bias", nn.Parameter(fused_bias))
280
+ else:
281
+ conv.bias.data = fused_bias
282
282
 
283
- return fusedconv
283
+ return conv.requires_grad_(False)
284
284
 
285
285
 
286
286
  def fuse_deconv_and_bn(deconv, bn):
287
- """Fuse ConvTranspose2d() and BatchNorm2d() layers."""
288
- fuseddconv = (
289
- nn.ConvTranspose2d(
290
- deconv.in_channels,
291
- deconv.out_channels,
292
- kernel_size=deconv.kernel_size,
293
- stride=deconv.stride,
294
- padding=deconv.padding,
295
- output_padding=deconv.output_padding,
296
- dilation=deconv.dilation,
297
- groups=deconv.groups,
298
- bias=True,
299
- )
300
- .requires_grad_(False)
301
- .to(deconv.weight.device)
302
- )
287
+ """
288
+ Fuse ConvTranspose2d and BatchNorm2d layers for inference optimization.
303
289
 
304
- # Prepare filters
290
+ Args:
291
+ deconv (nn.ConvTranspose2d): Transposed convolutional layer to fuse.
292
+ bn (nn.BatchNorm2d): Batch normalization layer to fuse.
293
+
294
+ Returns:
295
+ (nn.ConvTranspose2d): The fused transposed convolutional layer with gradients disabled.
296
+
297
+ Example:
298
+ >>> deconv = nn.ConvTranspose2d(16, 3, 3)
299
+ >>> bn = nn.BatchNorm2d(3)
300
+ >>> fused_deconv = fuse_deconv_and_bn(deconv, bn)
301
+ """
302
+ # Compute fused weights
305
303
  w_deconv = deconv.weight.view(deconv.out_channels, -1)
306
304
  w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps + bn.running_var)))
307
- fuseddconv.weight.copy_(torch.mm(w_bn, w_deconv).view(fuseddconv.weight.shape))
305
+ deconv.weight.data = torch.mm(w_bn, w_deconv).view(deconv.weight.shape)
308
306
 
309
- # Prepare spatial bias
310
- b_conv = torch.zeros(deconv.weight.shape[1], device=deconv.weight.device) if deconv.bias is None else deconv.bias
307
+ # Compute fused bias
308
+ b_conv = torch.zeros(deconv.out_channels, device=deconv.weight.device) if deconv.bias is None else deconv.bias
311
309
  b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps))
312
- fuseddconv.bias.copy_(torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn)
310
+ fused_bias = torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn
311
+
312
+ if deconv.bias is None:
313
+ deconv.register_parameter("bias", nn.Parameter(fused_bias))
314
+ else:
315
+ deconv.bias.data = fused_bias
313
316
 
314
- return fuseddconv
317
+ return deconv.requires_grad_(False)
315
318
 
316
319
 
317
320
  def model_info(model, detailed=False, verbose=True, imgsz=640):