dgenerate-ultralytics-headless 8.3.234__tar.gz → 8.3.236__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.234 → dgenerate_ultralytics_headless-8.3.236}/PKG-INFO +2 -2
  2. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/dgenerate_ultralytics_headless.egg-info/PKG-INFO +2 -2
  3. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/dgenerate_ultralytics_headless.egg-info/requires.txt +1 -1
  4. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/pyproject.toml +1 -1
  5. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/tests/test_exports.py +20 -4
  6. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/__init__.py +1 -1
  7. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/engine/exporter.py +121 -17
  8. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/autobackend.py +47 -7
  9. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/clearml.py +3 -9
  10. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/neptune.py +3 -9
  11. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/checks.py +44 -1
  12. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/export/imx.py +28 -7
  13. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/patches.py +19 -0
  14. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/torch_utils.py +1 -0
  15. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/LICENSE +0 -0
  16. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/README.md +0 -0
  17. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/dgenerate_ultralytics_headless.egg-info/SOURCES.txt +0 -0
  18. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/dgenerate_ultralytics_headless.egg-info/dependency_links.txt +0 -0
  19. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/dgenerate_ultralytics_headless.egg-info/entry_points.txt +0 -0
  20. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/dgenerate_ultralytics_headless.egg-info/top_level.txt +0 -0
  21. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/setup.cfg +0 -0
  22. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/tests/__init__.py +0 -0
  23. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/tests/conftest.py +0 -0
  24. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/tests/test_cli.py +0 -0
  25. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/tests/test_cuda.py +0 -0
  26. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/tests/test_engine.py +0 -0
  27. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/tests/test_integrations.py +0 -0
  28. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/tests/test_python.py +0 -0
  29. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/tests/test_solutions.py +0 -0
  30. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/assets/bus.jpg +0 -0
  31. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/assets/zidane.jpg +0 -0
  32. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/__init__.py +0 -0
  33. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  34. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  35. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  36. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  37. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +0 -0
  38. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  39. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  40. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  41. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  42. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  43. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  44. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  45. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  46. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  47. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/coco.yaml +0 -0
  48. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  49. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  50. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/coco8-grayscale.yaml +0 -0
  51. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  52. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  53. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  54. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  55. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/construction-ppe.yaml +0 -0
  56. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  57. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  58. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  59. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  60. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  61. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/kitti.yaml +0 -0
  62. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  63. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  64. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  65. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  66. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/signature.yaml +0 -0
  67. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  68. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/datasets/xView.yaml +0 -0
  69. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/default.yaml +0 -0
  70. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  71. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  72. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  73. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  74. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  75. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  76. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  77. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  78. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  79. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  80. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  81. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  82. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  83. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  84. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  85. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  86. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  87. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  88. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  89. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  90. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  91. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  92. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  93. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  94. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  95. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  96. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  97. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  98. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  99. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  100. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  101. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  102. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  103. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  104. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  105. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  106. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  107. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  108. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  109. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  110. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  111. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  112. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  113. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  114. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  115. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  116. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  117. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  118. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  119. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  120. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  121. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  122. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  123. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  124. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  125. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  126. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  127. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/__init__.py +0 -0
  128. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/annotator.py +0 -0
  129. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/augment.py +0 -0
  130. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/base.py +0 -0
  131. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/build.py +0 -0
  132. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/converter.py +0 -0
  133. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/dataset.py +0 -0
  134. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/loaders.py +0 -0
  135. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/scripts/download_weights.sh +0 -0
  136. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/scripts/get_coco.sh +0 -0
  137. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/scripts/get_coco128.sh +0 -0
  138. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  139. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/split.py +0 -0
  140. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/split_dota.py +0 -0
  141. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/data/utils.py +0 -0
  142. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/engine/__init__.py +0 -0
  143. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/engine/model.py +0 -0
  144. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/engine/predictor.py +0 -0
  145. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/engine/results.py +0 -0
  146. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/engine/trainer.py +0 -0
  147. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/engine/tuner.py +0 -0
  148. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/engine/validator.py +0 -0
  149. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/hub/__init__.py +0 -0
  150. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/hub/auth.py +0 -0
  151. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/hub/google/__init__.py +0 -0
  152. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/hub/session.py +0 -0
  153. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/hub/utils.py +0 -0
  154. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/__init__.py +0 -0
  155. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/fastsam/__init__.py +0 -0
  156. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/fastsam/model.py +0 -0
  157. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/fastsam/predict.py +0 -0
  158. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/fastsam/utils.py +0 -0
  159. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/fastsam/val.py +0 -0
  160. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/nas/__init__.py +0 -0
  161. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/nas/model.py +0 -0
  162. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/nas/predict.py +0 -0
  163. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/nas/val.py +0 -0
  164. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/rtdetr/__init__.py +0 -0
  165. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/rtdetr/model.py +0 -0
  166. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/rtdetr/predict.py +0 -0
  167. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/rtdetr/train.py +0 -0
  168. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/rtdetr/val.py +0 -0
  169. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/__init__.py +0 -0
  170. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/amg.py +0 -0
  171. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/build.py +0 -0
  172. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/model.py +0 -0
  173. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/modules/__init__.py +0 -0
  174. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/modules/blocks.py +0 -0
  175. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/modules/decoders.py +0 -0
  176. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/modules/encoders.py +0 -0
  177. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  178. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/modules/sam.py +0 -0
  179. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  180. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/modules/transformer.py +0 -0
  181. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/modules/utils.py +0 -0
  182. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/sam/predict.py +0 -0
  183. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/utils/__init__.py +0 -0
  184. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/utils/loss.py +0 -0
  185. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/utils/ops.py +0 -0
  186. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/__init__.py +0 -0
  187. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/classify/__init__.py +0 -0
  188. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/classify/predict.py +0 -0
  189. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/classify/train.py +0 -0
  190. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/classify/val.py +0 -0
  191. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/detect/__init__.py +0 -0
  192. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/detect/predict.py +0 -0
  193. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/detect/train.py +0 -0
  194. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/detect/val.py +0 -0
  195. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/model.py +0 -0
  196. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/obb/__init__.py +0 -0
  197. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/obb/predict.py +0 -0
  198. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/obb/train.py +0 -0
  199. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/obb/val.py +0 -0
  200. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/pose/__init__.py +0 -0
  201. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/pose/predict.py +0 -0
  202. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/pose/train.py +0 -0
  203. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/pose/val.py +0 -0
  204. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/segment/__init__.py +0 -0
  205. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/segment/predict.py +0 -0
  206. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/segment/train.py +0 -0
  207. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/segment/val.py +0 -0
  208. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/world/__init__.py +0 -0
  209. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/world/train.py +0 -0
  210. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/world/train_world.py +0 -0
  211. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  212. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  213. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/yoloe/train.py +0 -0
  214. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  215. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/models/yolo/yoloe/val.py +0 -0
  216. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/__init__.py +0 -0
  217. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/modules/__init__.py +0 -0
  218. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/modules/activation.py +0 -0
  219. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/modules/block.py +0 -0
  220. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/modules/conv.py +0 -0
  221. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/modules/head.py +0 -0
  222. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/modules/transformer.py +0 -0
  223. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/modules/utils.py +0 -0
  224. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/tasks.py +0 -0
  225. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/nn/text_model.py +0 -0
  226. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/py.typed +0 -0
  227. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/__init__.py +0 -0
  228. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/ai_gym.py +0 -0
  229. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/analytics.py +0 -0
  230. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/config.py +0 -0
  231. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/distance_calculation.py +0 -0
  232. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/heatmap.py +0 -0
  233. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/instance_segmentation.py +0 -0
  234. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/object_blurrer.py +0 -0
  235. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/object_counter.py +0 -0
  236. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/object_cropper.py +0 -0
  237. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/parking_management.py +0 -0
  238. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/queue_management.py +0 -0
  239. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/region_counter.py +0 -0
  240. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/security_alarm.py +0 -0
  241. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/similarity_search.py +0 -0
  242. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/solutions.py +0 -0
  243. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/speed_estimation.py +0 -0
  244. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/streamlit_inference.py +0 -0
  245. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/templates/similarity-search.html +0 -0
  246. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/trackzone.py +0 -0
  247. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/solutions/vision_eye.py +0 -0
  248. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/trackers/__init__.py +0 -0
  249. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/trackers/basetrack.py +0 -0
  250. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/trackers/bot_sort.py +0 -0
  251. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/trackers/byte_tracker.py +0 -0
  252. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/trackers/track.py +0 -0
  253. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/trackers/utils/__init__.py +0 -0
  254. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/trackers/utils/gmc.py +0 -0
  255. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  256. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/trackers/utils/matching.py +0 -0
  257. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/__init__.py +0 -0
  258. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/autobatch.py +0 -0
  259. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/autodevice.py +0 -0
  260. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/benchmarks.py +0 -0
  261. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/__init__.py +0 -0
  262. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/base.py +0 -0
  263. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/comet.py +0 -0
  264. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/dvc.py +0 -0
  265. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/hub.py +0 -0
  266. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/mlflow.py +0 -0
  267. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/platform.py +0 -0
  268. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/raytune.py +0 -0
  269. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  270. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/callbacks/wb.py +0 -0
  271. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/cpu.py +0 -0
  272. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/dist.py +0 -0
  273. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/downloads.py +0 -0
  274. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/errors.py +0 -0
  275. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/events.py +0 -0
  276. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/export/__init__.py +0 -0
  277. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/export/engine.py +0 -0
  278. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/export/tensorflow.py +0 -0
  279. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/files.py +0 -0
  280. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/git.py +0 -0
  281. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/instance.py +0 -0
  282. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/logger.py +0 -0
  283. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/loss.py +0 -0
  284. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/metrics.py +0 -0
  285. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/nms.py +0 -0
  286. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/ops.py +0 -0
  287. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/plotting.py +0 -0
  288. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/tal.py +0 -0
  289. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/tqdm.py +0 -0
  290. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/ultralytics/utils/triton.py +0 -0
  291. {dgenerate_ultralytics_headless-8.3.234 → dgenerate_ultralytics_headless-8.3.236}/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.234
