dgenerate-ultralytics-headless 8.3.183__tar.gz → 8.3.184__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 (281) hide show
  1. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/PKG-INFO +1 -1
  2. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +1 -1
  3. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +2 -0
  4. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/__init__.py +1 -1
  5. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/converter.py +2 -1
  6. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/engine/trainer.py +2 -2
  7. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/__init__.py +3 -0
  8. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/base.py +3 -2
  9. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/hub.py +1 -1
  10. dgenerate_ultralytics_headless-8.3.184/ultralytics/utils/callbacks/platform.py +72 -0
  11. dgenerate_ultralytics_headless-8.3.184/ultralytics/utils/logger.py +408 -0
  12. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/metrics.py +3 -1
  13. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/LICENSE +0 -0
  14. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/README.md +0 -0
  15. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
  16. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
  17. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
  18. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
  19. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/pyproject.toml +0 -0
  20. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/setup.cfg +0 -0
  21. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/tests/__init__.py +0 -0
  22. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/tests/conftest.py +0 -0
  23. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/tests/test_cli.py +0 -0
  24. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/tests/test_cuda.py +0 -0
  25. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/tests/test_engine.py +0 -0
  26. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/tests/test_exports.py +0 -0
  27. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/tests/test_integrations.py +0 -0
  28. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/tests/test_python.py +0 -0
  29. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/tests/test_solutions.py +0 -0
  30. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/assets/bus.jpg +0 -0
  31. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/assets/zidane.jpg +0 -0
  32. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/__init__.py +0 -0
  33. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  34. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  35. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  36. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  37. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  38. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  39. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  40. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  41. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  42. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  43. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  44. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  45. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  46. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  47. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/coco.yaml +0 -0
  48. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  49. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  50. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  51. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  52. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  53. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  54. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  55. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  56. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  57. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  58. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  59. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  60. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  61. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  62. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  63. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  64. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/signature.yaml +0 -0
  65. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  66. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/datasets/xView.yaml +0 -0
  67. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/default.yaml +0 -0
  68. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  69. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  70. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  71. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  72. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  73. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  74. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  75. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  76. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  77. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  78. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  79. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  80. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  81. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  82. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  83. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  84. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  85. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  86. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  87. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  88. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  89. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  90. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  91. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  92. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  93. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  94. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  95. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  96. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  97. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  98. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  99. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  100. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  101. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  102. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  103. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  104. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  105. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  106. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  107. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  108. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  109. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  110. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  111. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  112. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  113. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  114. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  115. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  116. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  117. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  118. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  119. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  120. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  121. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  122. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  123. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  124. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  125. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/__init__.py +0 -0
  126. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/annotator.py +0 -0
  127. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/augment.py +0 -0
  128. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/base.py +0 -0
  129. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/build.py +0 -0
  130. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/dataset.py +0 -0
  131. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/loaders.py +0 -0
  132. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/scripts/download_weights.sh +0 -0
  133. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/scripts/get_coco.sh +0 -0
  134. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/scripts/get_coco128.sh +0 -0
  135. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  136. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/split.py +0 -0
  137. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/split_dota.py +0 -0
  138. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/data/utils.py +0 -0
  139. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/engine/__init__.py +0 -0
  140. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/engine/exporter.py +0 -0
  141. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/engine/model.py +0 -0
  142. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/engine/predictor.py +0 -0
  143. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/engine/results.py +0 -0
  144. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/engine/tuner.py +0 -0
  145. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/engine/validator.py +0 -0
  146. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/hub/__init__.py +0 -0
  147. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/hub/auth.py +0 -0
  148. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/hub/google/__init__.py +0 -0
  149. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/hub/session.py +0 -0
  150. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/hub/utils.py +0 -0
  151. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/__init__.py +0 -0
  152. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/fastsam/__init__.py +0 -0
  153. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/fastsam/model.py +0 -0
  154. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/fastsam/predict.py +0 -0
  155. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/fastsam/utils.py +0 -0
  156. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/fastsam/val.py +0 -0
  157. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/nas/__init__.py +0 -0
  158. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/nas/model.py +0 -0
  159. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/nas/predict.py +0 -0
  160. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/nas/val.py +0 -0
  161. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/rtdetr/__init__.py +0 -0
  162. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/rtdetr/model.py +0 -0
  163. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/rtdetr/predict.py +0 -0
  164. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/rtdetr/train.py +0 -0
  165. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/rtdetr/val.py +0 -0
  166. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/__init__.py +0 -0
  167. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/amg.py +0 -0
  168. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/build.py +0 -0
  169. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/model.py +0 -0
  170. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/modules/__init__.py +0 -0
  171. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/modules/blocks.py +0 -0
  172. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/modules/decoders.py +0 -0
  173. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/modules/encoders.py +0 -0
  174. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  175. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/modules/sam.py +0 -0
  176. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  177. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/modules/transformer.py +0 -0
  178. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/modules/utils.py +0 -0
  179. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/sam/predict.py +0 -0
  180. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/utils/__init__.py +0 -0
  181. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/utils/loss.py +0 -0
  182. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/utils/ops.py +0 -0
  183. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/__init__.py +0 -0
  184. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/classify/__init__.py +0 -0
  185. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/classify/predict.py +0 -0
  186. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/classify/train.py +0 -0
  187. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/classify/val.py +0 -0
  188. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/detect/__init__.py +0 -0
  189. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/detect/predict.py +0 -0
  190. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/detect/train.py +0 -0
  191. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/detect/val.py +0 -0
  192. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/model.py +0 -0
  193. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/obb/__init__.py +0 -0
  194. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/obb/predict.py +0 -0
  195. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/obb/train.py +0 -0
  196. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/obb/val.py +0 -0
  197. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/pose/__init__.py +0 -0
  198. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/pose/predict.py +0 -0
  199. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/pose/train.py +0 -0
  200. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/pose/val.py +0 -0
  201. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/segment/__init__.py +0 -0
  202. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/segment/predict.py +0 -0
  203. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/segment/train.py +0 -0
  204. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/segment/val.py +0 -0
  205. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/world/__init__.py +0 -0
  206. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/world/train.py +0 -0
  207. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/world/train_world.py +0 -0
  208. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  209. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  210. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/yoloe/train.py +0 -0
  211. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  212. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/models/yolo/yoloe/val.py +0 -0
  213. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/__init__.py +0 -0
  214. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/autobackend.py +0 -0
  215. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/modules/__init__.py +0 -0
  216. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/modules/activation.py +0 -0
  217. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/modules/block.py +0 -0
  218. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/modules/conv.py +0 -0
  219. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/modules/head.py +0 -0
  220. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/modules/transformer.py +0 -0
  221. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/modules/utils.py +0 -0
  222. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/tasks.py +0 -0
  223. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/nn/text_model.py +0 -0
  224. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/py.typed +0 -0
  225. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/__init__.py +0 -0
  226. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/ai_gym.py +0 -0
  227. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/analytics.py +0 -0
  228. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/config.py +0 -0
  229. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/distance_calculation.py +0 -0
  230. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/heatmap.py +0 -0
  231. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/instance_segmentation.py +0 -0
  232. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/object_blurrer.py +0 -0
  233. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/object_counter.py +0 -0
  234. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/object_cropper.py +0 -0
  235. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/parking_management.py +0 -0
  236. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/queue_management.py +0 -0
  237. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/region_counter.py +0 -0
  238. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/security_alarm.py +0 -0
  239. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/similarity_search.py +0 -0
  240. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/solutions.py +0 -0
  241. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/speed_estimation.py +0 -0
  242. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/streamlit_inference.py +0 -0
  243. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/templates/similarity-search.html +0 -0
  244. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/trackzone.py +0 -0
  245. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/solutions/vision_eye.py +0 -0
  246. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/trackers/__init__.py +0 -0
  247. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/trackers/basetrack.py +0 -0
  248. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/trackers/bot_sort.py +0 -0
  249. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/trackers/byte_tracker.py +0 -0
  250. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/trackers/track.py +0 -0
  251. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/trackers/utils/__init__.py +0 -0
  252. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/trackers/utils/gmc.py +0 -0
  253. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  254. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/trackers/utils/matching.py +0 -0
  255. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/autobatch.py +0 -0
  256. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/autodevice.py +0 -0
  257. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/benchmarks.py +0 -0
  258. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/__init__.py +0 -0
  259. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/clearml.py +0 -0
  260. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/comet.py +0 -0
  261. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/dvc.py +0 -0
  262. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/mlflow.py +0 -0
  263. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/neptune.py +0 -0
  264. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/raytune.py +0 -0
  265. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  266. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/callbacks/wb.py +0 -0
  267. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/checks.py +0 -0
  268. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/dist.py +0 -0
  269. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/downloads.py +0 -0
  270. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/errors.py +0 -0
  271. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/export.py +0 -0
  272. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/files.py +0 -0
  273. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/instance.py +0 -0
  274. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/loss.py +0 -0
  275. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/ops.py +0 -0
  276. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/patches.py +0 -0
  277. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/plotting.py +0 -0
  278. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/tal.py +0 -0
  279. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/torch_utils.py +0 -0
  280. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/ultralytics/utils/triton.py +0 -0
  281. {dgenerate_ultralytics_headless-8.3.183 → dgenerate_ultralytics_headless-8.3.184}/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.183
3
+ Version: 8.3.184
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.183
3
+ Version: 8.3.184
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>
@@ -262,6 +262,7 @@ ultralytics/utils/errors.py
262
262
  ultralytics/utils/export.py
263
263
  ultralytics/utils/files.py
264
264
  ultralytics/utils/instance.py
265
+ ultralytics/utils/logger.py
265
266
  ultralytics/utils/loss.py
266
267
  ultralytics/utils/metrics.py
267
268
  ultralytics/utils/ops.py
@@ -279,6 +280,7 @@ ultralytics/utils/callbacks/dvc.py
279
280
  ultralytics/utils/callbacks/hub.py
280
281
  ultralytics/utils/callbacks/mlflow.py
281
282
  ultralytics/utils/callbacks/neptune.py
283
+ ultralytics/utils/callbacks/platform.py
282
284
  ultralytics/utils/callbacks/raytune.py
283
285
  ultralytics/utils/callbacks/tensorboard.py
284
286
  ultralytics/utils/callbacks/wb.py
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.183"
3
+ __version__ = "8.3.184"
4
4
 
5
5
  import os
6
6
 
@@ -786,7 +786,7 @@ async def convert_ndjson_to_yolo(ndjson_path: Union[str, Path], output_path: Opt
786
786
  Convert with custom output directory:
787
787
  >>> yaml_path = convert_ndjson_to_yolo("dataset.ndjson", output_path="./converted_datasets")
788
788
 
789
- # Use with YOLO training
789
+ Use with YOLO training
790
790
  >>> from ultralytics import YOLO
791
791
  >>> model = YOLO("yolo11n.pt")
792
792
  >>> model.train(data="https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-ndjson.ndjson")
@@ -807,6 +807,7 @@ async def convert_ndjson_to_yolo(ndjson_path: Union[str, Path], output_path: Opt
807
807
  dataset_dir.mkdir(parents=True, exist_ok=True)
808
808
  data_yaml = dict(dataset_record)
809
809
  data_yaml["names"] = {int(k): v for k, v in dataset_record.get("class_names", {}).items()}
810
+ data_yaml.pop("class_names")
810
811
 
811
812
  for split in sorted(splits):
812
813
  (dataset_dir / "images" / split).mkdir(parents=True, exist_ok=True)
@@ -174,6 +174,8 @@ class BaseTrainer:
174
174
  self.callbacks = _callbacks or callbacks.get_default_callbacks()
175
175
  if RANK in {-1, 0}:
176
176
  callbacks.add_integration_callbacks(self)
177
+ # Start console logging immediately at trainer initialization
178
+ self.run_callbacks("on_pretrain_routine_start")
177
179
 
178
180
  def add_callback(self, event: str, callback):
179
181
  """Append the given callback to the event's callback list."""
@@ -249,8 +251,6 @@ class BaseTrainer:
249
251
 
250
252
  def _setup_train(self, world_size):
251
253
  """Build dataloaders and optimizer on correct rank process."""
252
- # Model
253
- self.run_callbacks("on_pretrain_routine_start")
254
254
  ckpt = self.setup_model()
255
255
  self.model = self.model.to(self.device)
256
256
  self.set_model_attributes()
@@ -170,6 +170,7 @@ class TQDM(rich.tqdm if TQDM_RICH else tqdm.tqdm):
170
170
  Notes:
171
171
  - The progress bar is disabled if VERBOSE is False or if 'disable' is explicitly set to True in kwargs.
172
172
  - The default bar format is set to TQDM_BAR_FORMAT unless overridden in kwargs.
173
+ - In GitHub Actions, progress bars only update at completion to keep CI logs clean.
173
174
 
174
175
  Examples:
175
176
  >>> from ultralytics.utils import TQDM
@@ -178,6 +179,8 @@ class TQDM(rich.tqdm if TQDM_RICH else tqdm.tqdm):
178
179
  ... pass
179
180
  """
180
181
  warnings.filterwarnings("ignore", category=tqdm.TqdmExperimentalWarning) # suppress tqdm.rich warning
182
+ if is_github_action_running():
183
+ kwargs["mininterval"] = 60 # only update every 60 seconds
181
184
  kwargs["disable"] = not VERBOSE or kwargs.get("disable", False) or LOGGER.getEffectiveLevel() > 20
182
185
  kwargs.setdefault("bar_format", TQDM_BAR_FORMAT) # override default value if passed
183
186
  super().__init__(*args, **kwargs)
@@ -209,10 +209,11 @@ def add_integration_callbacks(instance):
209
209
  >>> trainer = BaseTrainer()
210
210
  >>> add_integration_callbacks(trainer)
211
211
  """
212
- # Load HUB callbacks
213
212
  from .hub import callbacks as hub_cb
213
+ from .platform import callbacks as platform_cb
214
214
 
215
- callbacks_list = [hub_cb]
215
+ # Load Ultralytics callbacks
216
+ callbacks_list = [hub_cb, platform_cb]
216
217
 
217
218
  # Load training callbacks
218
219
  if "Trainer" in instance.__class__.__name__:
@@ -106,4 +106,4 @@ callbacks = (
106
106
  }
107
107
  if SETTINGS["hub"] is True
108
108
  else {}
109
- ) # verify hub is enabled before registering callbacks
109
+ )
@@ -0,0 +1,72 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ from ultralytics.utils import RANK, SETTINGS
4
+ from ultralytics.utils.logger import DEFAULT_LOG_PATH, ConsoleLogger, SystemLogger
5
+
6
+
7
+ def on_pretrain_routine_start(trainer):
8
+ """Initialize and start console logging immediately at the very beginning."""
9
+ if RANK in {-1, 0}:
10
+ trainer.system_logger = SystemLogger()
11
+ trainer.console_logger = ConsoleLogger(DEFAULT_LOG_PATH)
12
+ trainer.console_logger.start_capture()
13
+
14
+
15
+ def on_pretrain_routine_end(trainer):
16
+ """Handle pre-training routine completion event."""
17
+ pass
18
+
19
+
20
+ def on_fit_epoch_end(trainer):
21
+ """Handle end of training epoch event and collect system metrics."""
22
+ if RANK in {-1, 0} and hasattr(trainer, "system_logger"):
23
+ system_metrics = trainer.system_logger.get_metrics()
24
+ print(system_metrics) # for debug
25
+
26
+
27
+ def on_model_save(trainer):
28
+ """Handle model checkpoint save event."""
29
+ pass
30
+
31
+
32
+ def on_train_end(trainer):
33
+ """Stop console capture and finalize logs."""
34
+ if logger := getattr(trainer, "console_logger", None):
35
+ logger.stop_capture()
36
+
37
+
38
+ def on_train_start(trainer):
39
+ """Handle training start event."""
40
+ pass
41
+
42
+
43
+ def on_val_start(validator):
44
+ """Handle validation start event."""
45
+ pass
46
+
47
+
48
+ def on_predict_start(predictor):
49
+ """Handle prediction start event."""
50
+ pass
51
+
52
+
53
+ def on_export_start(exporter):
54
+ """Handle model export start event."""
55
+ pass
56
+
57
+
58
+ callbacks = (
59
+ {
60
+ "on_pretrain_routine_start": on_pretrain_routine_start,
61
+ "on_pretrain_routine_end": on_pretrain_routine_end,
62
+ "on_fit_epoch_end": on_fit_epoch_end,
63
+ "on_model_save": on_model_save,
64
+ "on_train_end": on_train_end,
65
+ "on_train_start": on_train_start,
66
+ "on_val_start": on_val_start,
67
+ "on_predict_start": on_predict_start,
68
+ "on_export_start": on_export_start,
69
+ }
70
+ if SETTINGS.get("platform", False) is True # disabled for debugging
71
+ else {}
72
+ )
@@ -0,0 +1,408 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ import logging
4
+ import queue
5
+ import shutil
6
+ import sys
7
+ import threading
8
+ import time
9
+ from datetime import datetime
10
+ from pathlib import Path
11
+
12
+ import psutil
13
+ import requests
14
+
15
+ from ultralytics.utils import MACOS, RANK
16
+ from ultralytics.utils.checks import check_requirements
17
+
18
+ # Initialize default log file
19
+ DEFAULT_LOG_PATH = Path("train.log")
20
+ if RANK in {-1, 0} and DEFAULT_LOG_PATH.exists():
21
+ DEFAULT_LOG_PATH.unlink(missing_ok=True)
22
+
23
+
24
+ class ConsoleLogger:
25
+ """
26
+ Console output capture with API/file streaming and deduplication.
27
+
28
+ Captures stdout/stderr output and streams it to either an API endpoint or local file, with intelligent
29
+ deduplication to reduce noise from repetitive console output.
30
+
31
+ Attributes:
32
+ destination (str | Path): Target destination for streaming (URL or Path object).
33
+ is_api (bool): Whether destination is an API endpoint (True) or local file (False).
34
+ original_stdout: Reference to original sys.stdout for restoration.
35
+ original_stderr: Reference to original sys.stderr for restoration.
36
+ log_queue (queue.Queue): Thread-safe queue for buffering log messages.
37
+ active (bool): Whether console capture is currently active.
38
+ worker_thread (threading.Thread): Background thread for processing log queue.
39
+ last_line (str): Last processed line for deduplication.
40
+ last_time (float): Timestamp of last processed line.
41
+ last_progress_line (str): Last progress bar line for progress deduplication.
42
+ last_was_progress (bool): Whether the last line was a progress bar.
43
+
44
+ Examples:
45
+ Basic file logging:
46
+ >>> logger = ConsoleLogger("training.log")
47
+ >>> logger.start_capture()
48
+ >>> print("This will be logged")
49
+ >>> logger.stop_capture()
50
+
51
+ API streaming:
52
+ >>> logger = ConsoleLogger("https://api.example.com/logs")
53
+ >>> logger.start_capture()
54
+ >>> # All output streams to API
55
+ >>> logger.stop_capture()
56
+ """
57
+
58
+ def __init__(self, destination):
59
+ """
60
+ Initialize with API endpoint or local file path.
61
+
62
+ Args:
63
+ destination (str | Path): API endpoint URL (http/https) or local file path for streaming output.
64
+ """
65
+ self.destination = destination
66
+ self.is_api = isinstance(destination, str) and destination.startswith(("http://", "https://"))
67
+ if not self.is_api:
68
+ self.destination = Path(destination)
69
+
70
+ # Console capture
71
+ self.original_stdout = sys.stdout
72
+ self.original_stderr = sys.stderr
73
+ self.log_queue = queue.Queue(maxsize=1000)
74
+ self.active = False
75
+ self.worker_thread = None
76
+
77
+ # State tracking
78
+ self.last_line = ""
79
+ self.last_time = 0.0
80
+ self.last_progress_line = "" # Track 100% progress lines separately
81
+ self.last_was_progress = False # Track if last line was a progress bar
82
+
83
+ def start_capture(self):
84
+ """Start capturing console output and redirect stdout/stderr to custom capture objects."""
85
+ if self.active:
86
+ return
87
+
88
+ self.active = True
89
+ sys.stdout = self._ConsoleCapture(self.original_stdout, self._queue_log)
90
+ sys.stderr = self._ConsoleCapture(self.original_stderr, self._queue_log)
91
+
92
+ # Hook Ultralytics logger
93
+ try:
94
+ handler = self._LogHandler(self._queue_log)
95
+ logging.getLogger("ultralytics").addHandler(handler)
96
+ except Exception:
97
+ pass
98
+
99
+ self.worker_thread = threading.Thread(target=self._stream_worker, daemon=True)
100
+ self.worker_thread.start()
101
+
102
+ def stop_capture(self):
103
+ """Stop capturing console output and restore original stdout/stderr."""
104
+ if not self.active:
105
+ return
106
+
107
+ self.active = False
108
+ sys.stdout = self.original_stdout
109
+ sys.stderr = self.original_stderr
110
+ self.log_queue.put(None)
111
+
112
+ def _queue_log(self, text):
113
+ """Queue console text with deduplication and timestamp processing."""
114
+ if not self.active:
115
+ return
116
+
117
+ current_time = time.time()
118
+
119
+ # Handle carriage returns and process lines
120
+ if "\r" in text:
121
+ text = text.split("\r")[-1]
122
+
123
+ lines = text.split("\n")
124
+ if lines and lines[-1] == "":
125
+ lines.pop()
126
+
127
+ for line in lines:
128
+ line = line.rstrip()
129
+
130
+ # Handle progress bars - only show 100% completions
131
+ if ("it/s" in line and ("%|" in line or "━" in line)) or (
132
+ "100%" in line and ("it/s" in line or "[" in line)
133
+ ):
134
+ if "100%" not in line:
135
+ continue
136
+ # Dedupe 100% lines by core content (strip timing)
137
+ progress_core = line.split("[")[0].split("]")[0].strip()
138
+ if progress_core == self.last_progress_line:
139
+ continue
140
+ self.last_progress_line = progress_core
141
+ self.last_was_progress = True
142
+ else:
143
+ # Skip empty line after progress bar
144
+ if not line and self.last_was_progress:
145
+ self.last_was_progress = False
146
+ continue
147
+ self.last_was_progress = False
148
+
149
+ # General deduplication
150
+ if line == self.last_line and current_time - self.last_time < 0.1:
151
+ continue
152
+
153
+ self.last_line = line
154
+ self.last_time = current_time
155
+
156
+ # Add timestamp if needed
157
+ if not line.startswith("[20"):
158
+ timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
159
+ line = f"[{timestamp}] {line}"
160
+
161
+ # Queue with overflow protection
162
+ if not self._safe_put(f"{line}\n"):
163
+ continue # Skip if queue handling fails
164
+
165
+ def _safe_put(self, item):
166
+ """Safely put item in queue with overflow handling."""
167
+ try:
168
+ self.log_queue.put_nowait(item)
169
+ return True
170
+ except queue.Full:
171
+ try:
172
+ self.log_queue.get_nowait() # Drop oldest
173
+ self.log_queue.put_nowait(item)
174
+ return True
175
+ except queue.Empty:
176
+ return False
177
+
178
+ def _stream_worker(self):
179
+ """Background worker for streaming logs to destination."""
180
+ while self.active:
181
+ try:
182
+ log_text = self.log_queue.get(timeout=1)
183
+ if log_text is None:
184
+ break
185
+ self._write_log(log_text)
186
+ except queue.Empty:
187
+ continue
188
+
189
+ def _write_log(self, text):
190
+ """Write log to API endpoint or local file destination."""
191
+ try:
192
+ if self.is_api:
193
+ payload = {"timestamp": datetime.now().isoformat(), "message": text.strip()}
194
+ requests.post(self.destination, json=payload, timeout=5)
195
+ else:
196
+ self.destination.parent.mkdir(parents=True, exist_ok=True)
197
+ with self.destination.open("a", encoding="utf-8") as f:
198
+ f.write(text)
199
+ except Exception as e:
200
+ print(f"Platform logging error: {e}", file=self.original_stderr)
201
+
202
+ class _ConsoleCapture:
203
+ """Lightweight stdout/stderr capture."""
204
+
205
+ __slots__ = ("original", "callback")
206
+
207
+ def __init__(self, original, callback):
208
+ self.original = original
209
+ self.callback = callback
210
+
211
+ def write(self, text):
212
+ self.original.write(text)
213
+ self.callback(text)
214
+
215
+ def flush(self):
216
+ self.original.flush()
217
+
218
+ class _LogHandler(logging.Handler):
219
+ """Lightweight logging handler."""
220
+
221
+ __slots__ = ("callback",)
222
+
223
+ def __init__(self, callback):
224
+ super().__init__()
225
+ self.callback = callback
226
+
227
+ def emit(self, record):
228
+ self.callback(self.format(record) + "\n")
229
+
230
+
231
+ class SystemLogger:
232
+ """
233
+ Log dynamic system metrics for training monitoring.
234
+
235
+ Captures real-time system metrics including CPU, RAM, disk I/O, network I/O, and NVIDIA GPU statistics for
236
+ training performance monitoring and analysis.
237
+
238
+ Attributes:
239
+ pynvml: NVIDIA pynvml module instance if successfully imported, None otherwise.
240
+ nvidia_initialized (bool): Whether NVIDIA GPU monitoring is available and initialized.
241
+ process (psutil.Process): Current psutil.Process instance for process-specific metrics.
242
+ net_start: Initial network I/O counters for calculating cumulative usage.
243
+ disk_start: Initial disk I/O counters for calculating cumulative usage.
244
+
245
+ Examples:
246
+ Basic usage:
247
+ >>> logger = SystemLogger()
248
+ >>> metrics = logger.get_metrics()
249
+ >>> print(f"CPU: {metrics['cpu']}%, RAM: {metrics['ram']}%")
250
+ >>> if metrics["gpus"]:
251
+ ... gpu0 = metrics["gpus"]["0"]
252
+ ... print(f"GPU0: {gpu0['usage']}% usage, {gpu0['temp']}°C")
253
+
254
+ Training loop integration:
255
+ >>> system_logger = SystemLogger()
256
+ >>> for epoch in range(epochs):
257
+ ... # Training code here
258
+ ... metrics = system_logger.get_metrics()
259
+ ... # Log to database/file
260
+ """
261
+
262
+ def __init__(self):
263
+ """Initialize the system logger."""
264
+ self.pynvml = None
265
+ self.nvidia_initialized = self._init_nvidia()
266
+ self.process = psutil.Process()
267
+ self.net_start = psutil.net_io_counters()
268
+ self.disk_start = psutil.disk_io_counters()
269
+
270
+ def _init_nvidia(self):
271
+ """Initialize NVIDIA GPU monitoring with pynvml."""
272
+ try:
273
+ assert not MACOS
274
+ check_requirements("pynvml>=12.0.0")
275
+ self.pynvml = __import__("pynvml")
276
+ self.pynvml.nvmlInit()
277
+ return True
278
+ except Exception:
279
+ return False
280
+
281
+ def get_metrics(self):
282
+ """
283
+ Get current system metrics.
284
+
285
+ Collects comprehensive system metrics including CPU usage, RAM usage, disk I/O statistics,
286
+ network I/O statistics, and GPU metrics (if available). Example output:
287
+
288
+ ```json
289
+ {
290
+ 'cpu': 45.2,
291
+ 'ram': 78.9,
292
+ 'disk': {'read_mb': 156.7, 'write_mb': 89.3, 'used_gb': 256.8},
293
+ 'network': {'recv_mb': 157.2, 'sent_mb': 89.1},
294
+ 'gpus': {
295
+ 0: {'usage': 95.6, 'memory': 85.4, 'temp': 72, 'power': 285},
296
+ 1: {'usage': 94.1, 'memory': 82.7, 'temp': 70, 'power': 278}
297
+ }
298
+ }
299
+ ```
300
+
301
+ - cpu (float): CPU usage percentage (0-100%)
302
+ - ram (float): RAM usage percentage (0-100%)
303
+ - disk (dict):
304
+ - read_mb (float): Cumulative disk read in MB since initialization
305
+ - write_mb (float): Cumulative disk write in MB since initialization
306
+ - used_gb (float): Total disk space used in GB
307
+ - network (dict):
308
+ - recv_mb (float): Cumulative network received in MB since initialization
309
+ - sent_mb (float): Cumulative network sent in MB since initialization
310
+ - gpus (dict): GPU metrics by device index (e.g., 0, 1) containing:
311
+ - usage (int): GPU utilization percentage (0-100%)
312
+ - memory (float): CUDA memory usage percentage (0-100%)
313
+ - temp (int): GPU temperature in degrees Celsius
314
+ - power (int): GPU power consumption in watts
315
+
316
+ Returns:
317
+ (dict): System metrics containing 'cpu', 'ram', 'disk', 'network', 'gpus' with respective usage data.
318
+ """
319
+ net = psutil.net_io_counters()
320
+ disk = psutil.disk_io_counters()
321
+ memory = psutil.virtual_memory()
322
+ disk_usage = shutil.disk_usage("/")
323
+
324
+ metrics = {
325
+ "cpu": round(psutil.cpu_percent(), 3),
326
+ "ram": round(memory.percent, 3),
327
+ "disk": {
328
+ "read_mb": round((disk.read_bytes - self.disk_start.read_bytes) / (1 << 20), 3),
329
+ "write_mb": round((disk.write_bytes - self.disk_start.write_bytes) / (1 << 20), 3),
330
+ "used_gb": round(disk_usage.used / (1 << 30), 3),
331
+ },
332
+ "network": {
333
+ "recv_mb": round((net.bytes_recv - self.net_start.bytes_recv) / (1 << 20), 3),
334
+ "sent_mb": round((net.bytes_sent - self.net_start.bytes_sent) / (1 << 20), 3),
335
+ },
336
+ "gpus": {},
337
+ }
338
+
339
+ # Add GPU metrics (NVIDIA only)
340
+ if self.nvidia_initialized:
341
+ metrics["gpus"].update(self._get_nvidia_metrics())
342
+
343
+ return metrics
344
+
345
+ def _get_nvidia_metrics(self):
346
+ """Get NVIDIA GPU metrics including utilization, memory, temperature, and power."""
347
+ gpus = {}
348
+ if not self.nvidia_initialized or not self.pynvml:
349
+ return gpus
350
+ try:
351
+ device_count = self.pynvml.nvmlDeviceGetCount()
352
+ for i in range(device_count):
353
+ handle = self.pynvml.nvmlDeviceGetHandleByIndex(i)
354
+ util = self.pynvml.nvmlDeviceGetUtilizationRates(handle)
355
+ memory = self.pynvml.nvmlDeviceGetMemoryInfo(handle)
356
+ temp = self.pynvml.nvmlDeviceGetTemperature(handle, self.pynvml.NVML_TEMPERATURE_GPU)
357
+ power = self.pynvml.nvmlDeviceGetPowerUsage(handle) // 1000
358
+
359
+ gpus[str(i)] = {
360
+ "usage": round(util.gpu, 3),
361
+ "memory": round((memory.used / memory.total) * 100, 3),
362
+ "temp": temp,
363
+ "power": power,
364
+ }
365
+ except Exception:
366
+ pass
367
+ return gpus
368
+
369
+
370
+ if __name__ == "__main__":
371
+ print("SystemLogger Real-time Metrics Monitor")
372
+ print("Press Ctrl+C to stop\n")
373
+
374
+ logger = SystemLogger()
375
+
376
+ try:
377
+ while True:
378
+ metrics = logger.get_metrics()
379
+
380
+ # Clear screen (works on most terminals)
381
+ print("\033[H\033[J", end="")
382
+
383
+ # Display system metrics
384
+ print(f"CPU: {metrics['cpu']:5.1f}%")
385
+ print(f"RAM: {metrics['ram']:5.1f}%")
386
+ print(f"Disk Read: {metrics['disk']['read_mb']:8.1f} MB")
387
+ print(f"Disk Write: {metrics['disk']['write_mb']:7.1f} MB")
388
+ print(f"Disk Used: {metrics['disk']['used_gb']:8.1f} GB")
389
+ print(f"Net Recv: {metrics['network']['recv_mb']:9.1f} MB")
390
+ print(f"Net Sent: {metrics['network']['sent_mb']:9.1f} MB")
391
+
392
+ # Display GPU metrics if available
393
+ if metrics["gpus"]:
394
+ print("\nGPU Metrics:")
395
+ for gpu_id, gpu_data in metrics["gpus"].items():
396
+ print(
397
+ f" GPU {gpu_id}: {gpu_data['usage']:3}% | "
398
+ f"Mem: {gpu_data['memory']:5.1f}% | "
399
+ f"Temp: {gpu_data['temp']:2}°C | "
400
+ f"Power: {gpu_data['power']:3}W"
401
+ )
402
+ else:
403
+ print("\nGPU: No NVIDIA GPUs detected")
404
+
405
+ time.sleep(1)
406
+
407
+ except KeyboardInterrupt:
408
+ print("\n\nStopped monitoring.")
@@ -1152,7 +1152,9 @@ class DetMetrics(SimpleClass, DataExportMixin):
1152
1152
  @property
1153
1153
  def results_dict(self) -> Dict[str, float]:
1154
1154
  """Return dictionary of computed performance metrics and statistics."""
1155
- return dict(zip(self.keys + ["fitness"], self.mean_results() + [self.fitness]))
1155
+ keys = self.keys + ["fitness"]
1156
+ values = ((float(x) if hasattr(x, "item") else x) for x in (self.mean_results() + [self.fitness]))
1157
+ return dict(zip(keys, values))
1156
1158
 
1157
1159
  @property
1158
1160
  def curves(self) -> List[str]: