dgenerate-ultralytics-headless 8.3.195__tar.gz → 8.3.197__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 (287) hide show
  1. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/PKG-INFO +1 -1
  2. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +1 -1
  3. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +1 -0
  4. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/__init__.py +1 -1
  5. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/__init__.py +1 -0
  6. dgenerate_ultralytics_headless-8.3.197/ultralytics/cfg/datasets/construction-ppe.yaml +32 -0
  7. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/default.yaml +1 -0
  8. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/augment.py +1 -1
  9. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/build.py +5 -1
  10. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/engine/exporter.py +20 -31
  11. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/engine/model.py +1 -2
  12. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/engine/predictor.py +3 -1
  13. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/engine/trainer.py +17 -8
  14. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/engine/validator.py +6 -2
  15. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/classify/train.py +1 -11
  16. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/detect/train.py +27 -6
  17. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/detect/val.py +6 -5
  18. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/obb/train.py +0 -9
  19. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/pose/train.py +0 -9
  20. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/pose/val.py +1 -1
  21. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/segment/train.py +0 -9
  22. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/segment/val.py +5 -5
  23. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/world/train.py +4 -4
  24. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/world/train_world.py +2 -2
  25. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/yoloe/train.py +3 -12
  26. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/yoloe/val.py +0 -7
  27. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/tasks.py +4 -2
  28. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/__init__.py +30 -19
  29. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/tensorboard.py +2 -2
  30. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/checks.py +2 -0
  31. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/loss.py +12 -7
  32. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/nms.py +3 -1
  33. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/plotting.py +1 -0
  34. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/torch_utils.py +89 -9
  35. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/LICENSE +0 -0
  36. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/README.md +0 -0
  37. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
  38. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
  39. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
  40. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
  41. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/pyproject.toml +0 -0
  42. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/setup.cfg +0 -0
  43. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/tests/__init__.py +0 -0
  44. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/tests/conftest.py +0 -0
  45. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/tests/test_cli.py +0 -0
  46. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/tests/test_cuda.py +0 -0
  47. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/tests/test_engine.py +0 -0
  48. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/tests/test_exports.py +0 -0
  49. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/tests/test_integrations.py +0 -0
  50. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/tests/test_python.py +0 -0
  51. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/tests/test_solutions.py +0 -0
  52. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/assets/bus.jpg +0 -0
  53. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/assets/zidane.jpg +0 -0
  54. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  55. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  56. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  57. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  58. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  59. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  60. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  61. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  62. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  63. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  64. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  65. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  66. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  67. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  68. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/coco.yaml +0 -0
  69. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  70. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  71. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  72. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  73. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  74. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  75. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  76. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  77. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  78. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  79. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  80. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  81. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  82. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  83. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  84. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  85. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/signature.yaml +0 -0
  86. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  87. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/datasets/xView.yaml +0 -0
  88. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  89. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  90. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  91. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  92. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  93. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  94. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  95. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  96. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  97. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  98. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  99. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  100. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  101. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  102. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  103. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  104. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  105. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  106. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  107. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  108. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  109. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  110. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  111. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  112. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  113. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  114. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  115. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  116. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  117. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  118. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  119. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  120. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  121. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  122. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  123. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  124. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  125. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  126. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  127. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  128. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  129. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  130. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  131. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  132. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  133. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  134. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  135. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  136. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  137. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  138. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  139. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  140. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  141. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  142. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  143. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  144. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  145. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/__init__.py +0 -0
  146. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/annotator.py +0 -0
  147. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/base.py +0 -0
  148. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/converter.py +0 -0
  149. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/dataset.py +0 -0
  150. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/loaders.py +0 -0
  151. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/scripts/download_weights.sh +0 -0
  152. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/scripts/get_coco.sh +0 -0
  153. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/scripts/get_coco128.sh +0 -0
  154. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  155. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/split.py +0 -0
  156. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/split_dota.py +0 -0
  157. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/data/utils.py +0 -0
  158. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/engine/__init__.py +0 -0
  159. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/engine/results.py +0 -0
  160. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/engine/tuner.py +0 -0
  161. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/hub/__init__.py +0 -0
  162. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/hub/auth.py +0 -0
  163. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/hub/google/__init__.py +0 -0
  164. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/hub/session.py +0 -0
  165. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/hub/utils.py +0 -0
  166. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/__init__.py +0 -0
  167. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/fastsam/__init__.py +0 -0
  168. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/fastsam/model.py +0 -0
  169. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/fastsam/predict.py +0 -0
  170. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/fastsam/utils.py +0 -0
  171. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/fastsam/val.py +0 -0
  172. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/nas/__init__.py +0 -0
  173. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/nas/model.py +0 -0
  174. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/nas/predict.py +0 -0
  175. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/nas/val.py +0 -0
  176. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/rtdetr/__init__.py +0 -0
  177. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/rtdetr/model.py +0 -0
  178. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/rtdetr/predict.py +0 -0
  179. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/rtdetr/train.py +0 -0
  180. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/rtdetr/val.py +0 -0
  181. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/__init__.py +0 -0
  182. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/amg.py +0 -0
  183. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/build.py +0 -0
  184. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/model.py +0 -0
  185. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/modules/__init__.py +0 -0
  186. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/modules/blocks.py +0 -0
  187. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/modules/decoders.py +0 -0
  188. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/modules/encoders.py +0 -0
  189. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  190. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/modules/sam.py +0 -0
  191. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  192. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/modules/transformer.py +0 -0
  193. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/modules/utils.py +0 -0
  194. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/sam/predict.py +0 -0
  195. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/utils/__init__.py +0 -0
  196. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/utils/loss.py +0 -0
  197. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/utils/ops.py +0 -0
  198. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/__init__.py +0 -0
  199. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/classify/__init__.py +0 -0
  200. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/classify/predict.py +0 -0
  201. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/classify/val.py +0 -0
  202. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/detect/__init__.py +0 -0
  203. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/detect/predict.py +0 -0
  204. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/model.py +0 -0
  205. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/obb/__init__.py +0 -0
  206. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/obb/predict.py +0 -0
  207. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/obb/val.py +0 -0
  208. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/pose/__init__.py +0 -0
  209. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/pose/predict.py +0 -0
  210. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/segment/__init__.py +0 -0
  211. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/segment/predict.py +0 -0
  212. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/world/__init__.py +0 -0
  213. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  214. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  215. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  216. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/__init__.py +0 -0
  217. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/autobackend.py +0 -0
  218. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/modules/__init__.py +0 -0
  219. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/modules/activation.py +0 -0
  220. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/modules/block.py +0 -0
  221. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/modules/conv.py +0 -0
  222. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/modules/head.py +0 -0
  223. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/modules/transformer.py +0 -0
  224. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/modules/utils.py +0 -0
  225. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/nn/text_model.py +0 -0
  226. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/py.typed +0 -0
  227. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/__init__.py +0 -0
  228. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/ai_gym.py +0 -0
  229. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/analytics.py +0 -0
  230. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/config.py +0 -0
  231. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/distance_calculation.py +0 -0
  232. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/heatmap.py +0 -0
  233. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/instance_segmentation.py +0 -0
  234. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/object_blurrer.py +0 -0
  235. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/object_counter.py +0 -0
  236. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/object_cropper.py +0 -0
  237. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/parking_management.py +0 -0
  238. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/queue_management.py +0 -0
  239. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/region_counter.py +0 -0
  240. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/security_alarm.py +0 -0
  241. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/similarity_search.py +0 -0
  242. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/solutions.py +0 -0
  243. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/speed_estimation.py +0 -0
  244. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/streamlit_inference.py +0 -0
  245. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/templates/similarity-search.html +0 -0
  246. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/trackzone.py +0 -0
  247. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/solutions/vision_eye.py +0 -0
  248. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/trackers/__init__.py +0 -0
  249. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/trackers/basetrack.py +0 -0
  250. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/trackers/bot_sort.py +0 -0
  251. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/trackers/byte_tracker.py +0 -0
  252. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/trackers/track.py +0 -0
  253. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/trackers/utils/__init__.py +0 -0
  254. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/trackers/utils/gmc.py +0 -0
  255. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  256. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/trackers/utils/matching.py +0 -0
  257. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/autobatch.py +0 -0
  258. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/autodevice.py +0 -0
  259. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/benchmarks.py +0 -0
  260. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/__init__.py +0 -0
  261. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/base.py +0 -0
  262. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/clearml.py +0 -0
  263. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/comet.py +0 -0
  264. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/dvc.py +0 -0
  265. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/hub.py +0 -0
  266. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/mlflow.py +0 -0
  267. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/neptune.py +0 -0
  268. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/platform.py +0 -0
  269. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/raytune.py +0 -0
  270. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/callbacks/wb.py +0 -0
  271. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/cpu.py +0 -0
  272. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/dist.py +0 -0
  273. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/downloads.py +0 -0
  274. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/errors.py +0 -0
  275. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/events.py +0 -0
  276. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/export.py +0 -0
  277. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/files.py +0 -0
  278. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/git.py +0 -0
  279. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/instance.py +0 -0
  280. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/logger.py +0 -0
  281. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/metrics.py +0 -0
  282. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/ops.py +0 -0
  283. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/patches.py +0 -0
  284. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/tal.py +0 -0
  285. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/tqdm.py +0 -0
  286. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/ultralytics/utils/triton.py +0 -0
  287. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.197}/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.195
