ultralytics 8.3.117__tar.gz → 8.3.118__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 (273) hide show
  1. {ultralytics-8.3.117/ultralytics.egg-info → ultralytics-8.3.118}/PKG-INFO +1 -1
  2. {ultralytics-8.3.117 → ultralytics-8.3.118}/pyproject.toml +2 -1
  3. ultralytics-8.3.118/tests/__init__.py +22 -0
  4. ultralytics-8.3.118/tests/conftest.py +83 -0
  5. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/__init__.py +1 -1
  6. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/augment.py +3 -0
  7. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/base.py +9 -2
  8. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/dataset.py +1 -1
  9. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/engine/exporter.py +1 -4
  10. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/detect/predict.py +1 -1
  11. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/model.py +2 -3
  12. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/obb/train.py +1 -1
  13. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/pose/predict.py +1 -1
  14. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/pose/train.py +1 -1
  15. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/pose/val.py +1 -1
  16. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/segment/train.py +3 -3
  17. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/autobackend.py +2 -5
  18. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/text_model.py +97 -13
  19. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/benchmarks.py +1 -1
  20. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/downloads.py +1 -0
  21. {ultralytics-8.3.117 → ultralytics-8.3.118/ultralytics.egg-info}/PKG-INFO +1 -1
  22. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics.egg-info/SOURCES.txt +9 -0
  23. {ultralytics-8.3.117 → ultralytics-8.3.118}/LICENSE +0 -0
  24. {ultralytics-8.3.117 → ultralytics-8.3.118}/README.md +0 -0
  25. {ultralytics-8.3.117 → ultralytics-8.3.118}/setup.cfg +0 -0
  26. {ultralytics-8.3.117 → ultralytics-8.3.118}/tests/test_cli.py +0 -0
  27. {ultralytics-8.3.117 → ultralytics-8.3.118}/tests/test_cuda.py +0 -0
  28. {ultralytics-8.3.117 → ultralytics-8.3.118}/tests/test_engine.py +0 -0
  29. {ultralytics-8.3.117 → ultralytics-8.3.118}/tests/test_exports.py +0 -0
  30. {ultralytics-8.3.117 → ultralytics-8.3.118}/tests/test_integrations.py +0 -0
  31. {ultralytics-8.3.117 → ultralytics-8.3.118}/tests/test_python.py +0 -0
  32. {ultralytics-8.3.117 → ultralytics-8.3.118}/tests/test_solutions.py +0 -0
  33. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/assets/bus.jpg +0 -0
  34. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/assets/zidane.jpg +0 -0
  35. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/__init__.py +0 -0
  36. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  37. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  38. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  39. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  40. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  41. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  42. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  43. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  44. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  45. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  46. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  47. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  48. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  49. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/coco.yaml +0 -0
  50. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  51. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  52. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  53. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  54. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  55. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  56. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  57. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  58. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  59. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  60. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  61. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  62. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  63. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  64. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  65. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/signature.yaml +0 -0
  66. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  67. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/datasets/xView.yaml +0 -0
  68. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/default.yaml +0 -0
  69. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  70. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  71. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  72. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  73. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  74. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  75. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  76. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  77. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  78. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  79. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  80. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  81. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  82. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  83. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  84. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  85. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  86. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  87. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  88. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  89. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  90. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  91. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  92. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  93. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  94. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  95. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  96. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  97. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  98. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  99. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  100. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  101. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  102. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  103. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  104. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  105. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  106. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  107. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  108. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  109. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  110. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  111. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  112. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  113. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  114. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  115. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  116. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  117. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  118. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  119. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  120. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  121. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  122. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  123. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  124. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/solutions/default.yaml +0 -0
  125. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  126. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  127. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/__init__.py +0 -0
  128. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/annotator.py +0 -0
  129. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/build.py +0 -0
  130. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/converter.py +0 -0
  131. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/loaders.py +0 -0
  132. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/scripts/download_weights.sh +0 -0
  133. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/scripts/get_coco.sh +0 -0
  134. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/scripts/get_coco128.sh +0 -0
  135. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  136. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/split.py +0 -0
  137. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/split_dota.py +0 -0
  138. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/data/utils.py +0 -0
  139. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/engine/__init__.py +0 -0
  140. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/engine/model.py +0 -0
  141. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/engine/predictor.py +0 -0
  142. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/engine/results.py +0 -0
  143. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/engine/trainer.py +0 -0
  144. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/engine/tuner.py +0 -0
  145. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/engine/validator.py +0 -0
  146. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/hub/__init__.py +0 -0
  147. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/hub/auth.py +0 -0
  148. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/hub/google/__init__.py +0 -0
  149. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/hub/session.py +0 -0
  150. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/hub/utils.py +0 -0
  151. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/__init__.py +0 -0
  152. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/fastsam/__init__.py +0 -0
  153. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/fastsam/model.py +0 -0
  154. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/fastsam/predict.py +0 -0
  155. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/fastsam/utils.py +0 -0
  156. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/fastsam/val.py +0 -0
  157. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/nas/__init__.py +0 -0
  158. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/nas/model.py +0 -0
  159. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/nas/predict.py +0 -0
  160. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/nas/val.py +0 -0
  161. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/rtdetr/__init__.py +0 -0
  162. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/rtdetr/model.py +0 -0
  163. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/rtdetr/predict.py +0 -0
  164. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/rtdetr/train.py +0 -0
  165. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/rtdetr/val.py +0 -0
  166. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/__init__.py +0 -0
  167. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/amg.py +0 -0
  168. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/build.py +0 -0
  169. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/model.py +0 -0
  170. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/modules/__init__.py +0 -0
  171. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/modules/blocks.py +0 -0
  172. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/modules/decoders.py +0 -0
  173. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/modules/encoders.py +0 -0
  174. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  175. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/modules/sam.py +0 -0
  176. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  177. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/modules/transformer.py +0 -0
  178. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/modules/utils.py +0 -0
  179. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/sam/predict.py +0 -0
  180. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/utils/__init__.py +0 -0
  181. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/utils/loss.py +0 -0
  182. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/utils/ops.py +0 -0
  183. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/__init__.py +0 -0
  184. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/classify/__init__.py +0 -0
  185. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/classify/predict.py +0 -0
  186. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/classify/train.py +0 -0
  187. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/classify/val.py +0 -0
  188. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/detect/__init__.py +0 -0
  189. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/detect/train.py +0 -0
  190. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/detect/val.py +0 -0
  191. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/obb/__init__.py +0 -0
  192. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/obb/predict.py +0 -0
  193. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/obb/val.py +0 -0
  194. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/pose/__init__.py +0 -0
  195. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/segment/__init__.py +0 -0
  196. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/segment/predict.py +0 -0
  197. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/segment/val.py +0 -0
  198. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/world/__init__.py +0 -0
  199. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/world/train.py +0 -0
  200. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/world/train_world.py +0 -0
  201. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  202. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  203. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/yoloe/train.py +0 -0
  204. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  205. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/models/yolo/yoloe/val.py +0 -0
  206. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/__init__.py +0 -0
  207. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/modules/__init__.py +0 -0
  208. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/modules/activation.py +0 -0
  209. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/modules/block.py +0 -0
  210. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/modules/conv.py +0 -0
  211. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/modules/head.py +0 -0
  212. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/modules/transformer.py +0 -0
  213. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/modules/utils.py +0 -0
  214. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/nn/tasks.py +0 -0
  215. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/__init__.py +0 -0
  216. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/ai_gym.py +0 -0
  217. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/analytics.py +0 -0
  218. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/distance_calculation.py +0 -0
  219. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/heatmap.py +0 -0
  220. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/instance_segmentation.py +0 -0
  221. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/object_blurrer.py +0 -0
  222. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/object_counter.py +0 -0
  223. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/object_cropper.py +0 -0
  224. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/parking_management.py +0 -0
  225. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/queue_management.py +0 -0
  226. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/region_counter.py +0 -0
  227. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/security_alarm.py +0 -0
  228. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/solutions.py +0 -0
  229. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/speed_estimation.py +0 -0
  230. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/streamlit_inference.py +0 -0
  231. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/trackzone.py +0 -0
  232. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/solutions/vision_eye.py +0 -0
  233. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/trackers/__init__.py +0 -0
  234. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/trackers/basetrack.py +0 -0
  235. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/trackers/bot_sort.py +0 -0
  236. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/trackers/byte_tracker.py +0 -0
  237. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/trackers/track.py +0 -0
  238. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/trackers/utils/__init__.py +0 -0
  239. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/trackers/utils/gmc.py +0 -0
  240. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  241. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/trackers/utils/matching.py +0 -0
  242. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/__init__.py +0 -0
  243. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/autobatch.py +0 -0
  244. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/__init__.py +0 -0
  245. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/base.py +0 -0
  246. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/clearml.py +0 -0
  247. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/comet.py +0 -0
  248. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/dvc.py +0 -0
  249. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/hub.py +0 -0
  250. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/mlflow.py +0 -0
  251. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/neptune.py +0 -0
  252. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/raytune.py +0 -0
  253. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  254. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/callbacks/wb.py +0 -0
  255. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/checks.py +0 -0
  256. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/dist.py +0 -0
  257. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/errors.py +0 -0
  258. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/export.py +0 -0
  259. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/files.py +0 -0
  260. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/instance.py +0 -0
  261. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/loss.py +0 -0
  262. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/metrics.py +0 -0
  263. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/ops.py +0 -0
  264. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/patches.py +0 -0
  265. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/plotting.py +0 -0
  266. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/tal.py +0 -0
  267. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/torch_utils.py +0 -0
  268. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/triton.py +0 -0
  269. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics/utils/tuner.py +0 -0
  270. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics.egg-info/dependency_links.txt +0 -0
  271. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics.egg-info/entry_points.txt +0 -0
  272. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics.egg-info/requires.txt +0 -0
  273. {ultralytics-8.3.117 → ultralytics-8.3.118}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.117
