dgenerate-ultralytics-headless 8.3.191__tar.gz → 8.3.192__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 (284) hide show
  1. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/PKG-INFO +1 -1
  2. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +1 -1
  3. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/__init__.py +1 -1
  4. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/SKU-110K.yaml +1 -1
  5. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/engine/trainer.py +1 -1
  6. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/engine/tuner.py +227 -40
  7. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/classify/train.py +2 -2
  8. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/classify/val.py +1 -1
  9. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/detect/val.py +1 -1
  10. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/pose/val.py +1 -1
  11. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/segment/val.py +1 -1
  12. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/world/train.py +1 -1
  13. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/yoloe/train.py +3 -4
  14. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/yoloe/val.py +1 -1
  15. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/plotting.py +2 -2
  16. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/tqdm.py +3 -2
  17. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/LICENSE +0 -0
  18. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/README.md +0 -0
  19. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +0 -0
  20. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
  21. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
  22. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
  23. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
  24. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/pyproject.toml +0 -0
  25. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/setup.cfg +0 -0
  26. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/tests/__init__.py +0 -0
  27. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/tests/conftest.py +0 -0
  28. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/tests/test_cli.py +0 -0
  29. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/tests/test_cuda.py +0 -0
  30. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/tests/test_engine.py +0 -0
  31. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/tests/test_exports.py +0 -0
  32. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/tests/test_integrations.py +0 -0
  33. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/tests/test_python.py +0 -0
  34. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/tests/test_solutions.py +0 -0
  35. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/assets/bus.jpg +0 -0
  36. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/assets/zidane.jpg +0 -0
  37. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/__init__.py +0 -0
  38. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  39. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  40. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  41. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  42. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  43. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  44. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  45. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  46. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  47. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  48. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  49. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  50. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  51. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/coco.yaml +0 -0
  52. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  53. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  54. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  55. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  56. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  57. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  58. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  59. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  60. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  61. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  62. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  63. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  64. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  65. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  66. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  67. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  68. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/signature.yaml +0 -0
  69. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  70. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/datasets/xView.yaml +0 -0
  71. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/default.yaml +0 -0
  72. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  73. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  74. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  75. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  76. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  77. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  78. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  79. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  80. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  81. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  82. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  83. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  84. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  85. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  86. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  87. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  88. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  89. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  90. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  91. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  92. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  93. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  94. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  95. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  96. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  97. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  98. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  99. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  100. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  101. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  102. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  103. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  104. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  105. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  106. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  107. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  108. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  109. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  110. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  111. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  112. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  113. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  114. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  115. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  116. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  117. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  118. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  119. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  120. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  121. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  122. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  123. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  124. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  125. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  126. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  127. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  128. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  129. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/__init__.py +0 -0
  130. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/annotator.py +0 -0
  131. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/augment.py +0 -0
  132. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/base.py +0 -0
  133. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/build.py +0 -0
  134. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/converter.py +0 -0
  135. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/dataset.py +0 -0
  136. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/loaders.py +0 -0
  137. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/scripts/download_weights.sh +0 -0
  138. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/scripts/get_coco.sh +0 -0
  139. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/scripts/get_coco128.sh +0 -0
  140. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  141. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/split.py +0 -0
  142. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/split_dota.py +0 -0
  143. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/data/utils.py +0 -0
  144. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/engine/__init__.py +0 -0
  145. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/engine/exporter.py +0 -0
  146. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/engine/model.py +0 -0
  147. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/engine/predictor.py +0 -0
  148. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/engine/results.py +0 -0
  149. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/engine/validator.py +0 -0
  150. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/hub/__init__.py +0 -0
  151. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/hub/auth.py +0 -0
  152. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/hub/google/__init__.py +0 -0
  153. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/hub/session.py +0 -0
  154. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/hub/utils.py +0 -0
  155. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/__init__.py +0 -0
  156. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/fastsam/__init__.py +0 -0
  157. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/fastsam/model.py +0 -0
  158. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/fastsam/predict.py +0 -0
  159. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/fastsam/utils.py +0 -0
  160. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/fastsam/val.py +0 -0
  161. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/nas/__init__.py +0 -0
  162. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/nas/model.py +0 -0
  163. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/nas/predict.py +0 -0
  164. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/nas/val.py +0 -0
  165. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/rtdetr/__init__.py +0 -0
  166. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/rtdetr/model.py +0 -0
  167. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/rtdetr/predict.py +0 -0
  168. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/rtdetr/train.py +0 -0
  169. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/rtdetr/val.py +0 -0
  170. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/__init__.py +0 -0
  171. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/amg.py +0 -0
  172. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/build.py +0 -0
  173. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/model.py +0 -0
  174. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/modules/__init__.py +0 -0
  175. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/modules/blocks.py +0 -0
  176. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/modules/decoders.py +0 -0
  177. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/modules/encoders.py +0 -0
  178. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  179. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/modules/sam.py +0 -0
  180. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  181. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/modules/transformer.py +0 -0
  182. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/modules/utils.py +0 -0
  183. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/sam/predict.py +0 -0
  184. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/utils/__init__.py +0 -0
  185. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/utils/loss.py +0 -0
  186. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/utils/ops.py +0 -0
  187. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/__init__.py +0 -0
  188. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/classify/__init__.py +0 -0
  189. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/classify/predict.py +0 -0
  190. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/detect/__init__.py +0 -0
  191. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/detect/predict.py +0 -0
  192. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/detect/train.py +0 -0
  193. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/model.py +0 -0
  194. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/obb/__init__.py +0 -0
  195. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/obb/predict.py +0 -0
  196. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/obb/train.py +0 -0
  197. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/obb/val.py +0 -0
  198. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/pose/__init__.py +0 -0
  199. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/pose/predict.py +0 -0
  200. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/pose/train.py +0 -0
  201. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/segment/__init__.py +0 -0
  202. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/segment/predict.py +0 -0
  203. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/segment/train.py +0 -0
  204. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/world/__init__.py +0 -0
  205. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/world/train_world.py +0 -0
  206. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  207. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  208. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  209. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/__init__.py +0 -0
  210. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/autobackend.py +0 -0
  211. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/modules/__init__.py +0 -0
  212. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/modules/activation.py +0 -0
  213. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/modules/block.py +0 -0
  214. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/modules/conv.py +0 -0
  215. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/modules/head.py +0 -0
  216. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/modules/transformer.py +0 -0
  217. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/modules/utils.py +0 -0
  218. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/tasks.py +0 -0
  219. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/nn/text_model.py +0 -0
  220. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/py.typed +0 -0
  221. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/__init__.py +0 -0
  222. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/ai_gym.py +0 -0
  223. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/analytics.py +0 -0
  224. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/config.py +0 -0
  225. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/distance_calculation.py +0 -0
  226. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/heatmap.py +0 -0
  227. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/instance_segmentation.py +0 -0
  228. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/object_blurrer.py +0 -0
  229. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/object_counter.py +0 -0
  230. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/object_cropper.py +0 -0
  231. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/parking_management.py +0 -0
  232. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/queue_management.py +0 -0
  233. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/region_counter.py +0 -0
  234. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/security_alarm.py +0 -0
  235. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/similarity_search.py +0 -0
  236. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/solutions.py +0 -0
  237. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/speed_estimation.py +0 -0
  238. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/streamlit_inference.py +0 -0
  239. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/templates/similarity-search.html +0 -0
  240. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/trackzone.py +0 -0
  241. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/solutions/vision_eye.py +0 -0
  242. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/trackers/__init__.py +0 -0
  243. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/trackers/basetrack.py +0 -0
  244. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/trackers/bot_sort.py +0 -0
  245. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/trackers/byte_tracker.py +0 -0
  246. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/trackers/track.py +0 -0
  247. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/trackers/utils/__init__.py +0 -0
  248. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/trackers/utils/gmc.py +0 -0
  249. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  250. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/trackers/utils/matching.py +0 -0
  251. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/__init__.py +0 -0
  252. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/autobatch.py +0 -0
  253. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/autodevice.py +0 -0
  254. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/benchmarks.py +0 -0
  255. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/__init__.py +0 -0
  256. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/base.py +0 -0
  257. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/clearml.py +0 -0
  258. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/comet.py +0 -0
  259. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/dvc.py +0 -0
  260. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/hub.py +0 -0
  261. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/mlflow.py +0 -0
  262. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/neptune.py +0 -0
  263. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/platform.py +0 -0
  264. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/raytune.py +0 -0
  265. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  266. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/callbacks/wb.py +0 -0
  267. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/checks.py +0 -0
  268. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/dist.py +0 -0
  269. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/downloads.py +0 -0
  270. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/errors.py +0 -0
  271. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/export.py +0 -0
  272. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/files.py +0 -0
  273. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/git.py +0 -0
  274. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/instance.py +0 -0
  275. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/logger.py +0 -0
  276. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/loss.py +0 -0
  277. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/metrics.py +0 -0
  278. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/nms.py +0 -0
  279. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/ops.py +0 -0
  280. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/patches.py +0 -0
  281. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/tal.py +0 -0
  282. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/torch_utils.py +0 -0
  283. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/ultralytics/utils/triton.py +0 -0
  284. {dgenerate_ultralytics_headless-8.3.191 → dgenerate_ultralytics_headless-8.3.192}/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.191
