dgenerate-ultralytics-headless 8.3.195__tar.gz → 8.3.196__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 (286) hide show
  1. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/PKG-INFO +1 -1
  2. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +1 -1
  3. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/__init__.py +1 -1
  4. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/__init__.py +1 -0
  5. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/default.yaml +1 -0
  6. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/augment.py +1 -1
  7. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/build.py +5 -1
  8. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/engine/exporter.py +19 -31
  9. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/engine/predictor.py +3 -1
  10. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/engine/trainer.py +15 -4
  11. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/engine/validator.py +6 -2
  12. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/classify/train.py +1 -11
  13. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/detect/train.py +32 -6
  14. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/detect/val.py +6 -5
  15. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/obb/train.py +0 -9
  16. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/pose/train.py +1 -9
  17. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/pose/val.py +1 -1
  18. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/segment/train.py +1 -9
  19. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/segment/val.py +1 -1
  20. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/world/train.py +4 -4
  21. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/world/train_world.py +2 -2
  22. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/yoloe/train.py +3 -12
  23. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/yoloe/val.py +0 -7
  24. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/modules/head.py +2 -1
  25. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/tasks.py +4 -2
  26. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/__init__.py +30 -19
  27. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/tensorboard.py +2 -2
  28. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/checks.py +2 -0
  29. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/loss.py +14 -8
  30. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/plotting.py +1 -0
  31. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/torch_utils.py +111 -9
  32. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/LICENSE +0 -0
  33. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/README.md +0 -0
  34. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +0 -0
  35. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
  36. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
  37. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
  38. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
  39. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/pyproject.toml +0 -0
  40. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/setup.cfg +0 -0
  41. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/tests/__init__.py +0 -0
  42. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/tests/conftest.py +0 -0
  43. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/tests/test_cli.py +0 -0
  44. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/tests/test_cuda.py +0 -0
  45. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/tests/test_engine.py +0 -0
  46. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/tests/test_exports.py +0 -0
  47. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/tests/test_integrations.py +0 -0
  48. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/tests/test_python.py +0 -0
  49. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/tests/test_solutions.py +0 -0
  50. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/assets/bus.jpg +0 -0
  51. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/assets/zidane.jpg +0 -0
  52. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  53. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  54. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  55. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  56. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  57. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  58. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  59. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  60. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  61. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  62. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  63. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  64. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  65. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  66. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/coco.yaml +0 -0
  67. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  68. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  69. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  70. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  71. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  72. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  73. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  74. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  75. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  76. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  77. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  78. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  79. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  80. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  81. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  82. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  83. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/signature.yaml +0 -0
  84. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  85. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/datasets/xView.yaml +0 -0
  86. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  87. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  88. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  89. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  90. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  91. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  92. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  93. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  94. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  95. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  96. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  97. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  98. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  99. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  100. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  101. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  102. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  103. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  104. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  105. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  106. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  107. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  108. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  109. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  110. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  111. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  112. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  113. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  114. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  115. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  116. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  117. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  118. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  119. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  120. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  121. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  122. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  123. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  124. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  125. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  126. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  127. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  128. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  129. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  130. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  131. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  132. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  133. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  134. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  135. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  136. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  137. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  138. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  139. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  140. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  141. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  142. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  143. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/__init__.py +0 -0
  144. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/annotator.py +0 -0
  145. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/base.py +0 -0
  146. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/converter.py +0 -0
  147. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/dataset.py +0 -0
  148. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/loaders.py +0 -0
  149. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/scripts/download_weights.sh +0 -0
  150. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/scripts/get_coco.sh +0 -0
  151. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/scripts/get_coco128.sh +0 -0
  152. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  153. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/split.py +0 -0
  154. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/split_dota.py +0 -0
  155. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/data/utils.py +0 -0
  156. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/engine/__init__.py +0 -0
  157. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/engine/model.py +0 -0
  158. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/engine/results.py +0 -0
  159. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/engine/tuner.py +0 -0
  160. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/hub/__init__.py +0 -0
  161. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/hub/auth.py +0 -0
  162. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/hub/google/__init__.py +0 -0
  163. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/hub/session.py +0 -0
  164. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/hub/utils.py +0 -0
  165. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/__init__.py +0 -0
  166. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/fastsam/__init__.py +0 -0
  167. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/fastsam/model.py +0 -0
  168. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/fastsam/predict.py +0 -0
  169. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/fastsam/utils.py +0 -0
  170. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/fastsam/val.py +0 -0
  171. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/nas/__init__.py +0 -0
  172. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/nas/model.py +0 -0
  173. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/nas/predict.py +0 -0
  174. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/nas/val.py +0 -0
  175. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/rtdetr/__init__.py +0 -0
  176. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/rtdetr/model.py +0 -0
  177. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/rtdetr/predict.py +0 -0
  178. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/rtdetr/train.py +0 -0
  179. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/rtdetr/val.py +0 -0
  180. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/__init__.py +0 -0
  181. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/amg.py +0 -0
  182. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/build.py +0 -0
  183. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/model.py +0 -0
  184. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/modules/__init__.py +0 -0
  185. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/modules/blocks.py +0 -0
  186. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/modules/decoders.py +0 -0
  187. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/modules/encoders.py +0 -0
  188. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  189. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/modules/sam.py +0 -0
  190. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  191. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/modules/transformer.py +0 -0
  192. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/modules/utils.py +0 -0
  193. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/sam/predict.py +0 -0
  194. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/utils/__init__.py +0 -0
  195. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/utils/loss.py +0 -0
  196. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/utils/ops.py +0 -0
  197. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/__init__.py +0 -0
  198. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/classify/__init__.py +0 -0
  199. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/classify/predict.py +0 -0
  200. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/classify/val.py +0 -0
  201. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/detect/__init__.py +0 -0
  202. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/detect/predict.py +0 -0
  203. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/model.py +0 -0
  204. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/obb/__init__.py +0 -0
  205. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/obb/predict.py +0 -0
  206. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/obb/val.py +0 -0
  207. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/pose/__init__.py +0 -0
  208. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/pose/predict.py +0 -0
  209. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/segment/__init__.py +0 -0
  210. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/segment/predict.py +0 -0
  211. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/world/__init__.py +0 -0
  212. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  213. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  214. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  215. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/__init__.py +0 -0
  216. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/autobackend.py +0 -0
  217. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/modules/__init__.py +0 -0
  218. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/modules/activation.py +0 -0
  219. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/modules/block.py +0 -0
  220. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/modules/conv.py +0 -0
  221. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/modules/transformer.py +0 -0
  222. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/modules/utils.py +0 -0
  223. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/nn/text_model.py +0 -0
  224. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/py.typed +0 -0
  225. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/__init__.py +0 -0
  226. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/ai_gym.py +0 -0
  227. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/analytics.py +0 -0
  228. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/config.py +0 -0
  229. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/distance_calculation.py +0 -0
  230. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/heatmap.py +0 -0
  231. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/instance_segmentation.py +0 -0
  232. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/object_blurrer.py +0 -0
  233. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/object_counter.py +0 -0
  234. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/object_cropper.py +0 -0
  235. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/parking_management.py +0 -0
  236. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/queue_management.py +0 -0
  237. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/region_counter.py +0 -0
  238. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/security_alarm.py +0 -0
  239. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/similarity_search.py +0 -0
  240. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/solutions.py +0 -0
  241. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/speed_estimation.py +0 -0
  242. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/streamlit_inference.py +0 -0
  243. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/templates/similarity-search.html +0 -0
  244. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/trackzone.py +0 -0
  245. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/solutions/vision_eye.py +0 -0
  246. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/trackers/__init__.py +0 -0
  247. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/trackers/basetrack.py +0 -0
  248. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/trackers/bot_sort.py +0 -0
  249. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/trackers/byte_tracker.py +0 -0
  250. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/trackers/track.py +0 -0
  251. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/trackers/utils/__init__.py +0 -0
  252. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/trackers/utils/gmc.py +0 -0
  253. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  254. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/trackers/utils/matching.py +0 -0
  255. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/autobatch.py +0 -0
  256. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/autodevice.py +0 -0
  257. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/benchmarks.py +0 -0
  258. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/__init__.py +0 -0
  259. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/base.py +0 -0
  260. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/clearml.py +0 -0
  261. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/comet.py +0 -0
  262. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/dvc.py +0 -0
  263. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/hub.py +0 -0
  264. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/mlflow.py +0 -0
  265. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/neptune.py +0 -0
  266. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/platform.py +0 -0
  267. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/raytune.py +0 -0
  268. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/callbacks/wb.py +0 -0
  269. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/cpu.py +0 -0
  270. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/dist.py +0 -0
  271. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/downloads.py +0 -0
  272. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/errors.py +0 -0
  273. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/events.py +0 -0
  274. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/export.py +0 -0
  275. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/files.py +0 -0
  276. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/git.py +0 -0
  277. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/instance.py +0 -0
  278. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/logger.py +0 -0
  279. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/metrics.py +0 -0
  280. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/nms.py +0 -0
  281. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/ops.py +0 -0
  282. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/patches.py +0 -0
  283. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/tal.py +0 -0
  284. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/tqdm.py +0 -0
  285. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/ultralytics/utils/triton.py +0 -0
  286. {dgenerate_ultralytics_headless-8.3.195 → dgenerate_ultralytics_headless-8.3.196}/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.196
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.196
4
4
  Summary: Automatically built Ultralytics package with python-opencv-headless dependency instead of python-opencv
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.195"
3
+ __version__ = "8.3.196"
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
 
@@ -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)
@@ -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
 
@@ -256,6 +258,14 @@ class BaseTrainer:
256
258
  self.model = self.model.to(self.device)
257
259
  self.set_model_attributes()
258
260
 
261
+ # Initialize loss criterion before compilation for torch.compile compatibility
262
+ if hasattr(self.model, "init_criterion"):
263
+ self.model.criterion = self.model.init_criterion()
264
+
265
+ # Compile model
266
+ if self.args.compile:
267
+ self.model = attempt_compile(self.model, device=self.device)
268
+
259
269
  # Freeze layers
260
270
  freeze_list = (
261
271
  self.args.freeze
@@ -404,6 +414,7 @@ class BaseTrainer:
404
414
  # Forward
405
415
  with autocast(self.amp):
406
416
  batch = self.preprocess_batch(batch)
417
+ metadata = {k: batch.pop(k, None) for k in ["im_file", "ori_shape", "resized_shape"]}
407
418
  loss, self.loss_items = self.model(batch)
408
419
  self.loss = loss.sum()
409
420
  if RANK != -1:
@@ -445,6 +456,7 @@ class BaseTrainer:
445
456
  )
446
457
  self.run_callbacks("on_batch_end")
447
458
  if self.args.plots and ni in self.plot_idx:
459
+ batch = {**batch, **metadata}
448
460
  self.plot_training_samples(batch, ni)
449
461
 
450
462
  self.run_callbacks("on_train_batch_end")
@@ -565,7 +577,7 @@ class BaseTrainer:
565
577
  "epoch": self.epoch,
566
578
  "best_fitness": self.best_fitness,
567
579
  "model": None, # resume and final checkpoints derive from EMA
568
- "ema": deepcopy(self.ema.ema).half(),
580
+ "ema": deepcopy(unwrap_model(self.ema.ema)).half(),
569
581
  "updates": self.ema.updates,
570
582
  "optimizer": convert_optimizer_state_dict_to_fp16(deepcopy(self.optimizer.state_dict())),
571
583
  "train_args": vars(self.args), # save as dict
@@ -592,8 +604,6 @@ class BaseTrainer:
592
604
  self.best.write_bytes(serialized_ckpt) # save best.pt
593
605
  if (self.save_period > 0) and (self.epoch % self.save_period == 0):
594
606
  (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
607
 
598
608
  def get_dataset(self):
599
609
  """
@@ -667,7 +677,7 @@ class BaseTrainer:
667
677
 
668
678
  def validate(self):
669
679
  """
670
- Run validation on test set using self.validator.
680
+ Run validation on val set using self.validator.
671
681
 
672
682
  Returns:
673
683
  metrics (dict): Dictionary of validation metrics.
@@ -755,6 +765,7 @@ class BaseTrainer:
755
765
  strip_optimizer(f, updates={k: ckpt[k]} if k in ckpt else None)
756
766
  LOGGER.info(f"\nValidating {f}...")
757
767
  self.validator.args.plots = self.args.plots
768
+ self.validator.args.compile = False # disable final val compile as too slow
758
769
  self.metrics = self.validator(model=f)
759
770
  self.metrics.pop("fitness", None)
760
771
  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,18 @@ 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
+ self.dynamic_tensors = ["batch_idx", "cls", "bboxes"]
68
+
56
69
  def build_dataset(self, img_path: str, mode: str = "train", batch: int | None = None):
57
70
  """
58
71
  Build YOLO Dataset for training or validation.
@@ -65,7 +78,7 @@ class DetectionTrainer(BaseTrainer):
65
78
  Returns:
66
79
  (Dataset): YOLO dataset object configured for the specified mode.
67
80
  """
68
- gs = max(int(de_parallel(self.model).stride.max() if self.model else 0), 32)
81
+ gs = max(int(unwrap_model(self.model).stride.max() if self.model else 0), 32)
69
82
  return build_yolo_dataset(self.args, img_path, batch, self.data, mode=mode, rect=mode == "val", stride=gs)
70
83
 
71
84
  def get_dataloader(self, dataset_path: str, batch_size: int = 16, rank: int = 0, mode: str = "train"):
@@ -88,8 +101,14 @@ class DetectionTrainer(BaseTrainer):
88
101
  if getattr(dataset, "rect", False) and shuffle:
89
102
  LOGGER.warning("'rect=True' is incompatible with DataLoader shuffle, setting shuffle=False")
90
103
  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
104
+ return build_dataloader(
105
+ dataset,
106
+ batch=batch_size,
107
+ workers=self.args.workers if mode == "train" else self.args.workers * 2,
108
+ shuffle=shuffle,
109
+ rank=rank,
110
+ drop_last=self.args.compile and mode == "train",
111
+ )
93
112
 
94
113
  def preprocess_batch(self, batch: dict) -> dict:
95
114
  """
@@ -101,7 +120,10 @@ class DetectionTrainer(BaseTrainer):
101
120
  Returns:
102
121
  (dict): Preprocessed batch with normalized images.
103
122
  """
104
- batch["img"] = batch["img"].to(self.device, non_blocking=True).float() / 255
123
+ for k, v in batch.items():
124
+ if isinstance(v, torch.Tensor):
125
+ batch[k] = v.to(self.device, non_blocking=True)
126
+ batch["img"] = batch["img"].float() / 255
105
127
  if self.args.multi_scale:
106
128
  imgs = batch["img"]
107
129
  sz = (
@@ -116,6 +138,10 @@ class DetectionTrainer(BaseTrainer):
116
138
  ] # new shape (stretched to gs-multiple)
117
139
  imgs = nn.functional.interpolate(imgs, size=ns, mode="bilinear", align_corners=False)
118
140
  batch["img"] = imgs
141
+
142
+ if self.args.compile:
143
+ for k in self.dynamic_tensors:
144
+ torch._dynamo.maybe_mark_dynamic(batch[k], 0)
119
145
  return batch
120
146
 
121
147
  def set_model_attributes(self):
@@ -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,17 +52,12 @@ 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 = {}
67
58
  overrides["task"] = "pose"
68
59
  super().__init__(cfg, overrides, _callbacks)
60
+ self.dynamic_tensors = ["batch_idx", "cls", "bboxes", "keypoints"]
69
61
 
70
62
  if isinstance(self.args.device, str) and self.args.device.lower() == "mps":
71
63
  LOGGER.warning(
@@ -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,24 +32,16 @@ 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 = {}
51
42
  overrides["task"] = "segment"
52
43
  super().__init__(cfg, overrides, _callbacks)
44
+ self.dynamic_tensors = ["batch_idx", "cls", "bboxes", "masks"]
53
45
 
54
46
  def get_model(self, cfg: dict | str | None = None, weights: str | Path | None = None, verbose: bool = True):
55
47
  """
@@ -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:
@@ -12,7 +12,7 @@ from ultralytics.data import build_yolo_dataset
12
12
  from ultralytics.models.yolo.detect import DetectionTrainer
13
13
  from ultralytics.nn.tasks import WorldModel
14
14
  from ultralytics.utils import DEFAULT_CFG, LOGGER, RANK
15
- from ultralytics.utils.torch_utils import de_parallel
15
+ from ultralytics.utils.torch_utils import unwrap_model
16
16
 
17
17
 
18
18
  def on_pretrain_routine_end(trainer) -> None:
@@ -20,7 +20,7 @@ def on_pretrain_routine_end(trainer) -> None:
20
20
  if RANK in {-1, 0}:
21
21
  # Set class names for evaluation
22
22
  names = [name.split("/", 1)[0] for name in list(trainer.test_loader.dataset.data["names"].values())]
23
- de_parallel(trainer.ema.ema).set_classes(names, cache_clip_model=False)
23
+ unwrap_model(trainer.ema.ema).set_classes(names, cache_clip_model=False)
24
24
 
25
25
 
26
26
  class WorldTrainer(DetectionTrainer):
@@ -105,7 +105,7 @@ class WorldTrainer(DetectionTrainer):
105
105
  Returns:
106
106
  (Any): YOLO dataset configured for training or validation.
107
107
  """
108
- gs = max(int(de_parallel(self.model).stride.max() if self.model else 0), 32)
108
+ gs = max(int(unwrap_model(self.model).stride.max() if self.model else 0), 32)
109
109
  dataset = build_yolo_dataset(
110
110
  self.args, img_path, batch, self.data, mode=mode, rect=mode == "val", stride=gs, multi_modal=mode == "train"
111
111
  )
@@ -160,7 +160,7 @@ class WorldTrainer(DetectionTrainer):
160
160
  return txt_map
161
161
  LOGGER.info(f"Caching text embeddings to '{cache_path}'")
162
162
  assert self.model is not None
163
- txt_feats = de_parallel(self.model).get_text_pe(texts, batch, cache_clip_model=False)
163
+ txt_feats = unwrap_model(self.model).get_text_pe(texts, batch, cache_clip_model=False)
164
164
  txt_map = dict(zip(texts, txt_feats.squeeze(0)))
165
165
  torch.save(txt_map, cache_path)
166
166
  return txt_map
@@ -6,7 +6,7 @@ from ultralytics.data import YOLOConcatDataset, build_grounding, build_yolo_data
6
6
  from ultralytics.data.utils import check_det_dataset
7
7
  from ultralytics.models.yolo.world import WorldTrainer
8
8
  from ultralytics.utils import DATASETS_DIR, DEFAULT_CFG, LOGGER
9
- from ultralytics.utils.torch_utils import de_parallel
9
+ from ultralytics.utils.torch_utils import unwrap_model
10
10
 
11
11
 
12
12
  class WorldTrainerFromScratch(WorldTrainer):
@@ -101,7 +101,7 @@ class WorldTrainerFromScratch(WorldTrainer):
101
101
  Returns:
102
102
  (YOLOConcatDataset | Dataset): The constructed dataset for training or validation.
103
103
  """
104
- gs = max(int(de_parallel(self.model).stride.max() if self.model else 0), 32)
104
+ gs = max(int(unwrap_model(self.model).stride.max() if self.model else 0), 32)
105
105
  if mode != "train":
106
106
  return build_yolo_dataset(self.args, img_path, batch, self.data, mode=mode, rect=False, stride=gs)
107
107
  datasets = [