3
+ Version: 8.3.118
4
4
  Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -133,7 +133,8 @@ ultralytics = "ultralytics.cfg:entrypoint"
133
133
  # Tools settings -------------------------------------------------------------------------------------------------------
134
134
  [tool.setuptools] # configuration specific to the `setuptools` build backend.
135
135
  packages = { find = { where = ["."], include = ["ultralytics", "ultralytics.*"] } }
136
- package-data = { "ultralytics" = ["**/*.yaml", "**/*.sh"], "ultralytics.assets" = ["*.jpg"] }
136
+ # Tests included below for checking Conda builds in https://github.com/conda-forge/ultralytics-feedstock
137
+ package-data = { "ultralytics" = ["**/*.yaml", "**/*.sh", "../tests/*.py"], "ultralytics.assets" = ["*.jpg"] }
137
138
 
138
139
  [tool.setuptools.dynamic]
139
140
  version = { attr = "ultralytics.__version__" }
@@ -0,0 +1,22 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ from ultralytics.utils import ASSETS, ROOT, WEIGHTS_DIR, checks
4
+
5
+ # Constants used in tests
6
+ MODEL = WEIGHTS_DIR / "path with spaces" / "yolo11n.pt" # test spaces in path
7
+ CFG = "yolo11n.yaml"
8
+ SOURCE = ASSETS / "bus.jpg"
9
+ SOURCES_LIST = [ASSETS / "bus.jpg", ASSETS, ASSETS / "*", ASSETS / "**/*.jpg"]
10
+ TMP = (ROOT / "../tests/tmp").resolve() # temp directory for test files
11
+ CUDA_IS_AVAILABLE = checks.cuda_is_available()
12
+ CUDA_DEVICE_COUNT = checks.cuda_device_count()
13
+
14
+ __all__ = (
15
+ "MODEL",
16
+ "CFG",
17
+ "SOURCE",
18
+ "SOURCES_LIST",
19
+ "TMP",
20
+ "CUDA_IS_AVAILABLE",
21
+ "CUDA_DEVICE_COUNT",
22
+ )
@@ -0,0 +1,83 @@
1
+ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
+
3
+ import shutil
4
+ from pathlib import Path
5
+
6
+ from tests import TMP
7
+
8
+
9
+ def pytest_addoption(parser):
10
+ """
11
+ Add custom command-line options to pytest.
12
+
13
+ Args:
14
+ parser (pytest.config.Parser): The pytest parser object for adding custom command-line options.
15
+
16
+ Returns:
17
+ (None)
18
+ """
19
+ parser.addoption("--slow", action="store_true", default=False, help="Run slow tests")
20
+
21
+
22
+ def pytest_collection_modifyitems(config, items):
23
+ """
24
+ Modify the list of test items to exclude tests marked as slow if the --slow option is not specified.
25
+
26
+ Args:
27
+ config (pytest.config.Config): The pytest configuration object that provides access to command-line options.
28
+ items (list): The list of collected pytest item objects to be modified based on the presence of --slow option.
29
+
30
+ Returns:
31
+ (None): The function modifies the 'items' list in place.
32
+ """
33
+ if not config.getoption("--slow"):
34
+ # Remove the item entirely from the list of test items if it's marked as 'slow'
35
+ items[:] = [item for item in items if "slow" not in item.keywords]
36
+
37
+
38
+ def pytest_sessionstart(session):
39
+ """
40
+ Initialize session configurations for pytest.
41
+
42
+ This function is automatically called by pytest after the 'Session' object has been created but before performing
43
+ test collection. It sets the initial seeds and prepares the temporary directory for the test session.
44
+
45
+ Args:
46
+ session (pytest.Session): The pytest session object.
47
+
48
+ Returns:
49
+ (None)
50
+ """
51
+ from ultralytics.utils.torch_utils import init_seeds
52
+
53
+ init_seeds()
54
+ shutil.rmtree(TMP, ignore_errors=True) # delete any existing tests/tmp directory
55
+ TMP.mkdir(parents=True, exist_ok=True) # create a new empty directory
56
+
57
+
58
+ def pytest_terminal_summary(terminalreporter, exitstatus, config):
59
+ """
60
+ Cleanup operations after pytest session.
61
+
62
+ This function is automatically called by pytest at the end of the entire test session. It removes certain files
63
+ and directories used during testing.
64
+
65
+ Args:
66
+ terminalreporter (pytest.terminal.TerminalReporter): The terminal reporter object used for terminal output.
67
+ exitstatus (int): The exit status of the test run.
68
+ config (pytest.config.Config): The pytest config object.
69
+
70
+ Returns:
71
+ (None)
72
+ """
73
+ from ultralytics.utils import WEIGHTS_DIR
74
+
75
+ # Remove files
76
+ models = [path for x in ["*.onnx", "*.torchscript"] for path in WEIGHTS_DIR.rglob(x)]
77
+ for file in ["decelera_portrait_min.mov", "bus.jpg", "yolo11n.onnx", "yolo11n.torchscript"] + models:
78
+ Path(file).unlink(missing_ok=True)
79
+
80
+ # Remove directories
81
+ models = [path for x in ["*.mlpackage", "*_openvino_model"] for path in WEIGHTS_DIR.rglob(x)]
82
+ for directory in [WEIGHTS_DIR / "path with spaces", TMP.parents[1] / ".pytest_cache", TMP] + models:
83
+ shutil.rmtree(directory, ignore_errors=True)
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.117"
3
+ __version__ = "8.3.118"
4
4
 