3
+ Version: 8.3.192
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.191
3
+ Version: 8.3.192
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
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.191"
3
+ __version__ = "8.3.192"
4
4
 
5
5
  import os
6
6
 
@@ -45,7 +45,7 @@ download: |
45
45
  # Convert labels
46
46
  names = "image", "x1", "y1", "x2", "y2", "class", "image_width", "image_height" # column names
47
47
  for d in "annotations_train.csv", "annotations_val.csv", "annotations_test.csv":
48
- x = pl.read_csv(dir / "annotations" / d, names=names).to_numpy() # annotations
48
+ x = pl.read_csv(dir / "annotations" / d, names=names, infer_schema_length=None).to_numpy() # annotations
49
49
  images, unique_images = x[:, 0], np.unique(x[:, 0])
50
50
  with open((dir / d).with_suffix(".txt").__str__().replace("annotations_", ""), "w", encoding="utf-8") as f:
51
51
  f.writelines(f"./images/{s}\n" for s in unique_images)
@@ -544,7 +544,7 @@ class BaseTrainer:
544
544
  """Read results.csv into a dictionary using polars."""
545
545
  import polars as pl # scope for faster 'import ultralytics'
546
546
 
547
- return pl.read_csv(self.csv).to_dict(as_series=False)
547
+ return pl.read_csv(self.csv, infer_schema_length=None).to_dict(as_series=False)
548
548
 