3
+ Version: 8.3.236
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>
@@ -57,7 +57,7 @@ Provides-Extra: export
57
57
  Requires-Dist: numpy<2.0.0; extra == "export"
58
58
  Requires-Dist: onnx>=1.12.0; platform_system != "Darwin" and extra == "export"
59
59
  Requires-Dist: onnx<1.18.0,>=1.12.0; platform_system == "Darwin" and extra == "export"
60
- Requires-Dist: coremltools>=8.0; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
60
+ Requires-Dist: coremltools>=9.0; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
61
61
  Requires-Dist: scikit-learn>=1.3.2; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
62
62
  Requires-Dist: openvino>=2024.0.0; extra == "export"
63
63
  Requires-Dist: tensorflow<=2.19.0,>=2.0.0; extra == "export"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dgenerate-ultralytics-headless
3
- Version: 8.3.234
3
+ Version: 8.3.236
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>
@@ -57,7 +57,7 @@ Provides-Extra: export
57
57
  Requires-Dist: numpy<2.0.0; extra == "export"
58
58
  Requires-Dist: onnx>=1.12.0; platform_system != "Darwin" and extra == "export"
59
59
  Requires-Dist: onnx<1.18.0,>=1.12.0; platform_system == "Darwin" and extra == "export"
60
- Requires-Dist: coremltools>=8.0; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
60
+ Requires-Dist: coremltools>=9.0; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
61
61
  Requires-Dist: scikit-learn>=1.3.2; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
