dgenerate-ultralytics-headless 8.3.224__tar.gz → 8.3.226__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 (291) hide show
  1. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/PKG-INFO +3 -3
  2. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/README.md +2 -2
  3. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +3 -3
  4. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +1 -0
  5. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_cli.py +1 -8
  6. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_cuda.py +1 -0
  7. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_python.py +41 -2
  8. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/__init__.py +1 -1
  9. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/__init__.py +11 -4
  10. dgenerate_ultralytics_headless-8.3.226/ultralytics/cfg/datasets/kitti.yaml +27 -0
  11. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/augment.py +28 -12
  12. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/build.py +29 -15
  13. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/loaders.py +1 -1
  14. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/exporter.py +21 -58
  15. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/model.py +1 -0
  16. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/predictor.py +2 -3
  17. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/trainer.py +22 -6
  18. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/tuner.py +1 -2
  19. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/fastsam/model.py +1 -1
  20. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/build.py +3 -3
  21. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/predict.py +1 -5
  22. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/detect/val.py +1 -1
  23. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/analytics.py +2 -0
  24. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/__init__.py +8 -8
  25. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/benchmarks.py +2 -2
  26. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/checks.py +8 -5
  27. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/cpu.py +2 -6
  28. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/export/tensorflow.py +1 -1
  29. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/git.py +1 -2
  30. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/tqdm.py +3 -5
  31. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/triton.py +2 -1
  32. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/LICENSE +0 -0
  33. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
  34. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
  35. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/requires.txt +0 -0
  36. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
  37. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/pyproject.toml +0 -0
  38. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/setup.cfg +0 -0
  39. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/__init__.py +0 -0
  40. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/conftest.py +0 -0
  41. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_engine.py +0 -0
  42. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_exports.py +0 -0
  43. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_integrations.py +0 -0
  44. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/tests/test_solutions.py +0 -0
  45. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/assets/bus.jpg +0 -0
  46. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/assets/zidane.jpg +0 -0
  47. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  48. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  49. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  50. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  51. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  52. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  53. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  54. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  55. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  56. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  57. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  58. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  59. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  60. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  61. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco.yaml +0 -0
  62. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  63. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  64. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  65. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  66. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  67. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  68. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  69. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/construction-ppe.yaml +0 -0
  70. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  71. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  72. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  73. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  74. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  75. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  76. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  77. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  78. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  79. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/signature.yaml +0 -0
  80. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  81. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/datasets/xView.yaml +0 -0
  82. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/default.yaml +0 -0
  83. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  84. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  85. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  86. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  87. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  88. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  89. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  90. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  91. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  92. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  93. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  94. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  95. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  96. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  97. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  98. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  99. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  100. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  101. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  102. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  103. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  104. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  105. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  106. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  107. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  108. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  109. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  110. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  111. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  112. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  113. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  114. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  115. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  116. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  117. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  118. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  119. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  120. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  121. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  122. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  123. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  124. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  125. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  126. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  127. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  128. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  129. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  130. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  131. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  132. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  133. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  134. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  135. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  136. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  137. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  138. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  139. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  140. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/__init__.py +0 -0
  141. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/annotator.py +0 -0
  142. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/base.py +0 -0
  143. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/converter.py +0 -0
  144. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/dataset.py +0 -0
  145. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/scripts/download_weights.sh +0 -0
  146. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/scripts/get_coco.sh +0 -0
  147. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/scripts/get_coco128.sh +0 -0
  148. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  149. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/split.py +0 -0
  150. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/split_dota.py +0 -0
  151. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/data/utils.py +0 -0
  152. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/__init__.py +0 -0
  153. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/results.py +0 -0
  154. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/engine/validator.py +0 -0
  155. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/hub/__init__.py +0 -0
  156. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/hub/auth.py +0 -0
  157. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/hub/google/__init__.py +0 -0
  158. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/hub/session.py +0 -0
  159. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/hub/utils.py +0 -0
  160. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/__init__.py +0 -0
  161. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/fastsam/__init__.py +0 -0
  162. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/fastsam/predict.py +0 -0
  163. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/fastsam/utils.py +0 -0
  164. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/fastsam/val.py +0 -0
  165. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/nas/__init__.py +0 -0
  166. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/nas/model.py +0 -0
  167. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/nas/predict.py +0 -0
  168. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/nas/val.py +0 -0
  169. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/rtdetr/__init__.py +0 -0
  170. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/rtdetr/model.py +0 -0
  171. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/rtdetr/predict.py +0 -0
  172. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/rtdetr/train.py +0 -0
  173. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/rtdetr/val.py +0 -0
  174. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/__init__.py +0 -0
  175. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/amg.py +0 -0
  176. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/model.py +0 -0
  177. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/__init__.py +0 -0
  178. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/blocks.py +0 -0
  179. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/decoders.py +0 -0
  180. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/encoders.py +0 -0
  181. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  182. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/sam.py +0 -0
  183. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  184. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/transformer.py +0 -0
  185. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/sam/modules/utils.py +0 -0
  186. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/utils/__init__.py +0 -0
  187. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/utils/loss.py +0 -0
  188. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/utils/ops.py +0 -0
  189. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/__init__.py +0 -0
  190. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/classify/__init__.py +0 -0
  191. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/classify/predict.py +0 -0
  192. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/classify/train.py +0 -0
  193. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/classify/val.py +0 -0
  194. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/detect/__init__.py +0 -0
  195. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/detect/predict.py +0 -0
  196. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/detect/train.py +0 -0
  197. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/model.py +0 -0
  198. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/obb/__init__.py +0 -0
  199. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/obb/predict.py +0 -0
  200. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/obb/train.py +0 -0
  201. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/obb/val.py +0 -0
  202. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/pose/__init__.py +0 -0
  203. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/pose/predict.py +0 -0
  204. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/pose/train.py +0 -0
  205. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/pose/val.py +0 -0
  206. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/segment/__init__.py +0 -0
  207. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/segment/predict.py +0 -0
  208. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/segment/train.py +0 -0
  209. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/segment/val.py +0 -0
  210. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/world/__init__.py +0 -0
  211. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/world/train.py +0 -0
  212. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/world/train_world.py +0 -0
  213. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  214. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  215. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/yoloe/train.py +0 -0
  216. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  217. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/models/yolo/yoloe/val.py +0 -0
  218. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/__init__.py +0 -0
  219. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/autobackend.py +0 -0
  220. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/__init__.py +0 -0
  221. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/activation.py +0 -0
  222. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/block.py +0 -0
  223. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/conv.py +0 -0
  224. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/head.py +0 -0
  225. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/transformer.py +0 -0
  226. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/modules/utils.py +0 -0
  227. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/tasks.py +0 -0
  228. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/nn/text_model.py +0 -0
  229. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/py.typed +0 -0
  230. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/__init__.py +0 -0
  231. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/ai_gym.py +0 -0
  232. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/config.py +0 -0
  233. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/distance_calculation.py +0 -0
  234. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/heatmap.py +0 -0
  235. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/instance_segmentation.py +0 -0
  236. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/object_blurrer.py +0 -0
  237. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/object_counter.py +0 -0
  238. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/object_cropper.py +0 -0
  239. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/parking_management.py +0 -0
  240. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/queue_management.py +0 -0
  241. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/region_counter.py +0 -0
  242. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/security_alarm.py +0 -0
  243. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/similarity_search.py +0 -0
  244. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/solutions.py +0 -0
  245. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/speed_estimation.py +0 -0
  246. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/streamlit_inference.py +0 -0
  247. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/templates/similarity-search.html +0 -0
  248. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/trackzone.py +0 -0
  249. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/solutions/vision_eye.py +0 -0
  250. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/__init__.py +0 -0
  251. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/basetrack.py +0 -0
  252. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/bot_sort.py +0 -0
  253. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/byte_tracker.py +0 -0
  254. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/track.py +0 -0
  255. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/utils/__init__.py +0 -0
  256. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/utils/gmc.py +0 -0
  257. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  258. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/trackers/utils/matching.py +0 -0
  259. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/autobatch.py +0 -0
  260. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/autodevice.py +0 -0
  261. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/__init__.py +0 -0
  262. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/base.py +0 -0
  263. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/clearml.py +0 -0
  264. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/comet.py +0 -0
  265. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/dvc.py +0 -0
  266. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/hub.py +0 -0
  267. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/mlflow.py +0 -0
  268. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/neptune.py +0 -0
  269. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/platform.py +0 -0
  270. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/raytune.py +0 -0
  271. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  272. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/callbacks/wb.py +0 -0
  273. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/dist.py +0 -0
  274. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/downloads.py +0 -0
  275. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/errors.py +0 -0
  276. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/events.py +0 -0
  277. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/export/__init__.py +0 -0
  278. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/export/engine.py +0 -0
  279. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/export/imx.py +0 -0
  280. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/files.py +0 -0
  281. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/instance.py +0 -0
  282. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/logger.py +0 -0
  283. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/loss.py +0 -0
  284. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/metrics.py +0 -0
  285. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/nms.py +0 -0
  286. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/ops.py +0 -0
  287. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/patches.py +0 -0
  288. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/plotting.py +0 -0
  289. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/tal.py +0 -0
  290. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/ultralytics/utils/torch_utils.py +0 -0
  291. {dgenerate_ultralytics_headless-8.3.224 → dgenerate_ultralytics_headless-8.3.226}/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.224