549
549
  def _model_train(self):
550
550
  """Set model in training mode."""
@@ -20,11 +20,13 @@ import random
20
20
  import shutil
21
21
  import subprocess
22
22
  import time
23
+ from datetime import datetime
23
24
 
24
25
  import numpy as np
25
26
 
26
27
  from ultralytics.cfg import get_cfg, get_save_dir
27
28
  from ultralytics.utils import DEFAULT_CFG, LOGGER, YAML, callbacks, colorstr, remove_colorstr
29
+ from ultralytics.utils.checks import check_requirements
28
30
  from ultralytics.utils.patches import torch_load
29
31
  from ultralytics.utils.plotting import plot_tune_results
30
32
 
@@ -34,15 +36,18 @@ class Tuner:
34
36
  A class for hyperparameter tuning of YOLO models.
35
37
 
36
38
  The class evolves YOLO model hyperparameters over a given number of iterations by mutating them according to the
37
- search space and retraining the model to evaluate their performance.
39
+ search space and retraining the model to evaluate their performance. Supports both local CSV storage and
40
+ distributed MongoDB Atlas coordination for multi-machine hyperparameter optimization.
38
41
 
39
42
  Attributes:
40
- space (Dict[str, tuple]): Hyperparameter search space containing bounds and scaling factors for mutation.
43
+ space (dict[str, tuple]): Hyperparameter search space containing bounds and scaling factors for mutation.
41
44
  tune_dir (Path): Directory where evolution logs and results will be saved.
42
45
  tune_csv (Path): Path to the CSV file where evolution logs are saved.
43
46
  args (dict): Configuration arguments for the tuning process.
44
47
  callbacks (list): Callback functions to be executed during tuning.
45
48
  prefix (str): Prefix string for logging messages.
49
+ mongodb (MongoClient): Optional MongoDB client for distributed tuning.
50
+ collection (Collection): MongoDB collection for storing tuning results.
46
51
 
47
52
  Methods:
48
53
  _mutate: Mutate hyperparameters based on bounds and scaling factors.
@@ -53,11 +58,26 @@ class Tuner:
53
58
  >>> from ultralytics import YOLO
54
59
  >>> model = YOLO("yolo11n.pt")
55
60
  >>> model.tune(
56
- ... data="coco8.yaml", epochs=10, iterations=300, optimizer="AdamW", plots=False, save=False, val=False
57
- ... )
58
-
59
- Tune with custom search space.
60
- >>> model.tune(space={key1: val1, key2: val2}) # custom search space dictionary
61
+ >>> data="coco8.yaml",
62
+ >>> epochs=10,
63
+ >>> iterations=300,
64
+ >>> plots=False,
65
+ >>> save=False,
66
+ >>> val=False
67
+ >>> )
68
+
69
+ Tune with distributed MongoDB Atlas coordination across multiple machines:
70
+ >>> model.tune(
71
+ >>> data="coco8.yaml",
72
+ >>> epochs=10,
73
+ >>> iterations=300,
74
+ >>> mongodb_uri="mongodb+srv://user:pass@cluster.mongodb.net/",
75
+ >>> mongodb_db="ultralytics",
76
+ >>> mongodb_collection="tune_results"
77
+ >>> )
78
+
79
+ Tune with custom search space:
80
+ >>> model.tune(space={"lr0": (1e-5, 1e-1), "momentum": (0.6, 0.98)})
61
81
  """
62
82
 
63
83
  def __init__(self, args=DEFAULT_CFG, _callbacks: list | None = None):
@@ -66,7 +86,7 @@ class Tuner:
66
86
 
67
87
  Args:
68
88
  args (dict): Configuration for hyperparameter evolution.
69
- _callbacks (List, optional): Callback functions to be executed during tuning.
89
+ _callbacks (list | None, optional): Callback functions to be executed during tuning.
70
90
  """
71
91
  self.space = args.pop("space", None) or { # key: (min, max, gain(optional))
72
92
  # 'optimizer': tune.choice(['SGD', 'Adam', 'AdamW', 'NAdam', 'RAdam', 'RMSProp']),
@@ -95,6 +115,10 @@ class Tuner:
95
115
  "cutmix": (0.0, 1.0), # image cutmix (probability)
96
116
  "copy_paste": (0.0, 1.0), # segment copy-paste (probability)
97
117
  }
118
+ mongodb_uri = args.pop("mongodb_uri", None)
119
+ mongodb_db = args.pop("mongodb_db", "ultralytics")
120
+ mongodb_collection = args.pop("mongodb_collection", "tuner_results")
121
+
98
122
  self.args = get_cfg(overrides=args)
99
123
  self.args.exist_ok = self.args.resume # resume w/ same tune_dir
100
124
  self.tune_dir = get_save_dir(self.args, name=self.args.name or "tune")
@@ -103,13 +127,151 @@ class Tuner:
103
127
  self.callbacks = _callbacks or callbacks.get_default_callbacks()
104
128
  self.prefix = colorstr("Tuner: ")
105
129
  callbacks.add_integration_callbacks(self)
130
+
131
+ # MongoDB Atlas support (optional)
132
+ self.mongodb = None
133
+ if mongodb_uri:
134
+ self._init_mongodb(mongodb_uri, mongodb_db, mongodb_collection)
135
+
106
136
  LOGGER.info(
107
137
  f"{self.prefix}Initialized Tuner instance with 'tune_dir={self.tune_dir}'\n"
108
138
  f"{self.prefix}💡 Learn about tuning at https://docs.ultralytics.com/guides/hyperparameter-tuning"
109
139
  )
110
140
 
