ultralytics 8.3.160__tar.gz → 8.3.161__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 (278) hide show
  1. {ultralytics-8.3.160/ultralytics.egg-info → ultralytics-8.3.161}/PKG-INFO +1 -1
  2. {ultralytics-8.3.160 → ultralytics-8.3.161}/tests/test_python.py +2 -1
  3. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/__init__.py +1 -1
  4. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/Argoverse.yaml +1 -1
  5. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/DOTAv1.5.yaml +1 -1
  6. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/DOTAv1.yaml +1 -1
  7. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +1 -1
  8. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/HomeObjects-3K.yaml +1 -1
  9. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/ImageNet.yaml +1 -1
  10. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/Objects365.yaml +1 -1
  11. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/SKU-110K.yaml +1 -1
  12. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/VOC.yaml +1 -1
  13. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/VisDrone.yaml +6 -3
  14. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/african-wildlife.yaml +1 -1
  15. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/brain-tumor.yaml +1 -1
  16. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/carparts-seg.yaml +1 -1
  17. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/coco-pose.yaml +1 -1
  18. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/coco.yaml +1 -1
  19. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/coco128-seg.yaml +1 -1
  20. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/coco128.yaml +1 -1
  21. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/coco8-grayscale.yaml +1 -1
  22. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/coco8-multispectral.yaml +1 -1
  23. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/coco8-pose.yaml +1 -1
  24. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/coco8-seg.yaml +1 -1
  25. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/coco8.yaml +1 -1
  26. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/crack-seg.yaml +1 -1
  27. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/dog-pose.yaml +1 -1
  28. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/dota8-multispectral.yaml +1 -1
  29. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/dota8.yaml +1 -1
  30. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/hand-keypoints.yaml +1 -1
  31. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/lvis.yaml +1 -1
  32. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/medical-pills.yaml +1 -1
  33. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/open-images-v7.yaml +1 -1
  34. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/package-seg.yaml +1 -1
  35. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/signature.yaml +1 -1
  36. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/tiger-pose.yaml +1 -1
  37. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/datasets/xView.yaml +1 -1
  38. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/converter.py +3 -5
  39. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/dataset.py +1 -1
  40. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/split.py +1 -1
  41. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/engine/exporter.py +10 -1
  42. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/engine/results.py +1 -1
  43. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/world/train_world.py +6 -6
  44. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/autobackend.py +7 -1
  45. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/similarity_search.py +11 -12
  46. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/solutions.py +53 -54
  47. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/metrics.py +6 -6
  48. {ultralytics-8.3.160 → ultralytics-8.3.161/ultralytics.egg-info}/PKG-INFO +1 -1
  49. {ultralytics-8.3.160 → ultralytics-8.3.161}/LICENSE +0 -0
  50. {ultralytics-8.3.160 → ultralytics-8.3.161}/README.md +0 -0
  51. {ultralytics-8.3.160 → ultralytics-8.3.161}/pyproject.toml +0 -0
  52. {ultralytics-8.3.160 → ultralytics-8.3.161}/setup.cfg +0 -0
  53. {ultralytics-8.3.160 → ultralytics-8.3.161}/tests/__init__.py +0 -0
  54. {ultralytics-8.3.160 → ultralytics-8.3.161}/tests/conftest.py +0 -0
  55. {ultralytics-8.3.160 → ultralytics-8.3.161}/tests/test_cli.py +0 -0
  56. {ultralytics-8.3.160 → ultralytics-8.3.161}/tests/test_cuda.py +0 -0
  57. {ultralytics-8.3.160 → ultralytics-8.3.161}/tests/test_engine.py +0 -0
  58. {ultralytics-8.3.160 → ultralytics-8.3.161}/tests/test_exports.py +0 -0
  59. {ultralytics-8.3.160 → ultralytics-8.3.161}/tests/test_integrations.py +0 -0
  60. {ultralytics-8.3.160 → ultralytics-8.3.161}/tests/test_solutions.py +0 -0
  61. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/assets/bus.jpg +0 -0
  62. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/assets/zidane.jpg +0 -0
  63. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/__init__.py +0 -0
  64. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/default.yaml +0 -0
  65. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  66. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  67. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  68. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  69. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  70. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  71. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  72. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  73. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  74. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  75. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  76. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  77. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  78. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  79. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  80. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  81. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  82. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  83. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  84. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  85. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  86. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  87. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  88. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  89. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  90. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  91. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  92. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  93. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  94. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  95. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  96. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  97. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  98. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  99. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  100. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  101. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  102. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  103. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  104. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  105. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  106. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  107. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  108. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  109. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  110. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  111. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  112. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  113. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  114. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  115. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  116. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  117. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  118. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  119. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  120. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  121. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  122. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/__init__.py +0 -0
  123. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/annotator.py +0 -0
  124. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/augment.py +0 -0
  125. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/base.py +0 -0
  126. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/build.py +0 -0
  127. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/loaders.py +0 -0
  128. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/scripts/download_weights.sh +0 -0
  129. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/scripts/get_coco.sh +0 -0
  130. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/scripts/get_coco128.sh +0 -0
  131. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  132. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/split_dota.py +0 -0
  133. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/data/utils.py +0 -0
  134. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/engine/__init__.py +0 -0
  135. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/engine/model.py +0 -0
  136. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/engine/predictor.py +0 -0
  137. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/engine/trainer.py +0 -0
  138. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/engine/tuner.py +0 -0
  139. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/engine/validator.py +0 -0
  140. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/hub/__init__.py +0 -0
  141. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/hub/auth.py +0 -0
  142. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/hub/google/__init__.py +0 -0
  143. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/hub/session.py +0 -0
  144. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/hub/utils.py +0 -0
  145. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/__init__.py +0 -0
  146. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/fastsam/__init__.py +0 -0
  147. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/fastsam/model.py +0 -0
  148. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/fastsam/predict.py +0 -0
  149. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/fastsam/utils.py +0 -0
  150. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/fastsam/val.py +0 -0
  151. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/nas/__init__.py +0 -0
  152. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/nas/model.py +0 -0
  153. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/nas/predict.py +0 -0
  154. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/nas/val.py +0 -0
  155. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/rtdetr/__init__.py +0 -0
  156. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/rtdetr/model.py +0 -0
  157. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/rtdetr/predict.py +0 -0
  158. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/rtdetr/train.py +0 -0
  159. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/rtdetr/val.py +0 -0
  160. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/__init__.py +0 -0
  161. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/amg.py +0 -0
  162. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/build.py +0 -0
  163. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/model.py +0 -0
  164. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/modules/__init__.py +0 -0
  165. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/modules/blocks.py +0 -0
  166. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/modules/decoders.py +0 -0
  167. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/modules/encoders.py +0 -0
  168. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  169. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/modules/sam.py +0 -0
  170. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  171. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/modules/transformer.py +0 -0
  172. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/modules/utils.py +0 -0
  173. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/sam/predict.py +0 -0
  174. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/utils/__init__.py +0 -0
  175. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/utils/loss.py +0 -0
  176. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/utils/ops.py +0 -0
  177. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/__init__.py +0 -0
  178. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/classify/__init__.py +0 -0
  179. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/classify/predict.py +0 -0
  180. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/classify/train.py +0 -0
  181. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/classify/val.py +0 -0
  182. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/detect/__init__.py +0 -0
  183. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/detect/predict.py +0 -0
  184. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/detect/train.py +0 -0
  185. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/detect/val.py +0 -0
  186. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/model.py +0 -0
  187. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/obb/__init__.py +0 -0
  188. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/obb/predict.py +0 -0
  189. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/obb/train.py +0 -0
  190. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/obb/val.py +0 -0
  191. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/pose/__init__.py +0 -0
  192. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/pose/predict.py +0 -0
  193. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/pose/train.py +0 -0
  194. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/pose/val.py +0 -0
  195. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/segment/__init__.py +0 -0
  196. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/segment/predict.py +0 -0
  197. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/segment/train.py +0 -0
  198. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/segment/val.py +0 -0
  199. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/world/__init__.py +0 -0
  200. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/world/train.py +0 -0
  201. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  202. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  203. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/yoloe/train.py +0 -0
  204. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  205. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/models/yolo/yoloe/val.py +0 -0
  206. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/__init__.py +0 -0
  207. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/modules/__init__.py +0 -0
  208. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/modules/activation.py +0 -0
  209. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/modules/block.py +0 -0
  210. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/modules/conv.py +0 -0
  211. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/modules/head.py +0 -0
  212. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/modules/transformer.py +0 -0
  213. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/modules/utils.py +0 -0
  214. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/tasks.py +0 -0
  215. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/nn/text_model.py +0 -0
  216. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/__init__.py +0 -0
  217. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/ai_gym.py +0 -0
  218. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/analytics.py +0 -0
  219. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/config.py +0 -0
  220. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/distance_calculation.py +0 -0
  221. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/heatmap.py +0 -0
  222. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/instance_segmentation.py +0 -0
  223. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/object_blurrer.py +0 -0
  224. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/object_counter.py +0 -0
  225. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/object_cropper.py +0 -0
  226. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/parking_management.py +0 -0
  227. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/queue_management.py +0 -0
  228. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/region_counter.py +0 -0
  229. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/security_alarm.py +0 -0
  230. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/speed_estimation.py +0 -0
  231. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/streamlit_inference.py +0 -0
  232. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/templates/similarity-search.html +0 -0
  233. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/trackzone.py +0 -0
  234. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/solutions/vision_eye.py +0 -0
  235. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/trackers/__init__.py +0 -0
  236. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/trackers/basetrack.py +0 -0
  237. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/trackers/bot_sort.py +0 -0
  238. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/trackers/byte_tracker.py +0 -0
  239. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/trackers/track.py +0 -0
  240. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/trackers/utils/__init__.py +0 -0
  241. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/trackers/utils/gmc.py +0 -0
  242. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  243. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/trackers/utils/matching.py +0 -0
  244. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/__init__.py +0 -0
  245. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/autobatch.py +0 -0
  246. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/autodevice.py +0 -0
  247. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/benchmarks.py +0 -0
  248. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/__init__.py +0 -0
  249. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/base.py +0 -0
  250. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/clearml.py +0 -0
  251. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/comet.py +0 -0
  252. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/dvc.py +0 -0
  253. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/hub.py +0 -0
  254. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/mlflow.py +0 -0
  255. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/neptune.py +0 -0
  256. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/raytune.py +0 -0
  257. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  258. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/callbacks/wb.py +0 -0
  259. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/checks.py +0 -0
  260. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/dist.py +0 -0
  261. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/downloads.py +0 -0
  262. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/errors.py +0 -0
  263. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/export.py +0 -0
  264. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/files.py +0 -0
  265. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/instance.py +0 -0
  266. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/loss.py +0 -0
  267. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/ops.py +0 -0
  268. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/patches.py +0 -0
  269. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/plotting.py +0 -0
  270. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/tal.py +0 -0
  271. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/torch_utils.py +0 -0
  272. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/triton.py +0 -0
  273. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics/utils/tuner.py +0 -0
  274. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics.egg-info/SOURCES.txt +0 -0
  275. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics.egg-info/dependency_links.txt +0 -0
  276. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics.egg-info/entry_points.txt +0 -0
  277. {ultralytics-8.3.160 → ultralytics-8.3.161}/ultralytics.egg-info/requires.txt +0 -0
  278. {ultralytics-8.3.160 → ultralytics-8.3.161}/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.160