3
+ Version: 8.3.226
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>
@@ -160,7 +160,7 @@ Request an Enterprise License for commercial use at [Ultralytics Licensing](http
160
160
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
161
161
  <a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="2%" alt="Ultralytics Twitter"></a>
162
162
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
163
- <a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
163
+ <a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
164
164
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
165
165
  <a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="2%" alt="Ultralytics TikTok"></a>
166
166
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
@@ -396,7 +396,7 @@ For bug reports and feature requests related to Ultralytics software, please vis
396
396
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
397
397
  <a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="3%" alt="Ultralytics Twitter"></a>
398
398
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
399
- <a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
399
+ <a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
400
400
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
401
401
  <a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="3%" alt="Ultralytics TikTok"></a>
402
402
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
@@ -70,7 +70,7 @@ Request an Enterprise License for commercial use at [Ultralytics Licensing](http
70
70
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
71
71
  <a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="2%" alt="Ultralytics Twitter"></a>
72
72
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
73
- <a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
73
+ <a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
74
74
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
75
75
  <a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="2%" alt="Ultralytics TikTok"></a>
76
76
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
@@ -306,7 +306,7 @@ For bug reports and feature requests related to Ultralytics software, please vis
306
306
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
307
307
  <a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="3%" alt="Ultralytics Twitter"></a>
308
308
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
309
- <a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
309
+ <a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
310
310
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
311
311
  <a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="3%" alt="Ultralytics TikTok"></a>
312
312
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.224
3
+ Version: 8.3.226
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>
@@ -160,7 +160,7 @@ Request an Enterprise License for commercial use at [Ultralytics Licensing](http
160
160
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
161
161
  <a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="2%" alt="Ultralytics Twitter"></a>
162
162
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
163
- <a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
163
+ <a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="2%" alt="Ultralytics YouTube"></a>
164
164
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
165
165
  <a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="2%" alt="Ultralytics TikTok"></a>
166
166
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="2%" alt="space">
@@ -396,7 +396,7 @@ For bug reports and feature requests related to Ultralytics software, please vis
396
396
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
397
397
  <a href="https://twitter.com/ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-twitter.png" width="3%" alt="Ultralytics Twitter"></a>
398
398
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
399
- <a href="https://youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
399
+ <a href="https://www.youtube.com/ultralytics?sub_confirmation=1"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-youtube.png" width="3%" alt="Ultralytics YouTube"></a>
400
400
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
401
401
  <a href="https://www.tiktok.com/@ultralytics"><img src="https://github.com/ultralytics/assets/raw/main/social/logo-social-tiktok.png" width="3%" alt="Ultralytics TikTok"></a>
402
402
  <img src="https://github.com/ultralytics/assets/raw/main/social/logo-transparent.png" width="3%" alt="space">
@@ -57,6 +57,7 @@ ultralytics/cfg/datasets/dog-pose.yaml
57
57
  ultralytics/cfg/datasets/dota8-multispectral.yaml
58
58
  ultralytics/cfg/datasets/dota8.yaml
59
59
  ultralytics/cfg/datasets/hand-keypoints.yaml
60
+ ultralytics/cfg/datasets/kitti.yaml
60
61
  ultralytics/cfg/datasets/lvis.yaml
61
62
  ultralytics/cfg/datasets/medical-pills.yaml
62
63
  ultralytics/cfg/datasets/open-images-v7.yaml
@@ -8,7 +8,7 @@ from PIL import Image
8
8
 
9
9
  from tests import CUDA_DEVICE_COUNT, CUDA_IS_AVAILABLE, MODELS, TASK_MODEL_DATA
10
10
  from ultralytics.utils import ARM64, ASSETS, LINUX, WEIGHTS_DIR, checks
11
- from ultralytics.utils.torch_utils import TORCH_1_11, TORCH_2_9, WINDOWS
11
+ from ultralytics.utils.torch_utils import TORCH_1_11
12
12
 
13
13
 
14
14
  def run(cmd: str) -> None:
@@ -129,10 +129,3 @@ def test_train_gpu(task: str, model: str, data: str) -> None:
129
129
  def test_solutions(solution: str) -> None:
130
130
  """Test yolo solutions command-line modes."""
131
131
  run(f"yolo solutions {solution} verbose=False")
132
-
133
-
134
- @pytest.mark.skipif(not checks.IS_PYTHON_MINIMUM_3_10 or not TORCH_2_9, reason="Requires Python>=3.10 and Torch>=2.9.0")
135
- @pytest.mark.skipif(WINDOWS, reason="Skipping test on Windows")
136
- def test_export_executorch() -> None:
137
- """Test exporting a YOLO model to ExecuTorch format via CLI."""
138
- run("yolo export model=yolo11n.pt format=executorch imgsz=32")
@@ -118,6 +118,7 @@ def test_train():
118
118
  results = YOLO(MODEL).train(
119
119
  data="coco8.yaml", imgsz=64, epochs=1, device=device, batch=15
120
120
  ) # requires imgsz>=64
121
+ results = YOLO(MODEL).train(data="coco8.yaml", imgsz=64, epochs=1, device=device, batch=15, val=False)
121
122
  visible = eval(os.environ["CUDA_VISIBLE_DEVICES"])
122
123
  assert visible == device, f"Passed GPUs '{device}', but used GPUs '{visible}'"
123
124
  assert (
@@ -385,7 +385,46 @@ def test_cfg_init():
385
385
  check_dict_alignment({"a": 1}, {"b": 2})
386
386
  copy_default_cfg()
387
387
  (Path.cwd() / DEFAULT_CFG_PATH.name.replace(".yaml", "_copy.yaml")).unlink(missing_ok=False)
388
- [smart_value(x) for x in {"none", "true", "false"}]
388
+
389
+ # Test smart_value() with comprehensive cases
390
+ # Test None conversion
391
+ assert smart_value("none") is None
392
+ assert smart_value("None") is None
393
+ assert smart_value("NONE") is None
394
+
395
+ # Test boolean conversion
396
+ assert smart_value("true") is True
397
+ assert smart_value("True") is True
398
+ assert smart_value("TRUE") is True
399
+ assert smart_value("false") is False
400
+ assert smart_value("False") is False
401
+ assert smart_value("FALSE") is False
402
+
403
+ # Test numeric conversion (ast.literal_eval)
404
+ assert smart_value("42") == 42
405
+ assert smart_value("-42") == -42
406
+ assert smart_value("3.14") == 3.14
407
+ assert smart_value("-3.14") == -3.14
408
+ assert smart_value("1e-3") == 0.001
409
+
410
+ # Test list/tuple conversion (ast.literal_eval)
411
+ assert smart_value("[1, 2, 3]") == [1, 2, 3]
412
+ assert smart_value("(1, 2, 3)") == (1, 2, 3)
413
+ assert smart_value("[640, 640]") == [640, 640]
414
+
415
+ # Test dict conversion (ast.literal_eval)
416
+ assert smart_value("{'a': 1, 'b': 2}") == {"a": 1, "b": 2}
417
+
418
+ # Test string fallback (when ast.literal_eval fails)
419
+ assert smart_value("some_string") == "some_string"
420
+ assert smart_value("path/to/file") == "path/to/file"
421
+ assert smart_value("hello world") == "hello world"
422
+
423
+ # Test that code injection is prevented (ast.literal_eval safety)
424
+ # These should return strings, not execute code
425
+ assert smart_value("__import__('os').system('ls')") == "__import__('os').system('ls')"
426
+ assert smart_value("eval('1+1')") == "eval('1+1')"
427
+ assert smart_value("exec('x=1')") == "exec('x=1')"
389
428
 
390
429
 
391
430
  def test_utils_init():
@@ -721,7 +760,7 @@ def test_grayscale(task: str, model: str, data: str, tmp_path) -> None:
721
760
  grayscale_data = tmp_path / f"{Path(data).stem}-grayscale.yaml"
722
761
  data = check_det_dataset(data)
723
762
  data["channels"] = 1 # add additional channels key for grayscale
724
- YAML.save(grayscale_data, data)
763
+ YAML.save(data=data, file=grayscale_data)
725
764
  # remove npy files in train/val splits if exists, might be created by previous tests
726
765
  for split in {"train", "val"}:
727
766
  for npy_file in (Path(data["path"]) / data[split]).glob("*.npy"):
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.224"
3
+ __version__ = "8.3.226"
4
4
 
5
5
  import importlib
6
6
  import os
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import ast
5
6
  import shutil
6
7
  import subprocess
7
8
  import sys
@@ -459,7 +460,9 @@ def _handle_deprecation(custom: dict) -> dict:
459
460
  return custom
460
461
 
461
462
 
462
- def check_dict_alignment(base: dict, custom: dict, e: Exception | None = None) -> None:
463
+ def check_dict_alignment(
464
+ base: dict, custom: dict, e: Exception | None = None, allowed_custom_keys: set | None = None
465
+ ) -> None:
463
466
  """Check alignment between custom and base configuration dictionaries, handling deprecated keys and providing error
464
467
  messages for mismatched keys.
465
468
 
@@ -467,6 +470,7 @@ def check_dict_alignment(base: dict, custom: dict, e: Exception | None = None) -
467
470
  base (dict): The base configuration dictionary containing valid keys.
468
471
  custom (dict): The custom configuration dictionary to be checked for alignment.
469
472
  e (Exception | None): Optional error instance passed by the calling function.
473
+ allowed_custom_keys (set | None): Optional set of additional keys that are allowed in the custom dictionary.
470
474
 
471
475
  Raises:
472
476
  SystemExit: If mismatched keys are found between the custom and base dictionaries.
@@ -486,7 +490,10 @@ def check_dict_alignment(base: dict, custom: dict, e: Exception | None = None) -
486
490
  """
487
491
  custom = _handle_deprecation(custom)
488
492
  base_keys, custom_keys = (frozenset(x.keys()) for x in (base, custom))
489
- if mismatched := [k for k in custom_keys if k not in base_keys]:
493
+ # Allow 'augmentations' as a valid custom parameter for custom Albumentations transforms
494
+ if allowed_custom_keys is None:
495
+ allowed_custom_keys = {"augmentations"}
496
+ if mismatched := [k for k in custom_keys if k not in base_keys and k not in allowed_custom_keys]:
490
497
  from difflib import get_close_matches
491
498
 
492
499
  string = ""
@@ -797,7 +804,7 @@ def smart_value(v: str) -> Any:
797
804
 
798
805
  Notes:
799
806
  - The function uses a case-insensitive comparison for boolean and None values.
800
- - For other types, it attempts to use Python's eval() function, which can be unsafe if used on untrusted input.
807
+ - For other types, it attempts to use Python's ast.literal_eval() function for safe evaluation.
801
808
  - If no conversion is possible, the original string is returned.
802
809
  """
803
810
  v_lower = v.lower()
@@ -809,7 +816,7 @@ def smart_value(v: str) -> Any:
809
816
  return False
810
817
  else:
811
818
  try:
812
- return eval(v)
819
+ return ast.literal_eval(v)
813
820
  except Exception:
814
821
  return v
815
822
 
@@ -0,0 +1,27 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ # Kitti dataset by Karlsruhe Institute of Technology and Toyota Technological Institute at Chicago
4
+ # Documentation: https://docs.ultralytics.com/datasets/detect/kitti/
5
+ # Example usage: yolo train data=kitti.yaml
6
+ # parent
7
+ # ├── ultralytics
8
+ # └── datasets
9
+ # └── kitti ← downloads here (390.5 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: kitti # dataset root dir
13
+ train: images/train # train images (relative to 'path') 5985 images
14
+ val: images/val # val images (relative to 'path') 1496 images
15
+
16
+ names:
17
+ 0: car
18
+ 1: van
19
+ 2: truck
20
+ 3: pedestrian
21
+ 4: person_sitting
22
+ 5: cyclist
23
+ 6: tram
24
+ 7: misc
25
+
26
+ # Download script/URL (optional)
27
+ download: https://github.com/ultralytics/assets/releases/download/v0.0.0/kitti.zip
@@ -1845,7 +1845,7 @@ class Albumentations:
1845
1845
  - Spatial transforms are handled differently and require special processing for bounding boxes.
1846
1846
  """
1847
1847
 
1848
- def __init__(self, p: float = 1.0) -> None:
1848
+ def __init__(self, p: float = 1.0, transforms: list | None = None) -> None:
1849
1849
  """Initialize the Albumentations transform object for YOLO bbox formatted parameters.
1850
1850
 
1851
1851
  This class applies various image augmentations using the Albumentations library, including Blur, Median Blur,
@@ -1854,6 +1854,7 @@ class Albumentations:
1854
1854
 
1855
1855
  Args:
1856
1856
  p (float): Probability of applying the augmentations. Must be between 0 and 1.
1857
+ transforms (list, optional): List of custom Albumentations transforms. If None, uses default transforms.
1857
1858
 
1858
1859
  Attributes:
1859
1860
  p (float): Probability of applying the augmentations.
@@ -1870,6 +1871,11 @@ class Albumentations:
1870
1871
  >>> augmented_image = augmented["image"]
1871
1872
  >>> augmented_bboxes = augmented["bboxes"]
1872
1873
 
1874
+ >>> # Custom transforms example
1875
+ >>> import albumentations as A
1876
+ >>> custom_transforms = [A.Blur(p=0.01), A.CLAHE(p=0.01)]
1877
+ >>> transform = Albumentations(p=1.0, transforms=custom_transforms)
1878
+
1873
1879
  Notes:
1874
1880
  - Requires Albumentations version 1.0.3 or higher.
1875
1881
  - Spatial transforms are handled differently to ensure bbox compatibility.
@@ -1931,16 +1937,20 @@ class Albumentations:
1931
1937
  "XYMasking",
1932
1938
  } # from https://albumentations.ai/docs/getting_started/transforms_and_targets/#spatial-level-transforms
1933
1939
 
1934
- # Transforms
1935
- T = [
1936
- A.Blur(p=0.01),
1937
- A.MedianBlur(p=0.01),
1938
- A.ToGray(p=0.01),
1939
- A.CLAHE(p=0.01),
1940
- A.RandomBrightnessContrast(p=0.0),
1941
- A.RandomGamma(p=0.0),
1942
- A.ImageCompression(quality_range=(75, 100), p=0.0),
1943
- ]
1940
+ # Transforms, use custom transforms if provided, otherwise use defaults
1941
+ T = (
1942
+ [
1943
+ A.Blur(p=0.01),
1944
+ A.MedianBlur(p=0.01),
1945
+ A.ToGray(p=0.01),
1946
+ A.CLAHE(p=0.01),
1947
+ A.RandomBrightnessContrast(p=0.0),
1948
+ A.RandomGamma(p=0.0),
1949
+ A.ImageCompression(quality_range=(75, 100), p=0.0),
1950
+ ]
1951
+ if transforms is None
1952
+ else transforms
1953
+ )
1944
1954
 
1945
1955
  # Compose transforms
1946
1956
  self.contains_spatial = any(transform.__class__.__name__ in spatial_transforms for transform in T)
@@ -2482,6 +2492,12 @@ def v8_transforms(dataset, imgsz: int, hyp: IterableSimpleNamespace, stretch: bo
2482
2492
  >>> hyp = IterableSimpleNamespace(mosaic=1.0, copy_paste=0.5, degrees=10.0, translate=0.2, scale=0.9)
2483
2493
  >>> transforms = v8_transforms(dataset, imgsz=640, hyp=hyp)
2484
2494
  >>> augmented_data = transforms(dataset[0])
2495
+
2496
+ >>> # With custom albumentations
2497
+ >>> import albumentations as A
2498
+ >>> augmentations = [A.Blur(p=0.01), A.CLAHE(p=0.01)]
2499
+ >>> hyp.augmentations = augmentations
2500
+ >>> transforms = v8_transforms(dataset, imgsz=640, hyp=hyp)
2485
2501
  """
2486
2502
  mosaic = Mosaic(dataset, imgsz=imgsz, p=hyp.mosaic)
2487
2503
  affine = RandomPerspective(
@@ -2519,7 +2535,7 @@ def v8_transforms(dataset, imgsz: int, hyp: IterableSimpleNamespace, stretch: bo
2519
2535
  pre_transform,
2520
2536
  MixUp(dataset, pre_transform=pre_transform, p=hyp.mixup),
2521
2537
  CutMix(dataset, pre_transform=pre_transform, p=hyp.cutmix),
2522
- Albumentations(p=1.0),
2538
+ Albumentations(p=1.0, transforms=getattr(hyp, "augmentations", None)),
2523
2539
  RandomHSV(hgain=hyp.hsv_h, sgain=hyp.hsv_s, vgain=hyp.hsv_v),
2524
2540
  RandomFlip(direction="vertical", p=hyp.flipud, flip_idx=flip_idx),
2525
2541
  RandomFlip(direction="horizontal", p=hyp.fliplr, flip_idx=flip_idx),
@@ -14,7 +14,7 @@ import numpy as np
14
14
  import torch
15
15
  import torch.distributed as dist
16
16
  from PIL import Image
17
- from torch.utils.data import dataloader, distributed
17
+ from torch.utils.data import Dataset, dataloader, distributed
18
18
 
19
19
  from ultralytics.cfg import IterableSimpleNamespace
20
20
  from ultralytics.data.dataset import GroundingDataset, YOLODataset, YOLOMultiModalDataset
@@ -125,7 +125,7 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
125
125
  samples are covered exactly once across all GPUs.
126
126
 
127
127
  Args:
128
- dataset (torch.utils.data.Dataset): Dataset to sample from. Must implement __len__.
128
+ dataset (Dataset): Dataset to sample from. Must implement __len__.
129
129
  num_replicas (int, optional): Number of distributed processes. Defaults to world size.
130
130
  batch_size (int, optional): Batch size used by dataloader. Defaults to dataset batch size.
131
131
  rank (int, optional): Rank of current process. Defaults to current rank.
@@ -144,7 +144,14 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
144
144
  ... ...
145
145
  """
146
146
 
147
- def __init__(self, dataset, num_replicas=None, batch_size=None, rank=None, shuffle=False):
147
+ def __init__(
148
+ self,
149
+ dataset: Dataset,
150
+ num_replicas: int | None = None,
151
+ batch_size: int | None = None,
152
+ rank: int | None = None,
153
+ shuffle: bool = False,
154
+ ) -> None:
148
155
  """Initialize the sampler with dataset and distributed training parameters."""
149
156
  if num_replicas is None:
150
157
  num_replicas = dist.get_world_size() if dist.is_initialized() else 1
@@ -153,7 +160,6 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
153
160
  if batch_size is None:
154
161
  batch_size = getattr(dataset, "batch_size", 1)
155
162
 
156
- self.dataset = dataset
157
163
  self.num_replicas = num_replicas
158
164
  self.batch_size = batch_size
159
165
  self.rank = rank
@@ -162,7 +168,7 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
162
168
  self.total_size = len(dataset)
163
169
  self.num_batches = math.ceil(self.total_size / self.batch_size)
164
170
 
165
- def _get_rank_indices(self):
171
+ def _get_rank_indices(self) -> tuple[int, int]:
166
172
  """Calculate the start and end sample indices for this rank."""
167
173
  # Calculate which batches this rank handles
168
174
  batches_per_rank_base = self.num_batches // self.num_replicas
@@ -181,7 +187,7 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
181
187
 
182
188
  return start_idx, end_idx
183
189
 
184
- def __iter__(self):
190
+ def __iter__(self) -> Iterator:
185
191
  """Generate indices for this rank's contiguous chunk of the dataset."""
186
192
  start_idx, end_idx = self._get_rank_indices()
187
193
  indices = list(range(start_idx, end_idx))
@@ -193,12 +199,12 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
193
199
 
194
200
  return iter(indices)
195
201
 
196
- def __len__(self):
202
+ def __len__(self) -> int:
197
203
  """Return the number of samples in this rank's chunk."""
198
204
  start_idx, end_idx = self._get_rank_indices()
199
205
  return end_idx - start_idx
200
206
 
201
- def set_epoch(self, epoch):
207
+ def set_epoch(self, epoch: int) -> None:
202
208
  """Set the epoch for this sampler to ensure different shuffling patterns across epochs.
203
209
 
204
210
  Args:
@@ -207,7 +213,7 @@ class ContiguousDistributedSampler(torch.utils.data.Sampler):
207
213
  self.epoch = epoch
208
214
 
209
215
 
210
- def seed_worker(worker_id: int):
216
+ def seed_worker(worker_id: int) -> None:
211
217
  """Set dataloader worker seed for reproducibility across worker processes."""
212
218
  worker_seed = torch.initial_seed() % 2**32
213
219
  np.random.seed(worker_seed)
@@ -223,7 +229,7 @@ def build_yolo_dataset(
223
229
  rect: bool = False,
224
230
  stride: int = 32,
225
231
  multi_modal: bool = False,
226
- ):
232
+ ) -> Dataset:
227
233
  """Build and return a YOLO dataset based on configuration parameters."""
228
234
  dataset = YOLOMultiModalDataset if multi_modal else YOLODataset
229
235
  return dataset(
@@ -254,7 +260,7 @@ def build_grounding(
254
260
  rect: bool = False,
255
261
  stride: int = 32,
256
262
  max_samples: int = 80,
257
- ):
263
+ ) -> Dataset:
258
264
  """Build and return a GroundingDataset based on configuration parameters."""
259
265
  return GroundingDataset(
260
266
  img_path=img_path,
@@ -284,7 +290,7 @@ def build_dataloader(
284
290
  rank: int = -1,
285
291
  drop_last: bool = False,
286
292
  pin_memory: bool = True,
287
- ):
293
+ ) -> InfiniteDataLoader:
288
294
  """Create and return an InfiniteDataLoader or DataLoader for training or validation.
289
295
 
290
296
  Args:
@@ -331,7 +337,9 @@ def build_dataloader(
331
337
  )
332
338
 
333
339
 
334
- def check_source(source):
340
+ def check_source(
341
+ source: str | int | Path | list | tuple | np.ndarray | Image.Image | torch.Tensor,
342
+ ) -> tuple[Any, bool, bool, bool, bool, bool]:
335
343
  """Check the type of input source and return corresponding flag values.
336
344
 
337
345
  Args:
@@ -379,11 +387,17 @@ def check_source(source):
379
387
  return source, webcam, screenshot, from_img, in_memory, tensor
380
388
 
381
389
 
382
- def load_inference_source(source=None, batch: int = 1, vid_stride: int = 1, buffer: bool = False, channels: int = 3):
390
+ def load_inference_source(
391
+ source: str | int | Path | list | tuple | np.ndarray | Image.Image | torch.Tensor,
392
+ batch: int = 1,
393
+ vid_stride: int = 1,
394
+ buffer: bool = False,
395
+ channels: int = 3,
396
+ ):
383
397
  """Load an inference source for object detection and apply necessary transformations.
384
398
 
385
399
  Args:
386
- source (str | Path | torch.Tensor | PIL.Image | np.ndarray, optional): The input source for inference.
400
+ source (str | Path | list | tuple | torch.Tensor | PIL.Image | np.ndarray): The input source for inference.
387
401
  batch (int, optional): Batch size for dataloaders.
388
402
  vid_stride (int, optional): The frame interval for video sources.
389
403
  buffer (bool, optional): Whether stream frames will be buffered.
@@ -123,7 +123,7 @@ class LoadStreams:
123
123
  if urllib.parse.urlparse(s).hostname in {"www.youtube.com", "youtube.com", "youtu.be"}: # YouTube video
124
124
  # YouTube format i.e. 'https://www.youtube.com/watch?v=Jsn8D3aC840' or 'https://youtu.be/Jsn8D3aC840'
125
125
  s = get_best_youtube_url(s)
126
- s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam
126
+ s = int(s) if s.isnumeric() else s # i.e. s = '0' local webcam
127
127
  if s == 0 and (IS_COLAB or IS_KAGGLE):
128
128
  raise NotImplementedError(
129
129
  "'source=0' webcam not supported in Colab and Kaggle notebooks. "
@@ -90,7 +90,6 @@ from ultralytics.utils import (
90
90
  MACOS,
91
91
  MACOS_VERSION,
92
92
  RKNN_CHIPS,
93
- ROOT,
94
93
  SETTINGS,
95
94
  TORCH_VERSION,
96
95
  WINDOWS,
@@ -101,13 +100,11 @@ from ultralytics.utils import (
101
100
  )
102
101
  from ultralytics.utils.checks import (
103
102
  check_imgsz,
104
- check_is_path_safe,
105
103
  check_requirements,
106
104
  check_version,
107
105
  is_intel,
108
106
  is_sudo_available,
109
107
  )
110
- from ultralytics.utils.downloads import get_github_assets, safe_download
111
108
  from ultralytics.utils.export import (
112
109
  keras2pb,
113
110
  onnx2engine,
@@ -165,12 +162,12 @@ def export_formats():
165
162
 
166
163
  def best_onnx_opset(onnx, cuda=False) -> int:
167
164
  """Return max ONNX opset for this torch version with ONNX fallback."""
168
- version = ".".join(TORCH_VERSION.split(".")[:2])
169
165
  if TORCH_2_4: # _constants.ONNX_MAX_OPSET first defined in torch 1.13
170
166
  opset = torch.onnx.utils._constants.ONNX_MAX_OPSET - 1 # use second-latest version for safety
171
167
  if cuda:
172
168
  opset -= 2 # fix CUDA ONNXRuntime NMS squeeze op errors
173
169
  else:
170
+ version = ".".join(TORCH_VERSION.split(".")[:2])
174
171
  opset = {
175
172
  "1.8": 12,
176
173
  "1.9": 12,
@@ -532,7 +529,7 @@ class Exporter:
532
529
  f[0] = self.export_torchscript()
533
530
  if engine: # TensorRT required before ONNX
534
531
  f[1] = self.export_engine(dla=dla)
535
- if onnx or ncnn: # ONNX
532
+ if onnx: # ONNX
536
533
  f[2] = self.export_onnx()
537
534
  if xml: # OpenVINO
538
535
  f[3] = self.export_openvino()
@@ -822,65 +819,31 @@ class Exporter:
822
819
  def export_ncnn(self, prefix=colorstr("NCNN:")):
823
820
  """Export YOLO model to NCNN format using PNNX https://github.com/pnnx/pnnx."""
824
821
  check_requirements("ncnn", cmds="--no-deps") # no deps to avoid installing opencv-python
822
+ check_requirements("pnnx")
825
823
  import ncnn
824
+ import pnnx
826
825
 
827
- LOGGER.info(f"\n{prefix} starting export with NCNN {ncnn.__version__}...")
826
+ LOGGER.info(f"\n{prefix} starting export with NCNN {ncnn.__version__} and PNNX {pnnx.__version__}...")
828
827
  f = Path(str(self.file).replace(self.file.suffix, f"_ncnn_model{os.sep}"))
829
- f_onnx = self.file.with_suffix(".onnx")
830
828
 
831
- name = Path("pnnx.exe" if WINDOWS else "pnnx") # PNNX filename
832
- pnnx = name if name.is_file() else (ROOT / name)
833
- if not pnnx.is_file():
834
- LOGGER.warning(
835
- f"{prefix} PNNX not found. Attempting to download binary file from "
836
- "https://github.com/pnnx/pnnx/.\nNote PNNX Binary file must be placed in current working directory "
837
- f"or in {ROOT}. See PNNX repo for full installation instructions."
838
- )
839
- system = "macos" if MACOS else "windows" if WINDOWS else "linux-aarch64" if ARM64 else "linux"
840
- try:
841
- release, assets = get_github_assets(repo="pnnx/pnnx")
842
- asset = next(x for x in assets if f"{system}.zip" in x)
843
- assert isinstance(asset, str), "Unable to retrieve PNNX repo assets" # i.e. pnnx-20250930-macos.zip
844
- LOGGER.info(f"{prefix} successfully found latest PNNX asset file {asset}")
845
- except Exception as e:
846
- release = "20250930"
847
- asset = f"pnnx-{release}-{system}.zip"
848
- LOGGER.warning(f"{prefix} PNNX GitHub assets not found: {e}, using default {asset}")
849
- unzip_dir = safe_download(f"https://github.com/pnnx/pnnx/releases/download/{release}/{asset}", delete=True)
850
- if check_is_path_safe(Path.cwd(), unzip_dir): # avoid path traversal security vulnerability
851
- shutil.move(src=unzip_dir / name, dst=pnnx) # move binary to ROOT
852
- pnnx.chmod(0o777) # set read, write, and execute permissions for everyone
853
- shutil.rmtree(unzip_dir) # delete unzip dir
854
-
855
- ncnn_args = [
856
- f"ncnnparam={f / 'model.ncnn.param'}",
857
- f"ncnnbin={f / 'model.ncnn.bin'}",
858
- f"ncnnpy={f / 'model_ncnn.py'}",
859
- ]
860
-
861
- pnnx_args = [
862
- f"pnnxparam={f / 'model.pnnx.param'}",
863
- f"pnnxbin={f / 'model.pnnx.bin'}",
864
- f"pnnxpy={f / 'model_pnnx.py'}",
865
- f"pnnxonnx={f / 'model.pnnx.onnx'}",
866
- ]
867
-
868
- cmd = [
869
- str(pnnx),
870
- str(f_onnx),
871
- *ncnn_args,
872
- *pnnx_args,
873
- f"fp16={int(self.args.half)}",
874
- f"device={self.device.type}",
875
- f'inputshape="{[self.args.batch, 3, *self.imgsz]}"',
876
- ]
829
+ ncnn_args = dict(
830
+ ncnnparam=(f / "model.ncnn.param").as_posix(),
831
+ ncnnbin=(f / "model.ncnn.bin").as_posix(),
832
+ ncnnpy=(f / "model_ncnn.py").as_posix(),
833
+ )
834
+
835
+ pnnx_args = dict(
836
+ ptpath=(f / "model.pt").as_posix(),
837
+ pnnxparam=(f / "model.pnnx.param").as_posix(),
838
+ pnnxbin=(f / "model.pnnx.bin").as_posix(),
839
+ pnnxpy=(f / "model_pnnx.py").as_posix(),
840
+ pnnxonnx=(f / "model.pnnx.onnx").as_posix(),
841
+ )
842
+
877
843
  f.mkdir(exist_ok=True) # make ncnn_model directory
878
- LOGGER.info(f"{prefix} running '{' '.join(cmd)}'")
879
- subprocess.run(cmd, check=True)
844
+ pnnx.export(self.model, inputs=self.im, **ncnn_args, **pnnx_args, fp16=self.args.half, device=self.device.type)
880
845
 
881
- # Remove debug files
882
- pnnx_files = [x.rsplit("=", 1)[-1] for x in pnnx_args]
883
- for f_debug in ("debug.bin", "debug.param", "debug2.bin", "debug2.param", *pnnx_files):
846
+ for f_debug in ("debug.bin", "debug.param", "debug2.bin", "debug2.param", *pnnx_args.values()):
884
847
  Path(f_debug).unlink(missing_ok=True)
885
848
 
886
849
  YAML.save(f / "metadata.yaml", self.metadata) # add metadata.yaml
@@ -740,6 +740,7 @@ class Model(torch.nn.Module):
740
740
  - optimizer (str): Optimizer to use for training.
741
741
  - lr0 (float): Initial learning rate.
742
742
  - patience (int): Epochs to wait for no observable improvement for early stopping of training.
743
+ - augmentations (list[Callable]): List of augmentation functions to apply during training.
743
744
 
744
745
  Returns:
745
746
  (dict | None): Training metrics if available and training is successful; otherwise, None.