62
62
  Requires-Dist: openvino>=2024.0.0; extra == "export"
63
63
  Requires-Dist: tensorflow<=2.19.0,>=2.0.0; extra == "export"
@@ -41,7 +41,7 @@ tensorstore>=0.1.63
41
41
  onnx>=1.12.0
42
42
 
43
43
  [export:platform_system != "Windows" and python_version <= "3.13"]
44
- coremltools>=8.0
44
+ coremltools>=9.0
45
45
  scikit-learn>=1.3.2
46
46
 
47
47
  [export:platform_system == "Darwin"]
@@ -91,7 +91,7 @@ export = [
91
91
  "numpy<2.0.0", # TF 2.20 compatibility
92
92
  "onnx>=1.12.0; platform_system != 'Darwin'", # ONNX export
93
93
  "onnx>=1.12.0,<1.18.0; platform_system == 'Darwin'", # TF inference hanging on MacOS
94
- "coremltools>=8.0; platform_system != 'Windows' and python_version <= '3.13'", # CoreML supported on macOS and Linux
94
+ "coremltools>=9.0; platform_system != 'Windows' and python_version <= '3.13'", # CoreML supported on macOS and Linux
95
95
  "scikit-learn>=1.3.2; platform_system != 'Windows' and python_version <= '3.13'", # CoreML k-means quantization
96
96
  "openvino>=2024.0.0", # OpenVINO export
97
97
  "tensorflow>=2.0.0,<=2.19.0", # TF bug https://github.com/ultralytics/ultralytics/issues/5161
@@ -13,7 +13,7 @@ from tests import MODEL, SOURCE
13
13
  from ultralytics import YOLO
14
14
  from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS
15
15
  from ultralytics.utils import ARM64, IS_RASPBERRYPI, LINUX, MACOS, WINDOWS, checks
16
- from ultralytics.utils.torch_utils import TORCH_1_11, TORCH_1_13, TORCH_2_1, TORCH_2_9
16
+ from ultralytics.utils.torch_utils import TORCH_1_11, TORCH_1_13, TORCH_2_1, TORCH_2_8, TORCH_2_9
17
17
 
18
18
 
19
19
  def test_export_torchscript():
@@ -248,15 +248,31 @@ def test_export_ncnn_matrix(task, half, batch):
248
248
  shutil.rmtree(file, ignore_errors=True) # retry in case of potential lingering multi-threaded file usage errors
249
249
 
250
250
 
251
- @pytest.mark.skipif(True, reason="Test disabled as keras and tensorflow version conflicts with TFlite export.")
252
- @pytest.mark.skipif(not LINUX or MACOS, reason="Skipping test on Windows and Macos")
251
+ @pytest.mark.skipif(not TORCH_2_9, reason="IMX export requires torch>=2.9.0")
252
+ @pytest.mark.skipif(not checks.IS_PYTHON_MINIMUM_3_9, reason="Requires Python>=3.9")
253
+ @pytest.mark.skipif(WINDOWS or MACOS, reason="Skipping test on Windows and Macos")
254
+ @pytest.mark.skipif(ARM64, reason="IMX export is not supported on ARM64 architectures.")
253
255
  def test_export_imx():
254
256
  """Test YOLO export to IMX format."""
255
- model = YOLO("yolov8n.pt")
257
+ model = YOLO(MODEL)
256
258
  file = model.export(format="imx", imgsz=32)
257
259
  YOLO(file)(SOURCE, imgsz=32)
258
260
 
259
261
 
262
+ @pytest.mark.slow
263
+ @pytest.mark.skipif(not TORCH_2_8, reason="Axelera export requires torch>=2.8.0")
264
+ @pytest.mark.skipif(not LINUX, reason="Axelera export only supported on Linux")
265
+ @pytest.mark.skipif(not checks.IS_PYTHON_3_10, reason="Axelera export requires Python 3.10")
266
+ def test_export_axelera():
267
+ """Test YOLO export to Axelera format."""
268
+ model = YOLO(MODEL)
269
+ # For faster testing, use a smaller calibration dataset
270
+ # 32 image size crashes axelera export, so use 64
271
+ file = model.export(format="axelera", imgsz=64, data="coco8.yaml")
272
+ assert Path(file).exists(), f"Axelera export failed, directory not found: {file}"
273
+ shutil.rmtree(file, ignore_errors=True) # cleanup
274
+
275
+
260
276
  @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")
261
277
  @pytest.mark.skipif(WINDOWS, reason="Skipping test on Windows")
262
278
  def test_export_executorch():
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.234"
3
+ __version__ = "8.3.236"
4
4
 
5
5
  import importlib
6
6
  import os
@@ -21,6 +21,7 @@ NCNN | `ncnn` | yolo11n_ncnn_model/
21
21
  IMX | `imx` | yolo11n_imx_model/
22
22
  RKNN | `rknn` | yolo11n_rknn_model/
23
23
  ExecuTorch | `executorch` | yolo11n_executorch_model/
24
+ Axelera | `axelera` | yolo11n_axelera_model/
24
25
 
25
26
  Requirements:
26
27
  $ pip install "ultralytics[export]"
@@ -50,6 +51,7 @@ Inference:
50
51
  yolo11n_imx_model # IMX
51
52
  yolo11n_rknn_model # RKNN
52
53
  yolo11n_executorch_model # ExecuTorch
54
+ yolo11n_axelera_model # Axelera
53
55
 
54
56
  TensorFlow.js:
55
57
  $ cd .. && git clone https://github.com/zldrobit/tfjs-yolov5-example.git && cd tfjs-yolov5-example
@@ -103,7 +105,9 @@ from ultralytics.utils import (
103
105
  get_default_args,
104
106
  )
105
107
  from ultralytics.utils.checks import (
106
- IS_PYTHON_3_12,
108
+ IS_PYTHON_3_10,
109
+ IS_PYTHON_MINIMUM_3_9,
110
+ check_apt_requirements,
107
111
  check_imgsz,
108
112
  check_requirements,
109
113
  check_version,
@@ -161,6 +165,7 @@ def export_formats():
161
165
  ["IMX", "imx", "_imx_model", True, True, ["int8", "fraction", "nms"]],
162
166
  ["RKNN", "rknn", "_rknn_model", False, False, ["batch", "name"]],
163
167
  ["ExecuTorch", "executorch", "_executorch_model", True, False, ["batch"]],
168
+ ["Axelera", "axelera", "_axelera_model", False, False, ["batch", "int8"]],
164
169
  ]
165
170
  return dict(zip(["Format", "Argument", "Suffix", "CPU", "GPU", "Arguments"], zip(*x)))
166
171
 
@@ -340,6 +345,7 @@ class Exporter:
340
345
  imx,
341
346
  rknn,
342
347
  executorch,
348
+ axelera,
343
349
  ) = flags # export booleans
344
350
 
345
351
  is_tf_format = any((saved_model, pb, tflite, edgetpu, tfjs))
@@ -361,15 +367,25 @@ class Exporter:
361
367
  # Argument compatibility checks
362
368
  fmt_keys = fmts_dict["Arguments"][flags.index(True) + 1]
363
369
  validate_args(fmt, self.args, fmt_keys)
370
+ if axelera:
371
+ if not IS_PYTHON_3_10:
372
+ SystemError("Axelera export only supported on Python 3.10.")
373
+ if not self.args.int8:
374
+ LOGGER.warning("Setting int8=True for Axelera mixed-precision export.")
375
+ self.args.int8 = True
376
+ if model.task not in {"detect"}:
377
+ raise ValueError("Axelera export only supported for detection models.")
364
378
  if imx:
365
379
  if not self.args.int8:
366
380
  LOGGER.warning("IMX export requires int8=True, setting int8=True.")
367
381
  self.args.int8 = True
368
- if not self.args.nms and model.task in {"detect", "pose"}:
382
+ if not self.args.nms and model.task in {"detect", "pose", "segment"}:
369
383
  LOGGER.warning("IMX export requires nms=True, setting nms=True.")
370
384
  self.args.nms = True
371
- if model.task not in {"detect", "pose", "classify"}:
372
- raise ValueError("IMX export only supported for detection, pose estimation, and classification models.")
385
+ if model.task not in {"detect", "pose", "classify", "segment"}:
386
+ raise ValueError(
387
+ "IMX export only supported for detection, pose estimation, classification, and segmentation models."
388
+ )
373
389
  if not hasattr(model, "names"):
374
390
  model.names = default_class_names()
375
391
  model.names = check_class_names(model.names)
@@ -424,7 +440,10 @@ class Exporter:
424
440
  )
425
441
  model.clip_model = None # openvino int8 export error: https://github.com/ultralytics/ultralytics/pull/18445
426
442
  if self.args.int8 and not self.args.data:
427
- self.args.data = DEFAULT_CFG.data or TASK2DATA[getattr(model, "task", "detect")] # assign default data
443
+ if axelera:
444
+ self.args.data = "coco128.yaml" # Axelera default to coco128.yaml
445
+ else:
446
+ self.args.data = DEFAULT_CFG.data or TASK2DATA[getattr(model, "task", "detect")] # assign default data
428
447
  LOGGER.warning(
429
448
  f"INT8 export requires a missing 'data' arg for calibration. Using default 'data={self.args.data}'."
430
449
  )
@@ -563,6 +582,8 @@ class Exporter:
563
582
  f[14] = self.export_rknn()
564
583
  if executorch:
565
584
  f[15] = self.export_executorch()
585
+ if axelera:
586
+ f[16] = self.export_axelera()
566
587
 
567
588
  # Finish
568
589
  f = [str(x) for x in f if x] # filter out '' and None
@@ -608,7 +629,9 @@ class Exporter:
608
629
  f"The calibration dataset ({n} images) must have at least as many images as the batch size "
609
630
  f"('batch={self.args.batch}')."
610
631
  )
611
- elif n < 300:
632
+ elif self.args.format == "axelera" and n < 100:
633
+ LOGGER.warning(f"{prefix} >100 images required for Axelera calibration, found {n} images.")
634
+ elif self.args.format != "axelera" and n < 300:
612
635
  LOGGER.warning(f"{prefix} >300 images recommended for INT8 calibration, found {n} images.")
613
636
  return build_dataloader(dataset, batch=self.args.batch, workers=0, drop_last=True) # required for batch loading
614
637
 
@@ -858,7 +881,9 @@ class Exporter:
858
881
  def export_coreml(self, prefix=colorstr("CoreML:")):
859
882
  """Export YOLO model to CoreML format."""
860
883
  mlmodel = self.args.format.lower() == "mlmodel" # legacy *.mlmodel export format requested
861
- check_requirements("coremltools>=8.0")
884
+ check_requirements(
885
+ ["coremltools>=9.0", "numpy>=1.14.5,<=2.3.5"]
886
+ ) # latest numpy 2.4.0rc1 breaks coremltools exports
862
887
  import coremltools as ct
863
888
 
864
889
  LOGGER.info(f"\n{prefix} starting export with coremltools {ct.__version__}...")
@@ -1076,6 +1101,79 @@ class Exporter:
1076
1101
  f = saved_model / f"{self.file.stem}_float32.tflite"
1077
1102
  return str(f)
1078
1103
 
1104
+ @try_export
1105
+ def export_axelera(self, prefix=colorstr("Axelera:")):
1106
+ """YOLO Axelera export."""
1107
+ os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "python"
1108
+ try:
1109
+ from axelera import compiler
1110
+ except ImportError:
1111
+ check_apt_requirements(
1112
+ ["libllvm14", "libgirepository1.0-dev", "pkg-config", "libcairo2-dev", "build-essential", "cmake"]
1113
+ )
1114
+
1115
+ check_requirements(
1116
+ "axelera-voyager-sdk==1.5.2",
1117
+ cmds="--extra-index-url https://software.axelera.ai/artifactory/axelera-runtime-pypi "
1118
+ "--extra-index-url https://software.axelera.ai/artifactory/axelera-dev-pypi",
1119
+ )
1120
+
1121
+ from axelera import compiler
1122
+ from axelera.compiler import CompilerConfig
1123
+
1124
+ self.args.opset = 17
1125
+ onnx_path = self.export_onnx()
1126
+ model_name = f"{Path(onnx_path).stem}"
1127
+ export_path = Path(f"{model_name}_axelera_model")
1128
+ export_path.mkdir(exist_ok=True)
1129
+
1130
+ def transform_fn(data_item) -> np.ndarray:
1131
+ data_item: torch.Tensor = data_item["img"] if isinstance(data_item, dict) else data_item
1132
+ assert data_item.dtype == torch.uint8, "Input image must be uint8 for the quantization preprocessing"
1133
+ im = data_item.numpy().astype(np.float32) / 255.0 # uint8 to fp16/32 and 0 - 255 to 0.0 - 1.0
1134
+ return np.expand_dims(im, 0) if im.ndim == 3 else im
1135
+
1136
+ if "C2PSA" in self.model.__str__(): # YOLO11
1137
+ config = CompilerConfig(
1138
+ quantization_scheme="per_tensor_min_max",
1139
+ ignore_weight_buffers=False,
1140
+ resources_used=0.25,
1141
+ aipu_cores_used=1,
1142
+ multicore_mode="batch",
1143
+ output_axm_format=True,
1144
+ model_name=model_name,
1145
+ )
1146
+ else: # YOLOv8
1147
+ config = CompilerConfig(
1148
+ tiling_depth=6,
1149
+ split_buffer_promotion=True,
1150
+ resources_used=0.25,
1151
+ aipu_cores_used=1,
1152
+ multicore_mode="batch",
1153
+ output_axm_format=True,
1154
+ model_name=model_name,
1155
+ )
1156
+
1157
+ qmodel = compiler.quantize(
1158
+ model=onnx_path,
1159
+ calibration_dataset=self.get_int8_calibration_dataloader(prefix),
1160
+ config=config,
1161
+ transform_fn=transform_fn,
1162
+ )
1163
+
1164
+ compiler.compile(model=qmodel, config=config, output_dir=export_path)
1165
+
1166
+ axm_name = f"{model_name}.axm"
1167
+ axm_src = Path(axm_name)
1168
+ axm_dst = export_path / axm_name
1169
+
1170
+ if axm_src.exists():
1171
+ axm_src.replace(axm_dst)
1172
+
1173
+ YAML.save(export_path / "metadata.yaml", self.metadata)
1174
+
1175
+ return export_path
1176
+
1079
1177
  @try_export
1080
1178
  def export_executorch(self, prefix=colorstr("ExecuTorch:")):
1081
1179
  """Exports a model to ExecuTorch (.pte) format into a dedicated directory and saves the required metadata,
@@ -1086,7 +1184,7 @@ class Exporter:
1086
1184
  # TorchAO release compatibility table bug https://github.com/pytorch/ao/issues/2919
1087
1185
  # Setuptools bug: https://github.com/pypa/setuptools/issues/4483
1088
1186
  check_requirements("setuptools<71.0.0") # Setuptools bug: https://github.com/pypa/setuptools/issues/4483
1089
- check_requirements(("executorch==1.0.0", "flatbuffers"))
1187
+ check_requirements(("executorch==1.0.1", "flatbuffers"))
1090
1188
 
1091
1189
  import torch
1092
1190
  from executorch.backends.xnnpack.partition.xnnpack_partitioner import XnnpackPartitioner
@@ -1177,18 +1275,24 @@ class Exporter:
1177
1275
  def export_imx(self, prefix=colorstr("IMX:")):
1178
1276
  """Export YOLO model to IMX format."""
1179
1277
  assert LINUX, (
1180
- "export only supported on Linux. "
1181
- "See https://developer.aitrios.sony-semicon.com/en/raspberrypi-ai-camera/documentation/imx500-converter"
1278
+ "Export only supported on Linux."
1279
+ "See https://developer.aitrios.sony-semicon.com/en/docs/raspberry-pi-ai-camera/imx500-converter?version=3.17.3&progLang="
1182
1280
  )
1183
- assert not IS_PYTHON_3_12, "IMX export requires Python>=3.8;<3.12"
1184
- assert not TORCH_2_9, f"IMX export requires PyTorch<2.9. Current PyTorch version is {TORCH_VERSION}."
1281
+ assert not ARM64, "IMX export is not supported on ARM64 architectures."
1282
+ assert IS_PYTHON_MINIMUM_3_9, "IMX export is only supported on Python 3.9 or above."
1283
+
1185
1284
  if getattr(self.model, "end2end", False):
1186
1285
  raise ValueError("IMX export is not supported for end2end models.")
1187
1286
  check_requirements(
1188
- ("model-compression-toolkit>=2.4.1", "sony-custom-layers>=0.3.0", "edge-mdt-tpc>=1.1.0", "pydantic<=2.11.7")
1287
+ (
1288
+ "model-compression-toolkit>=2.4.1",
1289
+ "edge-mdt-cl<1.1.0",
1290
+ "edge-mdt-tpc>=1.2.0",
1291
+ "pydantic<=2.11.7",
1292
+ )
1189
1293
  )
1190
- check_requirements("imx500-converter[pt]>=3.16.1") # Separate requirements for imx500-converter
1191
- check_requirements("mct-quantizers>=1.6.0") # Separate for compatibility with model-compression-toolkit
1294
+
1295
+ check_requirements("imx500-converter[pt]>=3.17.3")
1192
1296
 
1193
1297
  # Install Java>=17
1194
1298
  try:
@@ -1200,10 +1304,10 @@ class Exporter:
1200
1304
  cmd = None
1201
1305
  if IS_UBUNTU or IS_DEBIAN_TRIXIE:
1202
1306
  LOGGER.info(f"\n{prefix} installing Java 21 for Ubuntu...")
1203
- cmd = (["sudo"] if is_sudo_available() else []) + ["apt", "install", "-y", "openjdk-21-jre"]
1307
+ cmd = (["sudo"] if is_sudo_available() else []) + ["apt-get", "install", "-y", "openjdk-21-jre"]
1204
1308
  elif IS_RASPBERRYPI or IS_DEBIAN_BOOKWORM:
1205
1309
  LOGGER.info(f"\n{prefix} installing Java 17 for Raspberry Pi or Debian ...")
1206
- cmd = (["sudo"] if is_sudo_available() else []) + ["apt", "install", "-y", "openjdk-17-jre"]
1310
+ cmd = (["sudo"] if is_sudo_available() else []) + ["apt-get", "install", "-y", "openjdk-17-jre"]
1207
1311
 
1208
1312
  if cmd:
1209
1313
  subprocess.run(cmd, check=True)
@@ -95,6 +95,7 @@ class AutoBackend(nn.Module):
95
95
  | RKNN | *_rknn_model/ |
96
96
  | Triton Inference | triton://model |
97
97
  | ExecuTorch | *.pte |
98
+ | Axelera | *_axelera_model/ |
98
99
 
99
100
  Attributes:
100
101
  model (torch.nn.Module): The loaded YOLO model.
@@ -122,6 +123,7 @@ class AutoBackend(nn.Module):
122
123
  rknn (bool): Whether the model is an RKNN model.
123
124
  triton (bool): Whether the model is a Triton Inference Server model.
124
125
  pte (bool): Whether the model is a PyTorch ExecuTorch model.
126
+ axelera (bool): Whether the model is an Axelera model.
125
127
 
126
128
  Methods:
127
129
  forward: Run inference on an input image.
@@ -176,6 +178,7 @@ class AutoBackend(nn.Module):
176
178
  imx,
177
179
  rknn,
178
180
  pte,
181
+ axelera,
179
182
  triton,
180
183
  ) = self._model_type("" if nn_module else model)
181
184
  fp16 &= pt or jit or onnx or xml or engine or nn_module or triton # FP16
@@ -254,13 +257,11 @@ class AutoBackend(nn.Module):
254
257
  if onnx:
255
258
  session = onnxruntime.InferenceSession(w, providers=providers)
256
259
  else:
257
- check_requirements(
258
- ("model-compression-toolkit>=2.4.1", "sony-custom-layers[torch]>=0.3.0", "onnxruntime-extensions")
259
- )
260
+ check_requirements(("model-compression-toolkit>=2.4.1", "edge-mdt-cl<1.1.0", "onnxruntime-extensions"))
260
261
  w = next(Path(w).glob("*.onnx"))
261
262
  LOGGER.info(f"Loading {w} for ONNX IMX inference...")
262
263
  import mct_quantizers as mctq
263
- from sony_custom_layers.pytorch.nms import nms_ort # noqa
264
+ from edgemdt_cl.pytorch.nms import nms_ort # noqa - register custom NMS ops
264
265
 
265
266
  session_options = mctq.get_ort_session_options()
266
267
  session_options.enable_mem_reuse = False # fix the shape mismatch from onnxruntime
@@ -402,7 +403,9 @@ class AutoBackend(nn.Module):
402
403
 
403
404
  # CoreML
404
405
  elif coreml:
405
- check_requirements("coremltools>=8.0")
406
+ check_requirements(
407
+ ["coremltools>=9.0", "numpy>=1.14.5,<=2.3.5"]
408
+ ) # latest numpy 2.4.0rc1 breaks coremltools exports
406
409
  LOGGER.info(f"Loading {w} for CoreML inference...")
407
410
  import coremltools as ct
408
411
 
@@ -570,12 +573,39 @@ class AutoBackend(nn.Module):
570
573
  rknn_model.init_runtime()
571
574
  metadata = w.parent / "metadata.yaml"
572
575
 
576
+ # Axelera
577
+ elif axelera:
578
+ import os
579
+
580
+ if not os.environ.get("AXELERA_RUNTIME_DIR"):
581
+ LOGGER.warning(
582
+ "Axelera runtime environment is not activated."
583
+ "\nPlease run: source /opt/axelera/sdk/latest/axelera_activate.sh"
584
+ "\n\nIf this fails, verify driver installation: https://docs.ultralytics.com/integrations/axelera/#axelera-driver-installation"
585
+ )
586
+ try:
587
+ from axelera.runtime import op
588
+ except ImportError:
589
+ check_requirements(
590
+ "axelera_runtime2==0.1.2",
591
+ cmds="--extra-index-url https://software.axelera.ai/artifactory/axelera-runtime-pypi",
592
+ )
593
+ from axelera.runtime import op
594
+
595
+ w = Path(w)
596
+ if (found := next(w.rglob("*.axm"), None)) is None:
597
+ raise FileNotFoundError(f"No .axm file found in: {w}")
598
+ w = found
599
+
600
+ ax_model = op.load(str(w))
601
+ metadata = w.parent / "metadata.yaml"
602
+
573
603
  # ExecuTorch
574
604
  elif pte:
575
605
  LOGGER.info(f"Loading {w} for ExecuTorch inference...")
576
606
  # TorchAO release compatibility table bug https://github.com/pytorch/ao/issues/2919
577
607
  check_requirements("setuptools<71.0.0") # Setuptools bug: https://github.com/pypa/setuptools/issues/4483
578
- check_requirements(("executorch==1.0.0", "flatbuffers"))
608
+ check_requirements(("executorch==1.0.1", "flatbuffers"))
579
609
  from executorch.runtime import Runtime
580
610
 
581
611
  w = Path(w)
@@ -691,7 +721,12 @@ class AutoBackend(nn.Module):
691
721
  y = np.concatenate([y[0], y[1][:, :, None], y[2][:, :, None]], axis=-1)
692
722
  elif self.task == "pose":
693
723
  # boxes, conf, kpts
694
- y = np.concatenate([y[0], y[1][:, :, None], y[2][:, :, None], y[3]], axis=-1)
724
+ y = np.concatenate([y[0], y[1][:, :, None], y[2][:, :, None], y[3]], axis=-1, dtype=y[0].dtype)
725
+ elif self.task == "segment":
726
+ y = (
727
+ np.concatenate([y[0], y[1][:, :, None], y[2][:, :, None], y[3]], axis=-1, dtype=y[0].dtype),
728
+ y[4],
729
+ )
695
730
 
696
731
  # OpenVINO
697
732
  elif self.xml:
@@ -791,6 +826,11 @@ class AutoBackend(nn.Module):
791
826
  im = im if isinstance(im, (list, tuple)) else [im]
792
827
  y = self.rknn_model.inference(inputs=im)
793
828
 
829
+ # Axelera
830
+ elif self.axelera:
831
+ im = im.cpu()
832
+ y = self.ax_model(im)
833
+
794
834
  # ExecuTorch
795
835
  elif self.pte:
796
836
  y = self.model.execute([im])
@@ -123,15 +123,9 @@ def on_train_end(trainer) -> None:
123
123
  """Log final model and training results on training completion."""
124
124
  if task := Task.current_task():
125
125
  # Log final results, confusion matrix and PR plots
126
- files = [
127
- "results.png",
128
- "confusion_matrix.png",
129
- "confusion_matrix_normalized.png",
130
- *(f"{x}_curve.png" for x in ("F1", "PR", "P", "R")),
131
- ]
132
- files = [(trainer.save_dir / f) for f in files if (trainer.save_dir / f).exists()] # filter existing files
133
- for f in files:
134
- _log_plot(title=f.stem, plot_path=f)
126
+ for f in [*trainer.plots.keys(), *trainer.validator.plots.keys()]:
127
+ if "batch" not in f.name:
128
+ _log_plot(title=f.stem, plot_path=f)
135
129
  # Report final metrics
136
130
  for k, v in trainer.validator.metrics.results_dict.items():
137
131
  task.get_logger().report_single_value(k, v)
@@ -106,15 +106,9 @@ def on_train_end(trainer) -> None:
106
106
  """Log final results, plots, and model weights at the end of training."""
107
107
  if run:
108
108
  # Log final results, CM matrix + PR plots
109
- files = [
110
- "results.png",
111
- "confusion_matrix.png",
112
- "confusion_matrix_normalized.png",
113
- *(f"{x}_curve.png" for x in ("F1", "PR", "P", "R")),
114
- ]
115
- files = [(trainer.save_dir / f) for f in files if (trainer.save_dir / f).exists()] # filter
116
- for f in files:
117
- _log_plot(title=f.stem, plot_path=f)
109
+ for f in [*trainer.plots.keys(), *trainer.validator.plots.keys()]:
110
+ if "batch" not in f.name:
111
+ _log_plot(title=f.stem, plot_path=f)
118
112
  # Log the final model
119
113
  run[f"weights/{trainer.args.name or trainer.args.task}/{trainer.best.name}"].upload(File(str(trainer.best)))
120
114
 
@@ -350,6 +350,46 @@ def check_python(minimum: str = "3.8.0", hard: bool = True, verbose: bool = Fals
350
350
  return check_version(PYTHON_VERSION, minimum, name="Python", hard=hard, verbose=verbose)
351
351
 
352
352
 
353
+ @TryExcept()
354
+ def check_apt_requirements(requirements):
355
+ """Check if apt packages are installed and install missing ones.
356
+
357
+ Args:
358
+ requirements: List of apt package names to check and install
359
+ """
360
+ prefix = colorstr("red", "bold", "apt requirements:")
361
+ # Check which packages are missing
362
+ missing_packages = []
363
+ for package in requirements:
364
+ try:
365
+ # Use dpkg -l to check if package is installed
366
+ result = subprocess.run(["dpkg", "-l", package], capture_output=True, text=True, check=False)
367
+ # Check if package is installed (look for "ii" status)
368
+ if result.returncode != 0 or not any(
369
+ line.startswith("ii") and package in line for line in result.stdout.splitlines()
370
+ ):
371
+ missing_packages.append(package)
372
+ except Exception:
373
+ # If check fails, assume package is not installed
374
+ missing_packages.append(package)
375
+
376
+ # Install missing packages if any
377
+ if missing_packages:
378
+ LOGGER.info(
379
+ f"{prefix} Ultralytics requirement{'s' * (len(missing_packages) > 1)} {missing_packages} not found, attempting AutoUpdate..."
380
+ )
381
+ # Optionally update package list first
382
+ if is_sudo_available():
383
+ subprocess.run(["sudo", "apt", "update"], check=False)
384
+
385
+ # Build and run the install command
386
+ cmd = (["sudo"] if is_sudo_available() else []) + ["apt", "install", "-y"] + missing_packages
387
+ result = subprocess.run(cmd, check=True, capture_output=True, text=True)
388
+
389
+ LOGGER.info(f"{prefix} AutoUpdate success ✅")
390
+ LOGGER.warning(f"{prefix} {colorstr('bold', 'Restart runtime or rerun command for updates to take effect')}\n")
391
+
392
+
353
393
  @TryExcept()
354
394
  def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=(), install=True, cmds=""):
355
395
  """Check if installed dependencies meet Ultralytics YOLO models requirements and attempt to auto-update if needed.
@@ -410,7 +450,7 @@ def check_requirements(requirements=ROOT.parent / "requirements.txt", exclude=()
410
450
  if use_uv:
411
451
  base = (
412
452
  f"uv pip install --no-cache-dir {packages} {commands} "
413
- f"--index-strategy=unsafe-best-match --break-system-packages --prerelease=allow"
453
+ f"--index-strategy=unsafe-best-match --break-system-packages"
414
454
  )
415
455
  try:
416
456
  return subprocess.check_output(base, shell=True, stderr=subprocess.STDOUT, text=True)
@@ -947,8 +987,11 @@ check_torchvision() # check torch-torchvision compatibility
947
987
 
948
988
  # Define constants
949
989
  IS_PYTHON_3_8 = PYTHON_VERSION.startswith("3.8")
990
+ IS_PYTHON_3_9 = PYTHON_VERSION.startswith("3.9")
991
+ IS_PYTHON_3_10 = PYTHON_VERSION.startswith("3.10")
950
992
  IS_PYTHON_3_12 = PYTHON_VERSION.startswith("3.12")
951
993
  IS_PYTHON_3_13 = PYTHON_VERSION.startswith("3.13")
952
994
 
995
+ IS_PYTHON_MINIMUM_3_9 = check_python("3.9", hard=False)
953
996
  IS_PYTHON_MINIMUM_3_10 = check_python("3.10", hard=False)
954
997
  IS_PYTHON_MINIMUM_3_12 = check_python("3.12", hard=False)