3
+ Version: 8.3.161
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>
@@ -16,6 +16,7 @@ from tests import CFG, MODEL, MODELS, SOURCE, SOURCES_LIST, TASK_MODEL_DATA, TMP
16
16
  from ultralytics import RTDETR, YOLO
17
17
  from ultralytics.cfg import TASK2DATA, TASKS
18
18
  from ultralytics.data.build import load_inference_source
19
+ from ultralytics.data.utils import check_det_dataset
19
20
  from ultralytics.utils import (
20
21
  ARM64,
21
22
  ASSETS,
@@ -720,7 +721,7 @@ def test_grayscale(task: str, model: str, data: str) -> None:
720
721
  if task == "classify": # not support grayscale classification yet
721
722
  return
722
723
  grayscale_data = Path(TMP) / f"{Path(data).stem}-grayscale.yaml"
723
- data = YAML.load(checks.check_file(data))
724
+ data = check_det_dataset(data)
724
725
  data["channels"] = 1 # add additional channels key for grayscale
725
726
  YAML.save(grayscale_data, data)
726
727
  # remove npy files in train/val splits if exists, might be created by previous tests
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.160"
3
+ __version__ = "8.3.161"
4
4
 
5
5
  import os
6
6
 
@@ -9,7 +9,7 @@
9
9
  # └── Argoverse ← downloads here (31.5 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/Argoverse # dataset root dir
12
+ path: Argoverse # dataset root dir
13
13
  train: Argoverse-1.1/images/train/ # train images (relative to 'path') 39384 images
14
14
  val: Argoverse-1.1/images/val/ # val images (relative to 'path') 15062 images
15
15
  test: Argoverse-1.1/images/test/ # test images (optional) https://eval.ai/web/challenges/challenge-page/800/overview
@@ -9,7 +9,7 @@
9
9
  # └── dota1.5 ← downloads here (2GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/DOTAv1.5 # dataset root dir
12
+ path: DOTAv1.5 # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 1411 images
14
14
  val: images/val # val images (relative to 'path') 458 images
15
15
  test: images/test # test images (optional) 937 images
@@ -9,7 +9,7 @@
9
9
  # └── dota1 ← downloads here (2GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/DOTAv1 # dataset root dir
12
+ path: DOTAv1 # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 1411 images
14
14
  val: images/val # val images (relative to 'path') 458 images
15
15
  test: images/test # test images (optional) 937 images
@@ -9,7 +9,7 @@
9
9
  # └── GlobalWheat2020 ← downloads here (7.0 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/GlobalWheat2020 # dataset root dir
12
+ path: GlobalWheat2020 # dataset root dir
13
13
  train: # train images (relative to 'path') 3422 images
14
14
  - images/arvalis_1
15
15
  - images/arvalis_2
@@ -9,7 +9,7 @@
9
9
  # └── homeobjects-3K ← downloads here (390 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/homeobjects-3K # dataset root dir
12
+ path: homeobjects-3K # dataset root dir
13
13
  train: train/images # train images (relative to 'path') 2285 images
14
14
  val: valid/images # val images (relative to 'path') 404 images
15
15
  test: # test images (relative to 'path')
@@ -10,7 +10,7 @@
10
10
  # └── imagenet ← downloads here (144 GB)
11
11
 
12
12
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
13
- path: ../datasets/imagenet # dataset root dir
13
+ path: imagenet # dataset root dir
14
14
  train: train # train images (relative to 'path') 1281167 images
15
15
  val: val # val images (relative to 'path') 50000 images
16
16
  test: # test images (optional)
@@ -9,7 +9,7 @@
9
9
  # └── Objects365 ← downloads here (712 GB = 367G data + 345G zips)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/Objects365 # dataset root dir
12
+ path: Objects365 # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 1742289 images
14
14
  val: images/val # val images (relative to 'path') 80000 images
15
15
  test: # test images (optional)
@@ -9,7 +9,7 @@
9
9
  # └── SKU-110K ← downloads here (13.6 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/SKU-110K # dataset root dir
12
+ path: SKU-110K # dataset root dir
13
13
  train: train.txt # train images (relative to 'path') 8219 images
14
14
  val: val.txt # val images (relative to 'path') 588 images
15
15
  test: test.txt # test images (optional) 2936 images
@@ -9,7 +9,7 @@
9
9
  # └── VOC ← downloads here (2.8 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/VOC
12
+ path: VOC
13
13
  train: # train images (relative to 'path') 16551 images
14
14
  - images/train2012
15
15
  - images/train2007
@@ -9,7 +9,7 @@
9
9
  # └── VisDrone ← downloads here (2.3 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/VisDrone # dataset root dir
12
+ path: VisDrone # dataset root dir
13
13
  train: VisDrone2019-DET-train/images # train images (relative to 'path') 6471 images
14
14
  val: VisDrone2019-DET-val/images # val images (relative to 'path') 548 images
15
15
  test: VisDrone2019-DET-test-dev/images # test images (optional) 1610 images
@@ -58,8 +58,11 @@ download: |
58
58
  cls = int(row[5]) - 1
59
59
  box = convert_box(img_size, tuple(map(int, row[:4])))
60
60
  lines.append(f"{cls} {' '.join(f'{x:.6f}' for x in box)}\n")
61
- with open(str(f).replace(f"{os.sep}annotations{os.sep}", f"{os.sep}labels{os.sep}"), "w", encoding="utf-8") as fl:
62
- fl.writelines(lines) # write label.txt
61
+
62
+ label_file = str(f).replace(f"{os.sep}annotations{os.sep}", f"{os.sep}labels{os.sep}")
63
+ with open(label_file, "w", encoding="utf-8") as fl:
64
+ fl.writelines(lines)
65
+
63
66
 
64
67
 
65
68
  # Download
@@ -9,7 +9,7 @@
9
9
  # └── african-wildlife ← downloads here (100 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/african-wildlife # dataset root dir
12
+ path: african-wildlife # dataset root dir
13
13
  train: train/images # train images (relative to 'path') 1052 images
14
14
  val: valid/images # val images (relative to 'path') 225 images
15
15
  test: test/images # test images (relative to 'path') 227 images
@@ -9,7 +9,7 @@
9
9
  # └── brain-tumor ← downloads here (4.05 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/brain-tumor # dataset root dir
12
+ path: brain-tumor # dataset root dir
13
13
  train: train/images # train images (relative to 'path') 893 images
14
14
  val: valid/images # val images (relative to 'path') 223 images
15
15
  test: # test images (relative to 'path')
@@ -9,7 +9,7 @@
9
9
  # └── carparts-seg ← downloads here (132 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/carparts-seg # dataset root dir
12
+ path: carparts-seg # dataset root dir
13
13
  train: train/images # train images (relative to 'path') 3516 images
14
14
  val: valid/images # val images (relative to 'path') 276 images
15
15
  test: test/images # test images (relative to 'path') 401 images
@@ -9,7 +9,7 @@
9
9
  # └── coco-pose ← downloads here (20.1 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/coco-pose # dataset root dir
12
+ path: coco-pose # dataset root dir
13
13
  train: train2017.txt # train images (relative to 'path') 56599 images
14
14
  val: val2017.txt # val images (relative to 'path') 2346 images
15
15
  test: test-dev2017.txt # 20288 of 40670 images, submit to https://codalab.lisn.upsaclay.fr/competitions/7403
@@ -9,7 +9,7 @@
9
9
  # └── coco ← downloads here (20.1 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/coco # dataset root dir
12
+ path: coco # dataset root dir
13
13
  train: train2017.txt # train images (relative to 'path') 118287 images
14
14
  val: val2017.txt # val images (relative to 'path') 5000 images
15
15
  test: test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794
@@ -9,7 +9,7 @@
9
9
  # └── coco128-seg ← downloads here (7 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/coco128-seg # dataset root dir
12
+ path: coco128-seg # dataset root dir
13
13
  train: images/train2017 # train images (relative to 'path') 128 images
14
14
  val: images/train2017 # val images (relative to 'path') 128 images
15
15
  test: # test images (optional)
@@ -9,7 +9,7 @@
9
9
  # └── coco128 ← downloads here (7 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/coco128 # dataset root dir
12
+ path: coco128 # dataset root dir
13
13
  train: images/train2017 # train images (relative to 'path') 128 images
14
14
  val: images/train2017 # val images (relative to 'path') 128 images
15
15
  test: # test images (optional)
@@ -9,7 +9,7 @@
9
9
  # └── coco8-grayscale ← downloads here (1 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/coco8-grayscale # dataset root dir
12
+ path: coco8-grayscale # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 4 images
14
14
  val: images/val # val images (relative to 'path') 4 images
15
15
  test: # test images (optional)
@@ -9,7 +9,7 @@
9
9
  # └── coco8-multispectral ← downloads here (20.2 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/coco8-multispectral # dataset root dir
12
+ path: coco8-multispectral # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 4 images
14
14
  val: images/val # val images (relative to 'path') 4 images
15
15
  test: # test images (optional)
@@ -9,7 +9,7 @@
9
9
  # └── coco8-pose ← downloads here (1 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/coco8-pose # dataset root dir
12
+ path: coco8-pose # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 4 images
14
14
  val: images/val # val images (relative to 'path') 4 images
15
15
  test: # test images (optional)
@@ -9,7 +9,7 @@
9
9
  # └── coco8-seg ← downloads here (1 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/coco8-seg # dataset root dir
12
+ path: coco8-seg # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 4 images
14
14
  val: images/val # val images (relative to 'path') 4 images
15
15
  test: # test images (optional)
@@ -9,7 +9,7 @@
9
9
  # └── coco8 ← downloads here (1 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/coco8 # dataset root dir
12
+ path: coco8 # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 4 images
14
14
  val: images/val # val images (relative to 'path') 4 images
15
15
  test: # test images (optional)
@@ -9,7 +9,7 @@
9
9
  # └── crack-seg ← downloads here (91.2 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/crack-seg # dataset root dir
12
+ path: crack-seg # dataset root dir
13
13
  train: train/images # train images (relative to 'path') 3717 images
14
14
  val: valid/images # val images (relative to 'path') 112 images
15
15
  test: test/images # test images (relative to 'path') 200 images
@@ -9,7 +9,7 @@
9
9
  # └── dog-pose ← downloads here (337 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/dog-pose # dataset root dir
12
+ path: dog-pose # dataset root dir
13
13
  train: train # train images (relative to 'path') 6773 images
14
14
  val: val # val images (relative to 'path') 1703 images
15
15
 
@@ -9,7 +9,7 @@
9
9
  # └── dota8-multispectral ← downloads here (37.3MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/dota8-multispectral # dataset root dir
12
+ path: dota8-multispectral # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 4 images
14
14
  val: images/val # val images (relative to 'path') 4 images
15
15
 
@@ -9,7 +9,7 @@
9
9
  # └── dota8 ← downloads here (1MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/dota8 # dataset root dir
12
+ path: dota8 # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 4 images
14
14
  val: images/val # val images (relative to 'path') 4 images
15
15
 
@@ -9,7 +9,7 @@
9
9
  # └── hand-keypoints ← downloads here (369 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/hand-keypoints # dataset root dir
12
+ path: hand-keypoints # dataset root dir
13
13
  train: train # train images (relative to 'path') 18776 images
14
14
  val: val # val images (relative to 'path') 7992 images
15
15
 
@@ -9,7 +9,7 @@
9
9
  # └── lvis ← downloads here (20.1 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/lvis # dataset root dir
12
+ path: lvis # dataset root dir
13
13
  train: train.txt # train images (relative to 'path') 100170 images
14
14
  val: val.txt # val images (relative to 'path') 19809 images
15
15
  minival: minival.txt # minival images (relative to 'path') 5000 images
@@ -9,7 +9,7 @@
9
9
  # └── medical-pills ← downloads here (8.19 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/medical-pills # dataset root dir
12
+ path: medical-pills # dataset root dir
13
13
  train: train/images # train images (relative to 'path') 92 images
14
14
  val: valid/images # val images (relative to 'path') 23 images
15
15
  test: # test images (relative to 'path')
@@ -9,7 +9,7 @@
9
9
  # └── open-images-v7 ← downloads here (561 GB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/open-images-v7 # dataset root dir
12
+ path: open-images-v7 # dataset root dir
13
13
  train: images/train # train images (relative to 'path') 1743042 images
14
14
  val: images/val # val images (relative to 'path') 41620 images
15
15
  test: # test images (optional)
@@ -9,7 +9,7 @@
9
9
  # └── package-seg ← downloads here (102 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/package-seg # dataset root dir
12
+ path: package-seg # dataset root dir
13
13
  train: train/images # train images (relative to 'path') 1920 images
14
14
  val: valid/images # val images (relative to 'path') 89 images
15
15
  test: test/images # test images (relative to 'path') 188 images
@@ -9,7 +9,7 @@
9
9
  # └── signature ← downloads here (11.2 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/signature # dataset root dir
12
+ path: signature # dataset root dir
13
13
  train: train/images # train images (relative to 'path') 143 images
14
14
  val: valid/images # val images (relative to 'path') 35 images
15
15
 
@@ -9,7 +9,7 @@
9
9
  # └── tiger-pose ← downloads here (75.3 MB)
10
10
 
11
11
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
12
- path: ../datasets/tiger-pose # dataset root dir
12
+ path: tiger-pose # dataset root dir
13
13
  train: train # train images (relative to 'path') 210 images
14
14
  val: val # val images (relative to 'path') 53 images
15
15
 
@@ -10,7 +10,7 @@
10
10
  # └── xView ← downloads here (20.7 GB)
11
11
 
12
12
  # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
13
- path: ../datasets/xView # dataset root dir
13
+ path: xView # dataset root dir
14
14
  train: images/autosplit_train.txt # train images (relative to 'path') 90% of 847 train images
15
15
  val: images/autosplit_val.txt # train images (relative to 'path') 10% of 847 train images
16
16
 
@@ -248,12 +248,10 @@ def convert_coco(
248
248
  >>> from ultralytics.data.converter import convert_coco
249
249
 
250
250
  Convert COCO annotations to YOLO format
251
- >>> convert_coco("../datasets/coco/annotations/", use_segments=True, use_keypoints=False, cls91to80=False)
251
+ >>> convert_coco("coco/annotations/", use_segments=True, use_keypoints=False, cls91to80=False)
252
252
 
253
253
  Convert LVIS annotations to YOLO format
254
- >>> convert_coco(
255
- ... "../datasets/lvis/annotations/", use_segments=True, use_keypoints=False, cls91to80=False, lvis=True
256
- ... )
254
+ >>> convert_coco("lvis/annotations/", use_segments=True, use_keypoints=False, cls91to80=False, lvis=True)
257
255
  """
258
256
  # Create dataset directory
259
257
  save_dir = increment_path(save_dir) # increment if save directory already exists
@@ -724,7 +722,7 @@ def convert_to_multispectral(path: Union[str, Path], n_channels: int = 10, repla
724
722
  >>> convert_to_multispectral("path/to/image.jpg", n_channels=10)
725
723
 
726
724
  Convert a dataset
727
- >>> convert_to_multispectral("../datasets/coco8", n_channels=10)
725
+ >>> convert_to_multispectral("coco8", n_channels=10)
728
726
  """
729
727
  from scipy.interpolate import interp1d
730
728
 
@@ -482,7 +482,7 @@ class GroundingDataset(YOLODataset):
482
482
  a warning is logged and verification is skipped.
483
483
  """
484
484
  expected_counts = {
485
- "final_mixed_train_no_coco_segm": 3662344,
485
+ "final_mixed_train_no_coco_segm": 3662412,
486
486
  "final_mixed_train_no_coco": 3681235,
487
487
  "final_flickr_separateGT_train_segm": 638214,
488
488
  "final_flickr_separateGT_train": 640704,
@@ -135,4 +135,4 @@ def autosplit(
135
135
 
136
136
 
137
137
  if __name__ == "__main__":
138
- split_classify_dataset("../datasets/caltech101")
138
+ split_classify_dataset("caltech101")
@@ -706,7 +706,16 @@ class Exporter:
706
706
  def export_paddle(self, prefix=colorstr("PaddlePaddle:")):
707
707
  """Export YOLO model to PaddlePaddle format."""
708
708
  assert not IS_JETSON, "Jetson Paddle exports not supported yet"
709
- check_requirements(("paddlepaddle-gpu" if torch.cuda.is_available() else "paddlepaddle>=3.0.0", "x2paddle"))
709
+ check_requirements(
710
+ (
711
+ "paddlepaddle-gpu"
712
+ if torch.cuda.is_available()
713
+ else "paddlepaddle==3.0.0" # pin 3.0.0 for ARM64
714
+ if ARM64
715
+ else "paddlepaddle>=3.0.0",
716
+ "x2paddle",
717
+ )
718
+ )
710
719
  import x2paddle # noqa
711
720
  from x2paddle.convert import pytorch2paddle # noqa
712
721
 
@@ -800,7 +800,7 @@ class Results(SimpleClass, DataExportMixin):
800
800
  decimals (int): Number of decimal places to round the output values to.
801
801
 
802
802
  Returns:
803
- (List[Dict]): A list of dictionaries, each containing summarized information for a single detection
803
+ (List[Dict[str, Any]]): A list of dictionaries, each containing summarized information for a single detection
804
804
  or classification result. The structure of each dictionary varies based on the task type
805
805
  (classification or detection) and available information (boxes, masks, keypoints).
806
806
 
@@ -35,12 +35,12 @@ class WorldTrainerFromScratch(WorldTrainer):
35
35
  ... yolo_data=["Objects365.yaml"],
36
36
  ... grounding_data=[
37
37
  ... dict(
38
- ... img_path="../datasets/flickr30k/images",
39
- ... json_file="../datasets/flickr30k/final_flickr_separateGT_train.json",
38
+ ... img_path="flickr30k/images",
39
+ ... json_file="flickr30k/final_flickr_separateGT_train.json",
40
40
  ... ),
41
41
  ... dict(
42
- ... img_path="../datasets/GQA/images",
43
- ... json_file="../datasets/GQA/final_mixed_train_no_coco.json",
42
+ ... img_path="GQA/images",
43
+ ... json_file="GQA/final_mixed_train_no_coco.json",
44
44
  ... ),
45
45
  ... ],
46
46
  ... ),
@@ -70,8 +70,8 @@ class WorldTrainerFromScratch(WorldTrainer):
70
70
  ... yolo_data=["Objects365.yaml"],
71
71
  ... grounding_data=[
72
72
  ... dict(
73
- ... img_path="../datasets/flickr30k/images",
74
- ... json_file="../datasets/flickr30k/final_flickr_separateGT_train.json",
73
+ ... img_path="flickr30k/images",
74
+ ... json_file="flickr30k/final_flickr_separateGT_train.json",
75
75
  ... ),
76
76
  ... ],
77
77
  ... ),
@@ -487,7 +487,13 @@ class AutoBackend(nn.Module):
487
487
  # PaddlePaddle
488
488
  elif paddle:
489
489
  LOGGER.info(f"Loading {w} for PaddlePaddle inference...")
490
- check_requirements("paddlepaddle-gpu" if cuda else "paddlepaddle>=3.0.0")
490
+ check_requirements(
491
+ "paddlepaddle-gpu"
492
+ if torch.cuda.is_available()
493
+ else "paddlepaddle==3.0.0" # pin 3.0.0 for ARM64
494
+ if ARM64
495
+ else "paddlepaddle>=3.0.0"
496
+ )
491
497
  import paddle.inference as pdi # noqa
492
498
 
493
499
  w = Path(w)
@@ -9,14 +9,14 @@ from PIL import Image
9
9
 
10
10
  from ultralytics.data.utils import IMG_FORMATS
11
11
  from ultralytics.nn.text_model import build_text_model
12
- from ultralytics.solutions.solutions import BaseSolution
12
+ from ultralytics.utils import LOGGER
13
13
  from ultralytics.utils.checks import check_requirements
14
14
  from ultralytics.utils.torch_utils import select_device
15
15
 
16
16
  os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" # Avoid OpenMP conflict on some systems
17
17
 
18
18
 
19
- class VisualAISearch(BaseSolution):
19
+ class VisualAISearch:
20
20
  """
21
21
  A semantic image search system that leverages OpenCLIP for generating high-quality image and text embeddings and
22
22
  FAISS for fast similarity-based retrieval.
@@ -48,19 +48,18 @@ class VisualAISearch(BaseSolution):
48
48
 
49
49
  def __init__(self, **kwargs: Any) -> None:
50
50
  """Initialize the VisualAISearch class with FAISS index and CLIP model."""
51
- super().__init__(**kwargs)
52
51
  check_requirements("faiss-cpu")
53
52
 
54
53
  self.faiss = __import__("faiss")
55
54
  self.faiss_index = "faiss.index"
56
55
  self.data_path_npy = "paths.npy"
57
- self.data_dir = Path(self.CFG["data"])
58
- self.device = select_device(self.CFG["device"])
56
+ self.data_dir = Path(kwargs.get("data", "images"))
57
+ self.device = select_device(kwargs.get("device", "cpu"))
59
58
 
60
59
  if not self.data_dir.exists():
61
60
  from ultralytics.utils import ASSETS_URL
62
61
 
63
- self.LOGGER.warning(f"{self.data_dir} not found. Downloading images.zip from {ASSETS_URL}/images.zip")
62
+ LOGGER.warning(f"{self.data_dir} not found. Downloading images.zip from {ASSETS_URL}/images.zip")
64
63
  from ultralytics.utils.downloads import safe_download
65
64
 
66
65
  safe_download(url=f"{ASSETS_URL}/images.zip", unzip=True, retry=3)
@@ -91,13 +90,13 @@ class VisualAISearch(BaseSolution):
91
90
  """
92
91
  # Check if the FAISS index and corresponding image paths already exist
93
92
  if Path(self.faiss_index).exists() and Path(self.data_path_npy).exists():
94
- self.LOGGER.info("Loading existing FAISS index...")
93
+ LOGGER.info("Loading existing FAISS index...")
95
94
  self.index = self.faiss.read_index(self.faiss_index) # Load the FAISS index from disk
96
95
  self.image_paths = np.load(self.data_path_npy) # Load the saved image path list
97
96
  return # Exit the function as the index is successfully loaded
98
97
 
99
98
  # If the index doesn't exist, start building it from scratch
100
- self.LOGGER.info("Building FAISS index from images...")
99
+ LOGGER.info("Building FAISS index from images...")
101
100
  vectors = [] # List to store feature vectors of images
102
101
 
103
102
  # Iterate over all image files in the data directory
@@ -110,7 +109,7 @@ class VisualAISearch(BaseSolution):
110
109
  vectors.append(self.extract_image_feature(file))
111
110
  self.image_paths.append(file.name) # Store the corresponding image name
112
111
  except Exception as e:
113
- self.LOGGER.warning(f"Skipping {file.name}: {e}")
112
+ LOGGER.warning(f"Skipping {file.name}: {e}")
114
113
 
115
114
  # If no vectors were successfully created, raise an error
116
115
  if not vectors:
@@ -124,7 +123,7 @@ class VisualAISearch(BaseSolution):
124
123
  self.faiss.write_index(self.index, self.faiss_index) # Save the newly built FAISS index to disk
125
124
  np.save(self.data_path_npy, np.array(self.image_paths)) # Save the list of image paths to disk
126
125
 
127
- self.LOGGER.info(f"Indexed {len(self.image_paths)} images.")
126
+ LOGGER.info(f"Indexed {len(self.image_paths)} images.")
128
127
 
129
128
  def search(self, query: str, k: int = 30, similarity_thresh: float = 0.1) -> List[str]:
130
129
  """
@@ -152,9 +151,9 @@ class VisualAISearch(BaseSolution):
152
151
  ]
153
152
  results.sort(key=lambda x: x[1], reverse=True)
154
153
 
155
- self.LOGGER.info("\nRanked Results:")
154
+ LOGGER.info("\nRanked Results:")
156
155
  for name, score in results:
157
- self.LOGGER.info(f" - {name} | Similarity: {score:.4f}")
156
+ LOGGER.info(f" - {name} | Similarity: {score:.4f}")
158
157
 
159
158
  return [r[0] for r in results]
160
159