3
+ Version: 8.3.197
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.195
3
+ Version: 8.3.197
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>
@@ -51,6 +51,7 @@ ultralytics/cfg/datasets/coco8-multispectral.yaml
51
51
  ultralytics/cfg/datasets/coco8-pose.yaml
52
52
  ultralytics/cfg/datasets/coco8-seg.yaml
53
53
  ultralytics/cfg/datasets/coco8.yaml
54
+ ultralytics/cfg/datasets/construction-ppe.yaml
54
55
  ultralytics/cfg/datasets/crack-seg.yaml
55
56
  ultralytics/cfg/datasets/dog-pose.yaml
56
57
  ultralytics/cfg/datasets/dota8-multispectral.yaml
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.195"
3
+ __version__ = "8.3.197"
4
4
 
5
5
  import os
6
6
 
@@ -237,6 +237,7 @@ CFG_BOOL_KEYS = frozenset(
237
237
  "nms",
238
238
  "profile",
239
239
  "multi_scale",
240
+ "compile",
240
241
  }
241
242
  )
242
243
 
@@ -0,0 +1,32 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # Construction-PPE dataset by Ultralytics
4
+ # Documentation: https://docs.ultralytics.com/datasets/detect/construction-ppe/
5
+ # Example usage: yolo train data=construction-ppe.yaml
6
+ # parent
7
+ # ├── ultralytics
8
+ # └── datasets
9
+ # └── construction-ppe ← downloads here (178.4 MB)
10
+
11
+ # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
+ path: construction-ppe # dataset root dir
13
+ train: images/train # train images (relative to 'path') 1132 images
14
+ val: images/val # val images (relative to 'path') 143 images
15
+ test: images/test # test images (relative to 'path') 141 images
16
+
17
+ # Classes
18
+ names:
19
+ 0: helmet
20
+ 1: gloves
21
+ 2: vest
22
+ 3: boots
23
+ 4: goggles
24
+ 5: none
25
+ 6: Person
26
+ 7: no_helmet
27
+ 8: no_goggle
28
+ 9: no_gloves
29
+ 10: no_boots
30
+
31
+ # Download script/URL (optional)
32
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/construction-ppe.zip
@@ -37,6 +37,7 @@ fraction: 1.0 # (float) dataset fraction to train on (default is 1.0, all images
37
37
  profile: False # (bool) profile ONNX and TensorRT speeds during training for loggers
38
38
  freeze: # (int | list, optional) freeze first n layers, or freeze list of layer indices during training
39
39
  multi_scale: False # (bool) Whether to use multiscale during training
40
+ compile: False # (bool) Run torch.compile() on the model before train/val/predict
40
41
  # Segmentation
41
42
  overlap_mask: True # (bool) merge object masks into a single image mask during training (segment train only)
42
43
  mask_ratio: 4 # (int) mask downsample ratio (segment train only)
@@ -2202,7 +2202,7 @@ class Format:
2202
2202
  )
2203
2203
  labels["masks"] = masks
2204
2204
  labels["img"] = self._format_img(img)
2205
- labels["cls"] = torch.from_numpy(cls) if nl else torch.zeros(nl)
2205
+ labels["cls"] = torch.from_numpy(cls) if nl else torch.zeros(nl, 1)
2206
2206
  labels["bboxes"] = torch.from_numpy(instances.bboxes) if nl else torch.zeros((nl, 4))
2207
2207
  if self.return_keypoint:
2208
2208
  labels["keypoints"] = (
@@ -28,6 +28,7 @@ from ultralytics.data.loaders import (
28
28
  from ultralytics.data.utils import IMG_FORMATS, VID_FORMATS
29
29
  from ultralytics.utils import RANK, colorstr
30
30
  from ultralytics.utils.checks import check_file
31
+ from ultralytics.utils.torch_utils import TORCH_2_0
31
32
 
32
33
 
33
34
  class InfiniteDataLoader(dataloader.DataLoader):
@@ -57,6 +58,8 @@ class InfiniteDataLoader(dataloader.DataLoader):
57
58
 
58
59
  def __init__(self, *args: Any, **kwargs: Any):
59
60
  """Initialize the InfiniteDataLoader with the same arguments as DataLoader."""
61
+ if not TORCH_2_0:
62
+ kwargs.pop("prefetch_factor", None) # not supported by earlier versions
60
63
  super().__init__(*args, **kwargs)
61
64
  object.__setattr__(self, "batch_sampler", _RepeatSampler(self.batch_sampler))
62
65
  self.iterator = super().__iter__()
@@ -209,11 +212,12 @@ def build_dataloader(dataset, batch: int, workers: int, shuffle: bool = True, ra
209
212
  shuffle=shuffle and sampler is None,
210
213
  num_workers=nw,
211
214
  sampler=sampler,
215
+ prefetch_factor=4 if nw > 0 else None, # increase over default 2
212
216
  pin_memory=nd > 0,
213
217
  collate_fn=getattr(dataset, "collate_fn", None),
214
218
  worker_init_fn=seed_worker,
215
219
  generator=generator,
216
- drop_last=drop_last,
220
+ drop_last=drop_last and len(dataset) % batch != 0,
217
221
  )
218
222
 
219
223
 
@@ -1353,64 +1353,52 @@ class Exporter:
1353
1353
  import coremltools as ct # noqa
1354
1354
 
1355
1355
  LOGGER.info(f"{prefix} starting pipeline with coremltools {ct.__version__}...")
1356
- _, _, h, w = list(self.im.shape) # BCHW
1357
1356
 
1358
1357
  # Output shapes
1359
1358
  spec = model.get_spec()
1360
- out0, out1 = iter(spec.description.output)
1361
- if MACOS:
1362
- from PIL import Image
1363
-
1364
- img = Image.new("RGB", (w, h)) # w=192, h=320
1365
- out = model.predict({"image": img})
1366
- out0_shape = out[out0.name].shape # (3780, 80)
1367
- out1_shape = out[out1.name].shape # (3780, 4)
1368
- else: # linux and windows can not run model.predict(), get sizes from PyTorch model output y
1369
- out0_shape = self.output_shape[2], self.output_shape[1] - 4 # (3780, 80)
1370
- out1_shape = self.output_shape[2], 4 # (3780, 4)
1359
+ outs = list(iter(spec.description.output))
1360
+ if self.args.format == "mlmodel": # mlmodel doesn't infer shapes automatically
1361
+ outs[0].type.multiArrayType.shape[:] = self.output_shape[2], self.output_shape[1] - 4
1362
+ outs[1].type.multiArrayType.shape[:] = self.output_shape[2], 4
1371
1363
 
1372
1364
  # Checks
1373
1365
  names = self.metadata["names"]
1374
1366
  nx, ny = spec.description.input[0].type.imageType.width, spec.description.input[0].type.imageType.height
1375
- _, nc = out0_shape # number of anchors, number of classes
1367
+ nc = outs[0].type.multiArrayType.shape[-1]
1376
1368
  assert len(names) == nc, f"{len(names)} names found for nc={nc}" # check
1377
1369
 
1378
- # Define output shapes (missing)
1379
- out0.type.multiArrayType.shape[:] = out0_shape # (3780, 80)
1380
- out1.type.multiArrayType.shape[:] = out1_shape # (3780, 4)
1381
-
1382
1370
  # Model from spec
1383
1371
  model = ct.models.MLModel(spec, weights_dir=weights_dir)
1384
1372
 
1385
- # 3. Create NMS protobuf
1373
+ # Create NMS protobuf
1386
1374
  nms_spec = ct.proto.Model_pb2.Model()
1387
1375
  nms_spec.specificationVersion = spec.specificationVersion
1388
- for i in range(2):
1376
+ for i in range(len(outs)):
1389
1377
  decoder_output = model._spec.description.output[i].SerializeToString()
1390
1378
  nms_spec.description.input.add()
1391
1379
  nms_spec.description.input[i].ParseFromString(decoder_output)
1392
1380
  nms_spec.description.output.add()
1393
1381
  nms_spec.description.output[i].ParseFromString(decoder_output)
1394
1382
 
1395
- nms_spec.description.output[0].name = "confidence"
1396
- nms_spec.description.output[1].name = "coordinates"
1383
+ output_names = ["confidence", "coordinates"]
1384
+ for i, name in enumerate(output_names):
1385
+ nms_spec.description.output[i].name = name
1397
1386
 
1398
- output_sizes = [nc, 4]
1399
- for i in range(2):
1387
+ for i, out in enumerate(outs):
1400
1388
  ma_type = nms_spec.description.output[i].type.multiArrayType
1401
1389
  ma_type.shapeRange.sizeRanges.add()
1402
1390
  ma_type.shapeRange.sizeRanges[0].lowerBound = 0
1403
1391
  ma_type.shapeRange.sizeRanges[0].upperBound = -1
1404
1392
  ma_type.shapeRange.sizeRanges.add()
1405
- ma_type.shapeRange.sizeRanges[1].lowerBound = output_sizes[i]
1406
- ma_type.shapeRange.sizeRanges[1].upperBound = output_sizes[i]
1393
+ ma_type.shapeRange.sizeRanges[1].lowerBound = out.type.multiArrayType.shape[-1]
1394
+ ma_type.shapeRange.sizeRanges[1].upperBound = out.type.multiArrayType.shape[-1]
1407
1395
  del ma_type.shape[:]
1408
1396
 
1409
1397
  nms = nms_spec.nonMaximumSuppression
1410
- nms.confidenceInputFeatureName = out0.name # 1x507x80
1411
- nms.coordinatesInputFeatureName = out1.name # 1x507x4
1412
- nms.confidenceOutputFeatureName = "confidence"
1413
- nms.coordinatesOutputFeatureName = "coordinates"
1398
+ nms.confidenceInputFeatureName = outs[0].name # 1x507x80
1399
+ nms.coordinatesInputFeatureName = outs[1].name # 1x507x4
1400
+ nms.confidenceOutputFeatureName = output_names[0]
1401
+ nms.coordinatesOutputFeatureName = output_names[1]
1414
1402
  nms.iouThresholdInputFeatureName = "iouThreshold"
1415
1403
  nms.confidenceThresholdInputFeatureName = "confidenceThreshold"
1416
1404
  nms.iouThreshold = self.args.iou
@@ -1419,14 +1407,14 @@ class Exporter:
1419
1407
  nms.stringClassLabels.vector.extend(names.values())
1420
1408
  nms_model = ct.models.MLModel(nms_spec)
1421
1409
 
1422
- # 4. Pipeline models together
1410
+ # Pipeline models together
1423
1411
  pipeline = ct.models.pipeline.Pipeline(
1424
1412
  input_features=[
1425
1413
  ("image", ct.models.datatypes.Array(3, ny, nx)),
1426
1414
  ("iouThreshold", ct.models.datatypes.Double()),
1427
1415
  ("confidenceThreshold", ct.models.datatypes.Double()),
1428
1416
  ],
1429
- output_features=["confidence", "coordinates"],
1417
+ output_features=output_names,
1430
1418
  )
1431
1419
  pipeline.add_model(model)
1432
1420
  pipeline.add_model(nms_model)
@@ -1572,6 +1560,7 @@ class NMSModel(torch.nn.Module):
1572
1560
  or (self.args.format == "openvino" and self.args.int8) # OpenVINO int8 error with triu
1573
1561
  ),
1574
1562
  iou_func=batch_probiou,
1563
+ exit_early=False,
1575
1564
  )
1576
1565
  if self.obb
1577
1566
  else nms
@@ -788,7 +788,7 @@ class Model(torch.nn.Module):
788
788
  "model": self.overrides["model"],
789
789
  "task": self.task,
790
790
  } # method defaults
791
- args = {**overrides, **custom, **kwargs, "mode": "train"} # highest priority args on the right
791
+ args = {**overrides, **custom, **kwargs, "mode": "train", "session": self.session} # prioritizes rightmost args
792
792
  if args.get("resume"):
793
793
  args["resume"] = self.ckpt_path
794
794
 
@@ -797,7 +797,6 @@ class Model(torch.nn.Module):
797
797
  self.trainer.model = self.trainer.get_model(weights=self.model if self.ckpt else None, cfg=self.model.yaml)
798
798
  self.model = self.trainer.model
799
799
 
800
- self.trainer.hub_session = self.session # attach optional HUB session
801
800
  self.trainer.train()
802
801
  # Update model and cfg after training
803
802
  if RANK in {-1, 0}:
@@ -51,7 +51,7 @@ from ultralytics.nn.autobackend import AutoBackend
51
51
  from ultralytics.utils import DEFAULT_CFG, LOGGER, MACOS, WINDOWS, callbacks, colorstr, ops
52
52
  from ultralytics.utils.checks import check_imgsz, check_imshow
53
53
  from ultralytics.utils.files import increment_path
54
- from ultralytics.utils.torch_utils import select_device, smart_inference_mode
54
+ from ultralytics.utils.torch_utils import attempt_compile, select_device, smart_inference_mode
55
55
 
56
56
  STREAM_WARNING = """
57
57
  inference results will accumulate in RAM unless `stream=True` is passed, causing potential out-of-memory
@@ -409,6 +409,8 @@ class BasePredictor:
409
409
  if hasattr(self.model, "imgsz") and not getattr(self.model, "dynamic", False):
410
410
  self.args.imgsz = self.model.imgsz # reuse imgsz from export metadata
411
411
  self.model.eval()
412
+ if self.args.compile:
413
+ self.model = attempt_compile(self.model, device=self.device)
412
414
 
413
415
  def write_results(self, i: int, p: Path, im: torch.Tensor, s: list[str]) -> str:
414
416
  """
@@ -46,6 +46,7 @@ from ultralytics.utils.torch_utils import (
46
46
  TORCH_2_4,
47
47
  EarlyStopping,
48
48
  ModelEMA,
49
+ attempt_compile,
49
50
  autocast,
50
51
  convert_optimizer_state_dict_to_fp16,
51
52
  init_seeds,
@@ -54,6 +55,7 @@ from ultralytics.utils.torch_utils import (
54
55
  strip_optimizer,
55
56
  torch_distributed_zero_first,
56
57
  unset_deterministic,
58
+ unwrap_model,
57
59
  )
58
60
 
59
61
 
@@ -117,6 +119,7 @@ class BaseTrainer:
117
119
  overrides (dict, optional): Configuration overrides.
118
120
  _callbacks (list, optional): List of callback functions.
119
121
  """
122
+ self.hub_session = overrides.pop("session", None) # HUB
120
123
  self.args = get_cfg(cfg, overrides)
121
124
  self.check_resume(overrides)
122
125
  self.device = select_device(self.args.device, self.args.batch)
@@ -168,9 +171,6 @@ class BaseTrainer:
168
171
  self.csv = self.save_dir / "results.csv"
169
172
  self.plot_idx = [0, 1, 2]
170
173
 
171
- # HUB
172
- self.hub_session = None
173
-
174
174
  # Callbacks
175
175
  self.callbacks = _callbacks or callbacks.get_default_callbacks()
176
176
  if RANK in {-1, 0}:
@@ -256,6 +256,14 @@ class BaseTrainer:
256
256
  self.model = self.model.to(self.device)
257
257
  self.set_model_attributes()
258
258
 
259
+ # Initialize loss criterion before compilation for torch.compile compatibility
260
+ if hasattr(self.model, "init_criterion"):
261
+ self.model.criterion = self.model.init_criterion()
262
+
263
+ # Compile model
264
+ if self.args.compile:
265
+ self.model = attempt_compile(self.model, device=self.device)
266
+
259
267
  # Freeze layers
260
268
  freeze_list = (
261
269
  self.args.freeze
@@ -404,7 +412,9 @@ class BaseTrainer:
404
412
  # Forward
405
413
  with autocast(self.amp):
406
414
  batch = self.preprocess_batch(batch)
407
- loss, self.loss_items = self.model(batch)
415
+ # decouple inference and loss calculations for torch.compile convenience
416
+ preds = self.model(batch["img"])
417
+ loss, self.loss_items = self.model.loss(batch, preds)
408
418
  self.loss = loss.sum()
409
419
  if RANK != -1:
410
420
  self.loss *= world_size
@@ -565,7 +575,7 @@ class BaseTrainer:
565
575
  "epoch": self.epoch,
566
576
  "best_fitness": self.best_fitness,
567
577
  "model": None, # resume and final checkpoints derive from EMA
568
- "ema": deepcopy(self.ema.ema).half(),
578
+ "ema": deepcopy(unwrap_model(self.ema.ema)).half(),
569
579
  "updates": self.ema.updates,
570
580
  "optimizer": convert_optimizer_state_dict_to_fp16(deepcopy(self.optimizer.state_dict())),
571
581
  "train_args": vars(self.args), # save as dict
@@ -592,8 +602,6 @@ class BaseTrainer:
592
602
  self.best.write_bytes(serialized_ckpt) # save best.pt
593
603
  if (self.save_period > 0) and (self.epoch % self.save_period == 0):
594
604
  (self.wdir / f"epoch{self.epoch}.pt").write_bytes(serialized_ckpt) # save epoch, i.e. 'epoch3.pt'
595
- # if self.args.close_mosaic and self.epoch == (self.epochs - self.args.close_mosaic - 1):
596
- # (self.wdir / "last_mosaic.pt").write_bytes(serialized_ckpt) # save mosaic checkpoint
597
605
 
598
606
  def get_dataset(self):
599
607
  """
@@ -667,7 +675,7 @@ class BaseTrainer:
667
675
 
668
676
  def validate(self):
669
677
  """
670
- Run validation on test set using self.validator.
678
+ Run validation on val set using self.validator.
671
679
 
672
680
  Returns:
673
681
  metrics (dict): Dictionary of validation metrics.
@@ -755,6 +763,7 @@ class BaseTrainer:
755
763
  strip_optimizer(f, updates={k: ckpt[k]} if k in ckpt else None)
756
764
  LOGGER.info(f"\nValidating {f}...")
757
765
  self.validator.args.plots = self.args.plots
766
+ self.validator.args.compile = False # disable final val compile as too slow
758
767
  self.metrics = self.validator(model=f)
759
768
  self.metrics.pop("fitness", None)
760
769
  self.run_callbacks("on_fit_epoch_end")
@@ -36,7 +36,7 @@ from ultralytics.nn.autobackend import AutoBackend
36
36
  from ultralytics.utils import LOGGER, TQDM, callbacks, colorstr, emojis
37
37
  from ultralytics.utils.checks import check_imgsz
38
38
  from ultralytics.utils.ops import Profile
39
- from ultralytics.utils.torch_utils import de_parallel, select_device, smart_inference_mode
39
+ from ultralytics.utils.torch_utils import attempt_compile, select_device, smart_inference_mode, unwrap_model
40
40
 
41
41
 
42
42
  class BaseValidator:
@@ -148,6 +148,8 @@ class BaseValidator:
148
148
  # Force FP16 val during training
149
149
  self.args.half = self.device.type != "cpu" and trainer.amp
150
150
  model = trainer.ema.ema or trainer.model
151
+ if trainer.args.compile and hasattr(model, "_orig_mod"):
152
+ model = model._orig_mod # validate non-compiled original model to avoid issues
151
153
  model = model.half() if self.args.half else model.float()
152
154
  self.loss = torch.zeros_like(trainer.loss_items, device=trainer.device)
153
155
  self.args.plots &= trainer.stopper.possible_stop or (trainer.epoch == trainer.epochs - 1)
@@ -186,6 +188,8 @@ class BaseValidator:
186
188
  self.dataloader = self.dataloader or self.get_dataloader(self.data.get(self.args.split), self.args.batch)
187
189
 
188
190
  model.eval()
191
+ if self.args.compile:
192
+ model = attempt_compile(model, device=self.device)
189
193
  model.warmup(imgsz=(1 if pt else self.args.batch, self.data["channels"], imgsz, imgsz)) # warmup
190
194
 
191
195
  self.run_callbacks("on_val_start")
@@ -196,7 +200,7 @@ class BaseValidator:
196
200
  Profile(device=self.device),
197
201
  )
198
202
  bar = TQDM(self.dataloader, desc=self.get_desc(), total=len(self.dataloader))
199
- self.init_metrics(de_parallel(model))
203
+ self.init_metrics(unwrap_model(model))
200
204
  self.jdict = [] # empty before each val
201
205
  for batch_i, batch in enumerate(bar):
202
206
  self.run_callbacks("on_val_batch_start")
@@ -55,20 +55,10 @@ class ClassificationTrainer(BaseTrainer):
55
55
  """
56
56
  Initialize a ClassificationTrainer object.
57
57
 
58
- This constructor sets up a trainer for image classification tasks, configuring the task type and default
59
- image size if not specified.
60
-
61
58
  Args:
62
59
  cfg (dict[str, Any], optional): Default configuration dictionary containing training parameters.
63
60
  overrides (dict[str, Any], optional): Dictionary of parameter overrides for the default configuration.
64
61
  _callbacks (list[Any], optional): List of callback functions to be executed during training.
65
-
66
- Examples:
67
- Create a trainer with custom configuration
68
- >>> from ultralytics.models.yolo.classify import ClassificationTrainer
69
- >>> args = dict(model="yolo11n-cls.pt", data="imagenet10", epochs=3)
70
- >>> trainer = ClassificationTrainer(overrides=args)
71
- >>> trainer.train()
72
62
  """
73
63
  if overrides is None:
74
64
  overrides = {}
@@ -155,7 +145,7 @@ class ClassificationTrainer(BaseTrainer):
155
145
  with torch_distributed_zero_first(rank): # init dataset *.cache only once if DDP
156
146
  dataset = self.build_dataset(dataset_path, mode)
157
147
 
158
- loader = build_dataloader(dataset, batch_size, self.args.workers, rank=rank)
148
+ loader = build_dataloader(dataset, batch_size, self.args.workers, rank=rank, drop_last=self.args.compile)
159
149
  # Attach inference transforms
160
150
  if mode != "train":
161
151
  if is_parallel(self.model):
@@ -8,16 +8,17 @@ from copy import copy
8
8
  from typing import Any
9
9
 
10
10
  import numpy as np
11
+ import torch
11
12
  import torch.nn as nn
12
13
 
13
14
  from ultralytics.data import build_dataloader, build_yolo_dataset
14
15
  from ultralytics.engine.trainer import BaseTrainer
15
16
  from ultralytics.models import yolo
16
17
  from ultralytics.nn.tasks import DetectionModel
17
- from ultralytics.utils import LOGGER, RANK
18
+ from ultralytics.utils import DEFAULT_CFG, LOGGER, RANK
18
19
  from ultralytics.utils.patches import override_configs
19
20
  from ultralytics.utils.plotting import plot_images, plot_labels, plot_results
20
- from ultralytics.utils.torch_utils import de_parallel, torch_distributed_zero_first
21
+ from ultralytics.utils.torch_utils import torch_distributed_zero_first, unwrap_model
21
22
 
22
23
 
23
24
  class DetectionTrainer(BaseTrainer):
@@ -53,6 +54,17 @@ class DetectionTrainer(BaseTrainer):
53
54
  >>> trainer.train()
54
55
  """
55
56
 
57
+ def __init__(self, cfg=DEFAULT_CFG, overrides: dict[str, Any] | None = None, _callbacks=None):
58
+ """
59
+ Initialize a DetectionTrainer object for training YOLO object detection model training.
60
+
61
+ Args:
62
+ cfg (dict, optional): Default configuration dictionary containing training parameters.
63
+ overrides (dict, optional): Dictionary of parameter overrides for the default configuration.
64
+ _callbacks (list, optional): List of callback functions to be executed during training.
65
+ """
66
+ super().__init__(cfg, overrides, _callbacks)
67
+
56
68
  def build_dataset(self, img_path: str, mode: str = "train", batch: int | None = None):
57
69
  """
58
70
  Build YOLO Dataset for training or validation.
@@ -65,7 +77,7 @@ class DetectionTrainer(BaseTrainer):
65
77
  Returns:
66
78
  (Dataset): YOLO dataset object configured for the specified mode.
67
79
  """
68
- gs = max(int(de_parallel(self.model).stride.max() if self.model else 0), 32)
80
+ gs = max(int(unwrap_model(self.model).stride.max() if self.model else 0), 32)
69
81
  return build_yolo_dataset(self.args, img_path, batch, self.data, mode=mode, rect=mode == "val", stride=gs)
70
82
 
71
83
  def get_dataloader(self, dataset_path: str, batch_size: int = 16, rank: int = 0, mode: str = "train"):
@@ -88,8 +100,14 @@ class DetectionTrainer(BaseTrainer):
88
100
  if getattr(dataset, "rect", False) and shuffle:
89
101
  LOGGER.warning("'rect=True' is incompatible with DataLoader shuffle, setting shuffle=False")
90
102
  shuffle = False
91
- workers = self.args.workers if mode == "train" else self.args.workers * 2
92
- return build_dataloader(dataset, batch_size, workers, shuffle, rank) # return dataloader
103
+ return build_dataloader(
104
+ dataset,
105
+ batch=batch_size,
106
+ workers=self.args.workers if mode == "train" else self.args.workers * 2,
107
+ shuffle=shuffle,
108
+ rank=rank,
109
+ drop_last=self.args.compile and mode == "train",
110
+ )
93
111
 
94
112
  def preprocess_batch(self, batch: dict) -> dict:
95
113
  """
@@ -101,7 +119,10 @@ class DetectionTrainer(BaseTrainer):
101
119
  Returns:
102
120
  (dict): Preprocessed batch with normalized images.
103
121
  """
104
- batch["img"] = batch["img"].to(self.device, non_blocking=True).float() / 255
122
+ for k, v in batch.items():
123
+ if isinstance(v, torch.Tensor):
124
+ batch[k] = v.to(self.device, non_blocking=True)
125
+ batch["img"] = batch["img"].float() / 255
105
126
  if self.args.multi_scale:
106
127
  imgs = batch["img"]
107
128
  sz = (
@@ -71,11 +71,10 @@ class DetectionValidator(BaseValidator):
71
71
  Returns:
72
72
  (dict[str, Any]): Preprocessed batch.
73
73
  """
74
- batch["img"] = batch["img"].to(self.device, non_blocking=True)
74
+ for k, v in batch.items():
75
+ if isinstance(v, torch.Tensor):
76
+ batch[k] = v.to(self.device, non_blocking=True)
75
77
  batch["img"] = (batch["img"].half() if self.args.half else batch["img"].float()) / 255
76
- for k in {"batch_idx", "cls", "bboxes"}:
77
- batch[k] = batch[k].to(self.device, non_blocking=True)
78
-
79
78
  return batch
80
79
 
81
80
  def init_metrics(self, model: torch.nn.Module) -> None:
@@ -300,7 +299,9 @@ class DetectionValidator(BaseValidator):
300
299
  (torch.utils.data.DataLoader): Dataloader for validation.
301
300
  """
302
301
  dataset = self.build_dataset(dataset_path, batch=batch_size, mode="val")
303
- return build_dataloader(dataset, batch_size, self.args.workers, shuffle=False, rank=-1) # return dataloader
302
+ return build_dataloader(
303
+ dataset, batch_size, self.args.workers, shuffle=False, rank=-1, drop_last=self.args.compile
304
+ )
304
305
 
305
306
  def plot_val_samples(self, batch: dict[str, Any], ni: int) -> None:
306
307
  """
@@ -37,21 +37,12 @@ class OBBTrainer(yolo.detect.DetectionTrainer):
37
37
  """
38
38
  Initialize an OBBTrainer object for training Oriented Bounding Box (OBB) models.
39
39
 
40
- This trainer extends the DetectionTrainer class to specialize in training models that detect oriented
41
- bounding boxes. It automatically sets the task to 'obb' in the configuration.
42
-
43
40
  Args:
44
41
  cfg (dict, optional): Configuration dictionary for the trainer. Contains training parameters and
45
42
  model configuration.
46
43
  overrides (dict, optional): Dictionary of parameter overrides for the configuration. Any values here
47
44
  will take precedence over those in cfg.
48
45
  _callbacks (list[Any], optional): List of callback functions to be invoked during training.
49
-
50
- Examples:
51
- >>> from ultralytics.models.yolo.obb import OBBTrainer
52
- >>> args = dict(model="yolo11n-obb.pt", data="dota8.yaml", epochs=3)
53
- >>> trainer = OBBTrainer(overrides=args)
54
- >>> trainer.train()
55
46
  """
56
47
  if overrides is None:
57
48
  overrides = {}
@@ -44,9 +44,6 @@ class PoseTrainer(yolo.detect.DetectionTrainer):
44
44
  """
45
45
  Initialize a PoseTrainer object for training YOLO pose estimation models.
46
46
 
47
- This initializes a trainer specialized for pose estimation tasks, setting the task to 'pose' and
48
- handling specific configurations needed for keypoint detection models.
49
-
50
47
  Args:
51
48
  cfg (dict, optional): Default configuration dictionary containing training parameters.
52
49
  overrides (dict, optional): Dictionary of parameter overrides for the default configuration.
@@ -55,12 +52,6 @@ class PoseTrainer(yolo.detect.DetectionTrainer):
55
52
  Notes:
56
53
  This trainer will automatically set the task to 'pose' regardless of what is provided in overrides.
57
54
  A warning is issued when using Apple MPS device due to known bugs with pose models.
58
-
59
- Examples:
60
- >>> from ultralytics.models.yolo.pose import PoseTrainer
61
- >>> args = dict(model="yolo11n-pose.pt", data="coco8-pose.yaml", epochs=3)
62
- >>> trainer = PoseTrainer(overrides=args)
63
- >>> trainer.train()
64
55
  """
65
56
  if overrides is None:
66
57
  overrides = {}
@@ -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, non_blocking=True).float()
89
+ batch["keypoints"] = batch["keypoints"].float()
90
90
  return batch
91
91
 
92
92
  def get_desc(self) -> str:
@@ -32,19 +32,10 @@ class SegmentationTrainer(yolo.detect.DetectionTrainer):
32
32
  """
33
33
  Initialize a SegmentationTrainer object.
34
34
 
35
- This initializes a trainer for segmentation tasks, extending the detection trainer with segmentation-specific
36
- functionality. It sets the task to 'segment' and prepares the trainer for training segmentation models.
37
-
38
35
  Args:
39
36
  cfg (dict): Configuration dictionary with default training settings.
40
37
  overrides (dict, optional): Dictionary of parameter overrides for the default configuration.
41
38
  _callbacks (list, optional): List of callback functions to be executed during training.
42
-
43
- Examples:
44
- >>> from ultralytics.models.yolo.segment import SegmentationTrainer
45
- >>> args = dict(model="yolo11n-seg.pt", data="coco8-seg.yaml", epochs=3)
46
- >>> trainer = SegmentationTrainer(overrides=args)
47
- >>> trainer.train()
48
39
  """
49
40
  if overrides is None:
50
41
  overrides = {}
@@ -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, non_blocking=True).float()
66
+ batch["masks"] = batch["masks"].float()
67
67
  return batch
68
68
 
69
69
  def init_metrics(self, model: torch.nn.Module) -> None:
@@ -187,10 +187,10 @@ class SegmentationValidator(DetectionValidator):
187
187
  """
188
188
  for p in preds:
189
189
  masks = p["masks"]
190
- if masks.shape[0] > 50:
191
- LOGGER.warning("Limiting validation plots to first 50 items per image for speed...")
192
- p["masks"] = torch.as_tensor(masks[:50], dtype=torch.uint8).cpu()
193
- super().plot_predictions(batch, preds, ni, max_det=50) # plot bboxes
190
+ if masks.shape[0] > self.args.max_det:
191
+ LOGGER.warning(f"Limiting validation plots to 'max_det={self.args.max_det}' items.")
192
+ p["masks"] = torch.as_tensor(masks[: self.args.max_det], dtype=torch.uint8).cpu()
193
+ super().plot_predictions(batch, preds, ni, max_det=self.args.max_det) # plot bboxes
194
194
 
195
195
  def save_one_txt(self, predn: torch.Tensor, save_conf: bool, shape: tuple[int, int], file: Path) -> None:
196
196
  """