141
+ def _connect(self, uri: str = "mongodb+srv://username:password@cluster.mongodb.net/", max_retries: int = 3):
142
+ """
143
+ Create MongoDB client with exponential backoff retry on connection failures.
144
+
145
+ Args:
146
+ uri (str): MongoDB connection string with credentials and cluster information.
147
+ max_retries (int): Maximum number of connection attempts before giving up.
148
+
149
+ Returns:
150
+ (MongoClient): Connected MongoDB client instance.
151
+ """
152
+ check_requirements("pymongo")
153
+
154
+ from pymongo import MongoClient
155
+ from pymongo.errors import ConnectionFailure, ServerSelectionTimeoutError
156
+
157
+ for attempt in range(max_retries):
158
+ try:
159
+ client = MongoClient(
160
+ uri,
161
+ serverSelectionTimeoutMS=30000,
162
+ connectTimeoutMS=20000,
163
+ socketTimeoutMS=40000,
164
+ retryWrites=True,
165
+ retryReads=True,
166
+ maxPoolSize=30,
167
+ minPoolSize=3,
168
+ maxIdleTimeMS=60000,
169
+ )
170
+ client.admin.command("ping") # Test connection
171
+ LOGGER.info(f"{self.prefix}Connected to MongoDB Atlas (attempt {attempt + 1})")
172
+ return client
173
+ except (ConnectionFailure, ServerSelectionTimeoutError):
174
+ if attempt == max_retries - 1:
175
+ raise
176
+ wait_time = 2**attempt
177
+ LOGGER.warning(
178
+ f"{self.prefix}MongoDB connection failed (attempt {attempt + 1}), retrying in {wait_time}s..."
179
+ )
180
+ time.sleep(wait_time)
181
+
182
+ def _init_mongodb(self, mongodb_uri="", mongodb_db="", mongodb_collection=""):
183
+ """
184
+ Initialize MongoDB connection for distributed tuning.
185
+
186
+ Connects to MongoDB Atlas for distributed hyperparameter optimization across multiple machines.
187
+ Each worker saves results to a shared collection and reads the latest best hyperparameters
188
+ from all workers for evolution.
189
+
190
+ Args:
191
+ mongodb_uri (str): MongoDB connection string, e.g. 'mongodb+srv://username:password@cluster.mongodb.net/'.
192
+ mongodb_db (str, optional): Database name.
193
+ mongodb_collection (str, optional): Collection name.
194
+
195
+ Notes:
196
+ - Creates a fitness index for fast queries of top results
197
+ - Falls back to CSV-only mode if connection fails
198
+ - Uses connection pooling and retry logic for production reliability
199
+ """
200
+ self.mongodb = self._connect(mongodb_uri)
201
+ self.collection = self.mongodb[mongodb_db][mongodb_collection]
202
+ self.collection.create_index([("fitness", -1)], background=True)
203
+ LOGGER.info(f"{self.prefix}Using MongoDB Atlas for distributed tuning")
204
+
205
+ def _get_mongodb_results(self, n: int = 5) -> list:
206
+ """
207
+ Get top N results from MongoDB sorted by fitness.
208
+
209
+ Args:
210
+ n (int): Number of top results to retrieve.
211
+
212
+ Returns:
213
+ (list[dict]): List of result documents with fitness scores and hyperparameters.
214
+ """
215
+ try:
216
+ return list(self.collection.find().sort("fitness", -1).limit(n))
217
+ except Exception:
218
+ return []
219
+
220
+ def _save_to_mongodb(self, fitness: float, hyperparameters: dict[str, float], metrics: dict, iteration: int):
221
+ """
222
+ Save results to MongoDB with proper type conversion.
223
+
224
+ Args:
225
+ fitness (float): Fitness score achieved with these hyperparameters.
226
+ hyperparameters (dict[str, float]): Dictionary of hyperparameter values.
227
+ metrics (dict): Complete training metrics dictionary (mAP, precision, recall, losses, etc.).
228
+ iteration (int): Current iteration number.
229
+ """
230
+ try:
231
+ self.collection.insert_one(
232
+ {
233
+ "fitness": float(fitness),
234
+ "hyperparameters": {k: (v.item() if hasattr(v, "item") else v) for k, v in hyperparameters.items()},
235
+ "metrics": metrics,
236
+ "timestamp": datetime.now(),
237
+ "iteration": iteration,
238
+ }
239
+ )
240
+ except Exception as e:
241
+ LOGGER.warning(f"{self.prefix}MongoDB save failed: {e}")
242
+
243
+ def _sync_mongodb_to_csv(self):
244
+ """
245
+ Sync MongoDB results to CSV for plotting compatibility.
246
+
247
+ Downloads all results from MongoDB and writes them to the local CSV file in chronological order. This enables
248
+ the existing plotting functions to work seamlessly with distributed MongoDB data.
249
+ """
250
+ try:
251
+ # Get all results from MongoDB
252
+ all_results = list(self.collection.find().sort("iteration", 1))
253
+ if not all_results:
254
+ return
255
+
256
+ # Write to CSV
257
+ headers = ",".join(["fitness"] + list(self.space.keys())) + "\n"
258
+ with open(self.tune_csv, "w", encoding="utf-8") as f:
259
+ f.write(headers)
260
+ for result in all_results:
261
+ fitness = result["fitness"]
262
+ hyp_values = [result["hyperparameters"][k] for k in self.space.keys()]
263
+ log_row = [round(fitness, 5)] + hyp_values
264
+ f.write(",".join(map(str, log_row)) + "\n")
265
+
266
+ except Exception as e:
267
+ LOGGER.warning(f"{self.prefix}MongoDB to CSV sync failed: {e}")
268
+
111
269
  def _mutate(
112
- self, parent: str = "single", n: int = 5, mutation: float = 0.8, sigma: float = 0.2
270
+ self,
271
+ parent: str = "single",
272
+ n: int = 5,
273
+ mutation: float = 0.8,
274
+ sigma: float = 0.2,
113
275
  ) -> dict[str, float]:
114
276
  """
115
277
  Mutate hyperparameters based on bounds and scaling factors specified in `self.space`.
@@ -121,23 +283,36 @@ class Tuner:
121
283
  sigma (float): Standard deviation for Gaussian random number generator.
122
284
 
123
285
  Returns:
124
- (Dict[str, float]): A dictionary containing mutated hyperparameters.
286
+ (dict[str, float]): A dictionary containing mutated hyperparameters.
125
287
  """
126
- if self.tune_csv.exists(): # if CSV file exists: select best hyps and mutate
127
- # Select parent(s)
128
- x = np.loadtxt(self.tune_csv, ndmin=2, delimiter=",", skiprows=1)
129
- fitness = x[:, 0] # first column
130
- n = min(n, len(x)) # number of previous results to consider
131
- x = x[np.argsort(-fitness)][:n] # top n mutations
288
+ x = None
289
+
290
+ # Try MongoDB first if available
291
+ if self.mongodb:
292
+ results = self._get_mongodb_results(n)
293
+ if results:
294
+ # MongoDB already sorted by fitness DESC, so results[0] is best
295
+ x = np.array([[r["fitness"]] + [r["hyperparameters"][k] for k in self.space.keys()] for r in results])
296
+ n = min(n, len(x))
297
+
298
+ # Fall back to CSV if MongoDB unavailable or empty
299
+ if x is None and self.tune_csv.exists():
300
+ csv_data = np.loadtxt(self.tune_csv, ndmin=2, delimiter=",", skiprows=1)
301
+ if len(csv_data) > 0:
302
+ fitness = csv_data[:, 0] # first column
303
+ n = min(n, len(csv_data))
304
+ x = csv_data[np.argsort(-fitness)][:n] # top n sorted by fitness DESC
305
+
306
+ # Mutate if we have data, otherwise use defaults
307
+ if x is not None:
132
308
  w = x[:, 0] - x[:, 0].min() + 1e-6 # weights (sum > 0)
133
- if parent == "single" or len(x) == 1:
134
- # x = x[random.randint(0, n - 1)] # random selection
309
+ if parent == "single" or len(x) <= 1:
135
310
  x = x[random.choices(range(n), weights=w)[0]] # weighted selection
136
311
  elif parent == "weighted":
137
312
  x = (x * w.reshape(n, 1)).sum(0) / w.sum() # weighted combination
138
313
 
139
314
  # Mutate
140
- r = np.random # method
315
+ r = np.random
141
316
  r.seed(int(time.time()))
142
317
  g = np.array([v[2] if len(v) == 3 else 1.0 for v in self.space.values()]) # gains 0-1
143
318
  ng = len(self.space)
@@ -149,9 +324,9 @@ class Tuner:
149
324
  hyp = {k: getattr(self.args, k) for k in self.space.keys()}
150
325
 
151
326
  # Constrain to limits
152
- for k, v in self.space.items():
153
- hyp[k] = max(hyp[k], v[0]) # lower limit
154
- hyp[k] = min(hyp[k], v[1]) # upper limit
327
+ for k, bounds in self.space.items():
328
+ hyp[k] = max(hyp[k], bounds[0]) # lower limit
329
+ hyp[k] = min(hyp[k], bounds[1]) # upper limit
155
330
  hyp[k] = round(hyp[k], 5) # significant digits
156
331
 
157
332
  return hyp
@@ -160,25 +335,26 @@ class Tuner:
160
335
  """
161
336
  Execute the hyperparameter evolution process when the Tuner instance is called.
162
337
 
163
- This method iterates through the number of iterations, performing the following steps in each iteration:
164
-
165
- 1. Load the existing hyperparameters or initialize new ones.
166
- 2. Mutate the hyperparameters using the `_mutate` method.
167
- 3. Train a YOLO model with the mutated hyperparameters.
168
- 4. Log the fitness score and mutated hyperparameters to a CSV file.
338
+ This method iterates through the specified number of iterations, performing the following steps:
339
+ 1. Sync MongoDB results to CSV (if using distributed mode)
340
+ 2. Mutate hyperparameters using the best previous results or defaults
341
+ 3. Train a YOLO model with the mutated hyperparameters
342
+ 4. Log fitness scores and hyperparameters to MongoDB and/or CSV
343
+ 5. Track the best performing configuration across all iterations
169
344
 
170
345
  Args:
171
- model (Model): A pre-initialized YOLO model to be used for training.
346
+ model (Model | None, optional): A pre-initialized YOLO model to be used for training.
172
347
  iterations (int): The number of generations to run the evolution for.
173
- cleanup (bool): Whether to delete iteration weights to reduce storage space used during tuning.
174
-
175
- Note:
176
- The method utilizes the `self.tune_csv` Path object to read and log hyperparameters and fitness scores.
177
- Ensure this path is set correctly in the Tuner instance.
348
+ cleanup (bool): Whether to delete iteration weights to reduce storage space during tuning.
178
349
  """
179
350
  t0 = time.time()
180
351
  best_save_dir, best_metrics = None, None
181
352
  (self.tune_dir / "weights").mkdir(parents=True, exist_ok=True)
353
+
354
+ # Sync MongoDB to CSV at startup for proper resume logic
355
+ if self.mongodb:
356
+ self._sync_mongodb_to_csv()
357
+
182
358
  start = 0
183
359
  if self.tune_csv.exists():
184
360
  x = np.loadtxt(self.tune_csv, ndmin=2, delimiter=",", skiprows=1)
@@ -205,12 +381,23 @@ class Tuner:
205
381
  except Exception as e:
206
382
  LOGGER.error(f"training failure for hyperparameter tuning iteration {i + 1}\n{e}")
207
383
 
208
- # Save results and mutated_hyp to CSV
384
+ # Save results - MongoDB takes precedence
209
385
  fitness = metrics.get("fitness", 0.0)