5
5
  import os
6
6
 
@@ -1586,6 +1586,9 @@ class LetterBox:
1586
1586
 
1587
1587
  if shape[::-1] != new_unpad: # resize
1588
1588
  img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR)
1589
+ if img.ndim == 2:
1590
+ img = img[..., None]
1591
+
1589
1592
  top, bottom = int(round(dh - 0.1)) if self.center else 0, int(round(dh + 0.1))
1590
1593
  left, right = int(round(dw - 0.1)) if self.center else 0, int(round(dw + 0.1))
1591
1594
  h, w, c = img.shape
@@ -33,6 +33,7 @@ class BaseDataset(Dataset):
33
33
  single_cls (bool): Whether to treat all objects as a single class.
34
34
  prefix (str): Prefix to print in log messages.
35
35
  fraction (float): Fraction of dataset to utilize.
36
+ cv2_flag (int): OpenCV flag for reading images.
36
37
  im_files (List[str]): List of image file paths.
37
38
  labels (List[Dict]): List of label data dictionaries.
38
39
  ni (int): Number of images in the dataset.
@@ -79,6 +80,7 @@ class BaseDataset(Dataset):
79
80
  single_cls=False,
80
81
  classes=None,
81
82
  fraction=1.0,
83
+ channels=3,
82
84
  ):
83
85
  """
84
86
  Initialize BaseDataset with given configuration and options.
@@ -97,6 +99,7 @@ class BaseDataset(Dataset):
97
99
  single_cls (bool, optional): If True, single class training is used.
98
100
  classes (list, optional): List of included classes.
99
101
  fraction (float, optional): Fraction of dataset to utilize.
102
+ channels (int, optional): Number of channels in the images (1 for grayscale, 3 for RGB).
100
103
  """
101
104
  super().__init__()
102
105
  self.img_path = img_path
@@ -105,6 +108,8 @@ class BaseDataset(Dataset):
105
108
  self.single_cls = single_cls
106
109
  self.prefix = prefix
107
110
  self.fraction = fraction
111
+ self.channels = channels
112
+ self.cv2_flag = cv2.IMREAD_GRAYSCALE if channels == 1 else cv2.IMREAD_COLOR
108
113
  self.im_files = self.get_img_files(self.img_path)
109
114
  self.labels = self.get_labels()
110
115
  self.update_labels(include_class=classes) # single_cls and include_class
@@ -224,9 +229,9 @@ class BaseDataset(Dataset):
224
229
  except Exception as e:
225
230
  LOGGER.warning(f"{self.prefix}Removing corrupt *.npy image file {fn} due to: {e}")
226
231
  Path(fn).unlink(missing_ok=True)
227
- im = imread(f) # BGR
232
+ im = imread(f, flags=self.cv2_flag) # BGR
228
233
  else: # read image
229
- im = imread(f) # BGR
234
+ im = imread(f, flags=self.cv2_flag) # BGR
230
235
  if im is None:
231
236
  raise FileNotFoundError(f"Image Not Found {f}")
232
237
 
@@ -238,6 +243,8 @@ class BaseDataset(Dataset):
238
243
  im = cv2.resize(im, (w, h), interpolation=cv2.INTER_LINEAR)
239
244
  elif not (h0 == w0 == self.imgsz): # resize by stretching image to square imgsz
240
245
  im = cv2.resize(im, (self.imgsz, self.imgsz), interpolation=cv2.INTER_LINEAR)
246
+ if im.ndim == 2:
247
+ im = im[..., None]
241
248
 
242
249
  # Add to buffer if training with augmentations
243
250
  if self.augment:
@@ -84,7 +84,7 @@ class YOLODataset(BaseDataset):
84
84
  self.use_obb = task == "obb"
85
85
  self.data = data
86
86
  assert not (self.use_segments and self.use_keypoints), "Can not use both segments and keypoints."
87
- super().__init__(*args, **kwargs)
87
+ super().__init__(*args, channels=self.data["channels"], **kwargs)
88
88
 
89
89
  def cache_labels(self, path=Path("./labels.cache")):
90
90
  """
@@ -238,9 +238,6 @@ class Exporter:
238
238
  _callbacks (dict, optional): Dictionary of callback functions.
239
239
  """
240
240
  self.args = get_cfg(cfg, overrides)
241
- if self.args.format.lower() in {"coreml", "mlmodel"}: # fix attempt for protobuf<3.20.x errors
242
- os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "python" # must run before TensorBoard callback
243
-
244
241
  self.callbacks = _callbacks or callbacks.get_default_callbacks()
245
242
  callbacks.add_integration_callbacks(self)
246
243
 
@@ -703,7 +700,7 @@ class Exporter:
703
700
 
704
701
  @try_export
705
702
  def export_mnn(self, prefix=colorstr("MNN:")):
706
- """YOLOv8 MNN export using MNN https://github.com/alibaba/MNN."""
703
+ """YOLO MNN export using MNN https://github.com/alibaba/MNN."""
707
704
  f_onnx, _ = self.export_onnx() # get onnx model first
708
705
 
709
706
  check_requirements("MNN>=2.9.6")
@@ -47,7 +47,7 @@ class DetectionPredictor(BasePredictor):
47
47
  (list): List of Results objects containing the post-processed predictions.
48
48
 
49
49
  Examples:
50
- >>> predictor = DetectionPredictor(overrides=dict(model="yolov8n.pt"))
50
+ >>> predictor = DetectionPredictor(overrides=dict(model="yolo11n.pt"))
51
51
  >>> results = predictor.predict("path/to/image.jpg")
52
52
  >>> processed_results = predictor.postprocess(preds, img, orig_imgs)
53
53
  """
@@ -29,16 +29,15 @@ class YOLO(Model):
29
29
  (YOLOWorld or YOLOE) based on the model filename.
30
30
 
31
31
  Args:
32
- model (str | Path): Model name or path to model file, i.e. 'yolo11n.pt', 'yolov8n.yaml'.
32
+ model (str | Path): Model name or path to model file, i.e. 'yolo11n.pt', 'yolo11n.yaml'.
33
33
  task (str | None): YOLO task specification, i.e. 'detect', 'segment', 'classify', 'pose', 'obb'.
34
34
  Defaults to auto-detection based on model.
35
35
  verbose (bool): Display model info on load.
36
36
 
37
37
  Examples:
38
38
  >>> from ultralytics import YOLO
39
- >>> model = YOLO("yolov8n.pt") # load a pretrained YOLOv8n detection model
40
- >>> model = YOLO("yolov8n-seg.pt") # load a pretrained YOLOv8n segmentation model
41
39
  >>> model = YOLO("yolo11n.pt") # load a pretrained YOLOv11n detection model
40
+ >>> model = YOLO("yolo11n-seg.pt") # load a pretrained YOLO11n segmentation model
42
41
  """
43
42
  path = Path(model)
44
43
  if "-world" in path.stem and path.suffix in {".pt", ".yaml", ".yml"}: # if YOLOWorld PyTorch model
@@ -65,7 +65,7 @@ class OBBTrainer(yolo.detect.DetectionTrainer):
65
65
 
66
66
  Examples:
67
67
  >>> trainer = OBBTrainer()
68
- >>> model = trainer.get_model(cfg="yolov8n-obb.yaml", weights="yolov8n-obb.pt")
68
+ >>> model = trainer.get_model(cfg="yolo11n-obb.yaml", weights="yolo11n-obb.pt")
69
69
  """
70
70
  model = OBBModel(cfg, nc=self.data["nc"], ch=self.data["channels"], verbose=verbose and RANK == -1)
71
71
  if weights:
@@ -41,7 +41,7 @@ class PosePredictor(DetectionPredictor):
41
41
  Examples:
42
42
  >>> from ultralytics.utils import ASSETS
43
43
  >>> from ultralytics.models.yolo.pose import PosePredictor
44
- >>> args = dict(model="yolov8n-pose.pt", source=ASSETS)
44
+ >>> args = dict(model="yolo11n-pose.pt", source=ASSETS)
45
45
  >>> predictor = PosePredictor(overrides=args)
46
46
  >>> predictor.predict_cli()
47
47
  """
@@ -53,7 +53,7 @@ class PoseTrainer(yolo.detect.DetectionTrainer):
53
53
 
54
54
  Examples:
55
55
  >>> from ultralytics.models.yolo.pose import PoseTrainer
56
- >>> args = dict(model="yolov8n-pose.pt", data="coco8-pose.yaml", epochs=3)
56
+ >>> args = dict(model="yolo11n-pose.pt", data="coco8-pose.yaml", epochs=3)
57
57
  >>> trainer = PoseTrainer(overrides=args)
58
58
  >>> trainer.train()
59
59
  """
@@ -62,7 +62,7 @@ class PoseValidator(DetectionValidator):
62
62
 
63
63
  Examples:
64
64
  >>> from ultralytics.models.yolo.pose import PoseValidator
65
- >>> args = dict(model="yolov8n-pose.pt", data="coco8-pose.yaml")
65
+ >>> args = dict(model="yolo11n-pose.pt", data="coco8-pose.yaml")
66
66
  >>> validator = PoseValidator(args=args)
67
67
  >>> validator()
68
68
 
@@ -39,7 +39,7 @@ class SegmentationTrainer(yolo.detect.DetectionTrainer):
39
39
 
40
40
  Examples:
41
41
  >>> from ultralytics.models.yolo.segment import SegmentationTrainer
42
- >>> args = dict(model="yolov8n-seg.pt", data="coco8-seg.yaml", epochs=3)
42
+ >>> args = dict(model="yolo11n-seg.pt", data="coco8-seg.yaml", epochs=3)
43
43
  >>> trainer = SegmentationTrainer(overrides=args)
44
44
  >>> trainer.train()
45
45
  """
@@ -62,8 +62,8 @@ class SegmentationTrainer(yolo.detect.DetectionTrainer):
62
62
 
63
63
  Examples:
64
64
  >>> trainer = SegmentationTrainer()
65
- >>> model = trainer.get_model(cfg="yolov8n-seg.yaml")
66
- >>> model = trainer.get_model(weights="yolov8n-seg.pt", verbose=False)
65
+ >>> model = trainer.get_model(cfg="yolo11n-seg.yaml")
66
+ >>> model = trainer.get_model(weights="yolo11n-seg.pt", verbose=False)
67
67
  """
68
68
  model = SegmentationModel(cfg, nc=self.data["nc"], ch=self.data["channels"], verbose=verbose and RANK == -1)
69
69
  if weights:
@@ -14,7 +14,7 @@ import torch
14
14
  import torch.nn as nn
15
15
  from PIL import Image
16
16
 
17
- from ultralytics.utils import ARM64, IS_JETSON, IS_RASPBERRYPI, LINUX, LOGGER, PYTHON_VERSION, ROOT, yaml_load
17
+ from ultralytics.utils import ARM64, IS_JETSON, LINUX, LOGGER, PYTHON_VERSION, ROOT, yaml_load
18
18
  from ultralytics.utils.checks import check_requirements, check_suffix, check_version, check_yaml, is_rockchip
19
19
  from ultralytics.utils.downloads import attempt_download_asset, is_url
20
20
 
@@ -90,7 +90,7 @@ class AutoBackend(nn.Module):
90
90
  _model_type: Determine the model type from file path.
91
91
 
92
92
  Examples:
93
- >>> model = AutoBackend(weights="yolov8n.pt", device="cuda")
93
+ >>> model = AutoBackend(weights="yolo11n.pt", device="cuda")
94
94
  >>> results = model(img)
95
95
  """
96
96
 
@@ -207,9 +207,6 @@ class AutoBackend(nn.Module):
207
207
  elif onnx or imx:
208
208
  LOGGER.info(f"Loading {w} for ONNX Runtime inference...")
209
209
  check_requirements(("onnx", "onnxruntime-gpu" if cuda else "onnxruntime"))
210
- if IS_RASPBERRYPI or IS_JETSON:
211
- # Fix 'numpy.linalg._umath_linalg' has no attribute '_ilp64' for TF SavedModel on RPi and Jetson
212
- check_requirements("numpy==1.23.5")
213
210
  import onnxruntime
214
211
 
215
212
  providers = ["CPUExecutionProvider"]
@@ -15,18 +15,6 @@ except ImportError:
15
15
  checks.check_requirements("git+https://github.com/ultralytics/CLIP.git")
16
16
  import clip
17
17
 
18
- try:
19
- import warnings
20
-
21
- # Suppress 'timm.models.layers is deprecated, please import via timm.layers' warning from mobileclip usage
22
- with warnings.catch_warnings():
23
- warnings.filterwarnings("ignore", category=FutureWarning)
24
- import mobileclip
25
- except ImportError:
26
- # Ultralytics fork preferred since Apple MobileCLIP repo has incorrect version of torchvision
27
- checks.check_requirements("git+https://github.com/ultralytics/mobileclip.git")
28
- import mobileclip
29
-
30
18
 
31
19
  class TextModel(nn.Module):
32
20
  """
@@ -190,6 +178,18 @@ class MobileCLIP(TextModel):
190
178
  >>> tokens = model.tokenize(["a photo of a cat", "a photo of a dog"])
191
179
  >>> features = model.encode_text(tokens)
192
180
  """
181
+ try:
182
+ import warnings
183
+
184
+ # Suppress 'timm.models.layers is deprecated, please import via timm.layers' warning from mobileclip usage
185
+ with warnings.catch_warnings():
186
+ warnings.filterwarnings("ignore", category=FutureWarning)
187
+ import mobileclip
188
+ except ImportError:
189
+ # Ultralytics fork preferred since Apple MobileCLIP repo has incorrect version of torchvision
190
+ checks.check_requirements("git+https://github.com/ultralytics/mobileclip.git")
191
+ import mobileclip
192
+
193
193
  super().__init__()
194
194
  config = self.config_size_map[size]
195
195
  file = f"mobileclip_{size}.pt"
@@ -243,6 +243,90 @@ class MobileCLIP(TextModel):
243
243
  return text_features
244
244
 
245
245
 
246
+ class MobileCLIPTS(TextModel):
247
+ """
248
+ Load a TorchScript traced version of MobileCLIP.
249
+
250
+ This class implements the TextModel interface using Apple's MobileCLIP model, providing efficient text encoding
251
+ capabilities for vision-language tasks.
252
+
253
+ Attributes:
254
+ encoder (mobileclip.model.MobileCLIP): The loaded MobileCLIP text encoder.
255
+ tokenizer (callable): Tokenizer function for processing text inputs.
256
+ device (torch.device): Device where the model is loaded.
257
+
258
+ Methods:
259
+ tokenize: Convert input texts to MobileCLIP tokens.
260
+ encode_text: Encode tokenized texts into normalized feature vectors.
261
+
262
+ Examples:
263
+ >>> device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
264
+ >>> text_encoder = MobileCLIP(device=device)
265
+ >>> tokens = text_encoder.tokenize(["a photo of a cat", "a photo of a dog"])
266
+ >>> features = text_encoder.encode_text(tokens)
267
+ """
268
+
269
+ def __init__(self, device):
270
+ """
271
+ Initialize the MobileCLIP text encoder.
272
+
273
+ This class implements the TextModel interface using Apple's MobileCLIP model for efficient text encoding.
274
+
275
+ Args:
276
+ device (torch.device): Device to load the model on.
277
+
278
+ Examples:
279
+ >>> from ultralytics.nn.modules import MobileCLIP
280
+ >>> import torch
281
+ >>> model = MobileCLIP(device=torch.device("cpu"))
282
+ >>> tokens = model.tokenize(["a photo of a cat", "a photo of a dog"])
283
+ >>> features = model.encode_text(tokens)
284
+ """
285
+ super().__init__()
286
+ from ultralytics.utils.downloads import attempt_download_asset
287
+
288
+ self.encoder = torch.jit.load(attempt_download_asset("mobileclip_blt.ts"), map_location=device)
289
+ self.tokenizer = clip.clip.tokenize
290
+ self.device = device
291
+
292
+ def tokenize(self, texts):
293
+ """
294
+ Convert input texts to MobileCLIP tokens.
295
+
296
+ Args:
297
+ texts (list[str]): List of text strings to tokenize.
298
+
299
+ Returns:
300
+ (torch.Tensor): Tokenized text inputs with shape (batch_size, sequence_length).
301
+
302
+ Examples:
303
+ >>> model = MobileCLIP("cpu")
304
+ >>> tokens = model.tokenize(["a photo of a cat", "a photo of a dog"])
305
+ """
306
+ return self.tokenizer(texts).to(self.device)
307
+
308
+ @smart_inference_mode()
309
+ def encode_text(self, texts, dtype=torch.float32):
310
+ """
311
+ Encode tokenized texts into normalized feature vectors.
312
+
313
+ Args:
314
+ texts (torch.Tensor): Tokenized text inputs.
315
+ dtype (torch.dtype, optional): Data type for output features.
316
+
317
+ Returns:
318
+ (torch.Tensor): Normalized text feature vectors with L2 normalization applied.
319
+
320
+ Examples:
321
+ >>> model = MobileCLIP(device="cpu")
322
+ >>> tokens = model.tokenize(["a photo of a cat", "a photo of a dog"])
323
+ >>> features = model.encode_text(tokens)
324
+ >>> features.shape
325
+ torch.Size([2, 512]) # Actual dimension depends on model size
326
+ """
327
+ return self.encoder(texts)
328
+
329
+
246
330
  def build_text_model(variant, device=None):
247
331
  """
248
332
  Build a text encoding model based on the specified variant.
@@ -262,6 +346,6 @@ def build_text_model(variant, device=None):
262
346
  if base == "clip":
263
347
  return CLIP(size, device)
264
348
  elif base == "mobileclip":
265
- return MobileCLIP(size, device)
349
+ return MobileCLIPTS(device)
266
350
  else:
267
351
  raise ValueError(f"Unrecognized base model: '{base}'. Supported base models: 'clip', 'mobileclip'.")
@@ -136,7 +136,7 @@ def benchmark(
136
136
  assert not is_end2end
137
137
  assert not isinstance(model, YOLOWorld), "YOLOWorldv2 IMX exports not supported"
138
138
  assert model.task == "detect", "IMX only supported for detection task"
139
- assert "C2f" in model.__str__(), "IMX only supported for YOLOv8"
139
+ assert "C2f" in model.__str__(), "IMX only supported for YOLOv8" # TODO: enable for YOLO11
140
140
  if i == 15: # RKNN
141
141
  assert not isinstance(model, YOLOWorld), "YOLOWorldv2 RKNN exports not supported yet"
142
142
  assert not is_end2end, "End-to-end models not supported by RKNN yet"
@@ -34,6 +34,7 @@ GITHUB_ASSETS_NAMES = frozenset(
34
34
  + [f"FastSAM-{k}.pt" for k in "sx"]
35
35
  + [f"rtdetr-{k}.pt" for k in "lx"]
36
36
  + ["mobile_sam.pt"]
37
+ + ["mobileclip_blt.ts"]
37
38
  + ["calibration_image_sample_data_20x128x128x3_float32.npy.zip"]
38
39
  )
39
40
  GITHUB_ASSETS_STEMS = frozenset(k.rsplit(".", 1)[0] for k in GITHUB_ASSETS_NAMES)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.117
3
+ Version: 8.3.118
4
4
  Summary: Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
6
6
  Maintainer-email: Ultralytics <hello@ultralytics.com>
@@ -15,6 +15,15 @@ ultralytics.egg-info/dependency_links.txt
15
15
  ultralytics.egg-info/entry_points.txt
16
16
  ultralytics.egg-info/requires.txt
17
17
  ultralytics.egg-info/top_level.txt
18
+ ultralytics/../tests/__init__.py
19
+ ultralytics/../tests/conftest.py
20
+ ultralytics/../tests/test_cli.py
21
+ ultralytics/../tests/test_cuda.py
22
+ ultralytics/../tests/test_engine.py
23
+ ultralytics/../tests/test_exports.py
24
+ ultralytics/../tests/test_integrations.py
25
+ ultralytics/../tests/test_python.py
26
+ ultralytics/../tests/test_solutions.py
18
27
  ultralytics/assets/bus.jpg
19
28
  ultralytics/assets/zidane.jpg
20
29
  ultralytics/cfg/__init__.py
File without changes
File without changes
File without changes