210
- log_row = [round(fitness, 5)] + [mutated_hyp[k] for k in self.space.keys()]
211
- headers = "" if self.tune_csv.exists() else (",".join(["fitness"] + list(self.space.keys())) + "\n")
212
- with open(self.tune_csv, "a", encoding="utf-8") as f:
213
- f.write(headers + ",".join(map(str, log_row)) + "\n")
386
+ if self.mongodb:
387
+ self._save_to_mongodb(fitness, mutated_hyp, metrics, i + 1)
388
+ self._sync_mongodb_to_csv()
389
+ total_mongo_iterations = self.collection.count_documents({})
390
+ if total_mongo_iterations >= iterations:
391
+ LOGGER.info(
392
+ f"{self.prefix}Target iterations ({iterations}) reached in MongoDB ({total_mongo_iterations}). Stopping."
393
+ )
394
+ break
395
+ else:
396
+ # Save to CSV only if no MongoDB
397
+ log_row = [round(fitness, 5)] + [mutated_hyp[k] for k in self.space.keys()]
398
+ headers = "" if self.tune_csv.exists() else (",".join(["fitness"] + list(self.space.keys())) + "\n")
399
+ with open(self.tune_csv, "a", encoding="utf-8") as f:
400
+ f.write(headers + ",".join(map(str, log_row)) + "\n")
214
401
 
215
402
  # Get best results
216
403
  x = np.loadtxt(self.tune_csv, ndmin=2, delimiter=",", skiprows=1)
@@ -226,7 +413,7 @@ class Tuner:
226
413
  shutil.rmtree(weights_dir, ignore_errors=True) # remove iteration weights/ dir to reduce storage space
227
414
 
228
415
  # Plot tune results
229
- plot_tune_results(self.tune_csv)
416
+ plot_tune_results(str(self.tune_csv))
230
417
 
231
418
  # Save and print tune results
232
419
  header = (
@@ -166,8 +166,8 @@ class ClassificationTrainer(BaseTrainer):
166
166
 
167
167
  def preprocess_batch(self, batch: dict[str, torch.Tensor]) -> dict[str, torch.Tensor]:
168
168
  """Preprocess a batch of images and classes."""
169
- batch["img"] = batch["img"].to(self.device)
170
- batch["cls"] = batch["cls"].to(self.device)
169
+ batch["img"] = batch["img"].to(self.device, non_blocking=True)
170
+ batch["cls"] = batch["cls"].to(self.device, non_blocking=True)
171
171
  return batch
172
172
 
173
173
  def progress_string(self) -> str:
@@ -91,7 +91,7 @@ class ClassificationValidator(BaseValidator):
91
91
  """Preprocess input batch by moving data to device and converting to appropriate dtype."""
92
92
  batch["img"] = batch["img"].to(self.device, non_blocking=True)
93
93
  batch["img"] = batch["img"].half() if self.args.half else batch["img"].float()
94
- batch["cls"] = batch["cls"].to(self.device)
94
+ batch["cls"] = batch["cls"].to(self.device, non_blocking=True)
95
95
  return batch
96
96
 
97
97
  def update_metrics(self, preds: torch.Tensor, batch: dict[str, Any]) -> None:
@@ -74,7 +74,7 @@ class DetectionValidator(BaseValidator):
74
74
  batch["img"] = batch["img"].to(self.device, non_blocking=True)
75
75
  batch["img"] = (batch["img"].half() if self.args.half else batch["img"].float()) / 255
76
76
  for k in {"batch_idx", "cls", "bboxes"}:
77
- batch[k] = batch[k].to(self.device)
77
+ batch[k] = batch[k].to(self.device, non_blocking=True)
78
78
 
79
79
  return batch
80
80
 
@@ -86,7 +86,7 @@ class PoseValidator(DetectionValidator):
86
86
  def preprocess(self, batch: dict[str, Any]) -> dict[str, Any]:
87
87
  """Preprocess batch by converting keypoints data to float and moving it to the device."""
88
88
  batch = super().preprocess(batch)
89
- batch["keypoints"] = batch["keypoints"].to(self.device).float()
89
+ batch["keypoints"] = batch["keypoints"].to(self.device, non_blocking=True).float()
90
90
  return batch
91
91
 
92
92
  def get_desc(self) -> str:
@@ -63,7 +63,7 @@ class SegmentationValidator(DetectionValidator):
63
63
  (Dict[str, Any]): Preprocessed batch.
64
64
  """
65
65
  batch = super().preprocess(batch)
66
- batch["masks"] = batch["masks"].to(self.device).float()
66
+ batch["masks"] = batch["masks"].to(self.device, non_blocking=True).float()
67
67
  return batch
68
68
 
69
69
  def init_metrics(self, model: torch.nn.Module) -> None:
@@ -171,7 +171,7 @@ class WorldTrainer(DetectionTrainer):
171
171
 
172
172
  # Add text features
173
173
  texts = list(itertools.chain(*batch["texts"]))
174
- txt_feats = torch.stack([self.text_embeddings[text] for text in texts]).to(self.device)
174
+ txt_feats = torch.stack([self.text_embeddings[text] for text in texts]).to(self.device, non_blocking=True)
175
175
  txt_feats = txt_feats / txt_feats.norm(p=2, dim=-1, keepdim=True)
176
176
  batch["txt_feats"] = txt_feats.reshape(len(batch["texts"]), -1, txt_feats.shape[-1])
177
177
  return batch
@@ -197,7 +197,7 @@ class YOLOETrainerFromScratch(YOLOETrainer, WorldTrainerFromScratch):
197
197
  batch = DetectionTrainer.preprocess_batch(self, batch)
198
198
 
199
199
  texts = list(itertools.chain(*batch["texts"]))
200
- txt_feats = torch.stack([self.text_embeddings[text] for text in texts]).to(self.device)
200
+ txt_feats = torch.stack([self.text_embeddings[text] for text in texts]).to(self.device, non_blocking=True)
201
201
  txt_feats = txt_feats.reshape(len(batch["texts"]), -1, txt_feats.shape[-1])
202
202
  batch["txt_feats"] = txt_feats
203
203
  return batch
@@ -251,8 +251,7 @@ class YOLOEPEFreeTrainer(YOLOEPETrainer, YOLOETrainerFromScratch):
251
251
 
252
252
  def preprocess_batch(self, batch):
253
253
  """Preprocess a batch of images for YOLOE training, adjusting formatting and dimensions as needed."""
254
- batch = DetectionTrainer.preprocess_batch(self, batch)
255
- return batch
254
+ return DetectionTrainer.preprocess_batch(self, batch)
256
255
 
257
256
  def set_text_embeddings(self, datasets, batch: int):
258
257
  """
@@ -318,5 +317,5 @@ class YOLOEVPTrainer(YOLOETrainerFromScratch):
318
317
  def preprocess_batch(self, batch):
319
318
  """Preprocess a batch of images for YOLOE training, moving visual prompts to the appropriate device."""
320
319
  batch = super().preprocess_batch(batch)
321
- batch["visuals"] = batch["visuals"].to(self.device)
320
+ batch["visuals"] = batch["visuals"].to(self.device, non_blocking=True)
322
321
  return batch
@@ -102,7 +102,7 @@ class YOLOEDetectValidator(DetectionValidator):
102
102
  """Preprocess batch data, ensuring visuals are on the same device as images."""
103
103
  batch = super().preprocess(batch)
104
104
  if "visuals" in batch:
105
- batch["visuals"] = batch["visuals"].to(batch["img"].device)
105
+ batch["visuals"] = batch["visuals"].to(batch["img"].device, non_blocking=True)
106
106
  return batch
107
107
 
108
108
  def get_vpe_dataloader(self, data: dict[str, Any]) -> torch.utils.data.DataLoader:
@@ -893,7 +893,7 @@ def plot_results(
893
893
  assert len(files), f"No results.csv files found in {save_dir.resolve()}, nothing to plot."
894
894
  for f in files:
895
895
  try:
896
- data = pl.read_csv(f)
896
+ data = pl.read_csv(f, infer_schema_length=None)
897
897
  s = [x.strip() for x in data.columns]
898
898
  x = data.select(data.columns[0]).to_numpy().flatten()
899
899
  for i, j in enumerate(index):
@@ -971,7 +971,7 @@ def plot_tune_results(csv_file: str = "tune_results.csv"):
971
971
 
972
972
  # Scatter plots for each hyperparameter
973
973
  csv_file = Path(csv_file)
974
- data = pl.read_csv(csv_file)
974
+ data = pl.read_csv(csv_file, infer_schema_length=None)
975
975
  num_metrics_columns = 1
976
976
  keys = [x.strip() for x in data.columns][num_metrics_columns:]
977
977
  x = data.to_numpy()
@@ -262,8 +262,9 @@ class TQDM:
262
262
 
263
263
  # Calculate remaining time
264
264
  remaining_str = ""
265
- if self.total and 0 < self.n < self.total and rate > 0:
266
- remaining_str = self._format_time((self.total - self.n) / rate)
265
+ if self.total and 0 < self.n < self.total and elapsed > 0:
266
+ est_rate = rate or self.n / elapsed
267
+ remaining_str = self._format_time((self.total - self.n) / est_rate)
267
268
 
268
269
  # Build progress components
269
270
  if self.total: