ultralytics 8.3.127__tar.gz → 8.3.128__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 (276) hide show
  1. {ultralytics-8.3.127/ultralytics.egg-info → ultralytics-8.3.128}/PKG-INFO +1 -1
  2. {ultralytics-8.3.127 → ultralytics-8.3.128}/pyproject.toml +1 -1
  3. {ultralytics-8.3.127 → ultralytics-8.3.128}/tests/test_cuda.py +7 -2
  4. {ultralytics-8.3.127 → ultralytics-8.3.128}/tests/test_python.py +3 -3
  5. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/__init__.py +1 -1
  6. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/engine/exporter.py +2 -0
  7. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/engine/trainer.py +2 -1
  8. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/detect/predict.py +1 -3
  9. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/autobackend.py +2 -2
  10. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/similarity_search.py +8 -12
  11. ultralytics-8.3.128/ultralytics/solutions/templates/similarity-search.html +160 -0
  12. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/trackers/bot_sort.py +1 -1
  13. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/trackers/track.py +2 -1
  14. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/benchmarks.py +2 -2
  15. {ultralytics-8.3.127 → ultralytics-8.3.128/ultralytics.egg-info}/PKG-INFO +1 -1
  16. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics.egg-info/SOURCES.txt +1 -0
  17. {ultralytics-8.3.127 → ultralytics-8.3.128}/LICENSE +0 -0
  18. {ultralytics-8.3.127 → ultralytics-8.3.128}/README.md +0 -0
  19. {ultralytics-8.3.127 → ultralytics-8.3.128}/setup.cfg +0 -0
  20. {ultralytics-8.3.127 → ultralytics-8.3.128}/tests/__init__.py +0 -0
  21. {ultralytics-8.3.127 → ultralytics-8.3.128}/tests/conftest.py +0 -0
  22. {ultralytics-8.3.127 → ultralytics-8.3.128}/tests/test_cli.py +0 -0
  23. {ultralytics-8.3.127 → ultralytics-8.3.128}/tests/test_engine.py +0 -0
  24. {ultralytics-8.3.127 → ultralytics-8.3.128}/tests/test_exports.py +0 -0
  25. {ultralytics-8.3.127 → ultralytics-8.3.128}/tests/test_integrations.py +0 -0
  26. {ultralytics-8.3.127 → ultralytics-8.3.128}/tests/test_solutions.py +0 -0
  27. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/assets/bus.jpg +0 -0
  28. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/assets/zidane.jpg +0 -0
  29. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/__init__.py +0 -0
  30. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  31. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  32. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  33. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  34. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  35. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  36. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  37. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  38. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  39. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  40. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  41. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  42. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  43. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/coco.yaml +0 -0
  44. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  45. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  46. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/coco8-multispectral.yaml +0 -0
  47. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  48. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  49. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  50. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  51. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/dog-pose.yaml +0 -0
  52. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/dota8-multispectral.yaml +0 -0
  53. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  54. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/hand-keypoints.yaml +0 -0
  55. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  56. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/medical-pills.yaml +0 -0
  57. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  58. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  59. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/signature.yaml +0 -0
  60. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  61. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/datasets/xView.yaml +0 -0
  62. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/default.yaml +0 -0
  63. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml +0 -0
  64. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/11/yolo11-cls.yaml +0 -0
  65. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/11/yolo11-obb.yaml +0 -0
  66. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/11/yolo11-pose.yaml +0 -0
  67. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/11/yolo11-seg.yaml +0 -0
  68. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/11/yolo11.yaml +0 -0
  69. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/11/yoloe-11-seg.yaml +0 -0
  70. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/11/yoloe-11.yaml +0 -0
  71. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/12/yolo12-cls.yaml +0 -0
  72. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/12/yolo12-obb.yaml +0 -0
  73. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/12/yolo12-pose.yaml +0 -0
  74. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/12/yolo12-seg.yaml +0 -0
  75. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/12/yolo12.yaml +0 -0
  76. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  77. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  78. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  79. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  80. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  81. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  82. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  83. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  84. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  85. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  86. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  87. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  88. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  89. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  90. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  91. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  92. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yoloe-v8-seg.yaml +0 -0
  93. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yoloe-v8.yaml +0 -0
  94. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  95. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  96. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  97. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  98. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  99. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  100. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  101. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  102. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  103. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  104. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  105. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  106. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  107. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  108. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  109. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  110. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  111. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  112. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  113. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  114. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  115. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  116. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  117. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  118. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  119. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  120. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/__init__.py +0 -0
  121. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/annotator.py +0 -0
  122. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/augment.py +0 -0
  123. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/base.py +0 -0
  124. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/build.py +0 -0
  125. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/converter.py +0 -0
  126. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/dataset.py +0 -0
  127. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/loaders.py +0 -0
  128. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/scripts/download_weights.sh +0 -0
  129. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/scripts/get_coco.sh +0 -0
  130. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/scripts/get_coco128.sh +0 -0
  131. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/scripts/get_imagenet.sh +0 -0
  132. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/split.py +0 -0
  133. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/split_dota.py +0 -0
  134. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/data/utils.py +0 -0
  135. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/engine/__init__.py +0 -0
  136. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/engine/model.py +0 -0
  137. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/engine/predictor.py +0 -0
  138. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/engine/results.py +0 -0
  139. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/engine/tuner.py +0 -0
  140. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/engine/validator.py +0 -0
  141. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/hub/__init__.py +0 -0
  142. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/hub/auth.py +0 -0
  143. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/hub/google/__init__.py +0 -0
  144. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/hub/session.py +0 -0
  145. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/hub/utils.py +0 -0
  146. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/__init__.py +0 -0
  147. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/fastsam/__init__.py +0 -0
  148. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/fastsam/model.py +0 -0
  149. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/fastsam/predict.py +0 -0
  150. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/fastsam/utils.py +0 -0
  151. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/fastsam/val.py +0 -0
  152. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/nas/__init__.py +0 -0
  153. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/nas/model.py +0 -0
  154. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/nas/predict.py +0 -0
  155. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/nas/val.py +0 -0
  156. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/rtdetr/__init__.py +0 -0
  157. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/rtdetr/model.py +0 -0
  158. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/rtdetr/predict.py +0 -0
  159. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/rtdetr/train.py +0 -0
  160. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/rtdetr/val.py +0 -0
  161. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/__init__.py +0 -0
  162. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/amg.py +0 -0
  163. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/build.py +0 -0
  164. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/model.py +0 -0
  165. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/modules/__init__.py +0 -0
  166. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/modules/blocks.py +0 -0
  167. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/modules/decoders.py +0 -0
  168. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/modules/encoders.py +0 -0
  169. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/modules/memory_attention.py +0 -0
  170. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/modules/sam.py +0 -0
  171. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  172. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/modules/transformer.py +0 -0
  173. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/modules/utils.py +0 -0
  174. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/sam/predict.py +0 -0
  175. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/utils/__init__.py +0 -0
  176. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/utils/loss.py +0 -0
  177. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/utils/ops.py +0 -0
  178. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/__init__.py +0 -0
  179. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/classify/__init__.py +0 -0
  180. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/classify/predict.py +0 -0
  181. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/classify/train.py +0 -0
  182. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/classify/val.py +0 -0
  183. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/detect/__init__.py +0 -0
  184. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/detect/train.py +0 -0
  185. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/detect/val.py +0 -0
  186. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/model.py +0 -0
  187. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/obb/__init__.py +0 -0
  188. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/obb/predict.py +0 -0
  189. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/obb/train.py +0 -0
  190. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/obb/val.py +0 -0
  191. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/pose/__init__.py +0 -0
  192. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/pose/predict.py +0 -0
  193. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/pose/train.py +0 -0
  194. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/pose/val.py +0 -0
  195. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/segment/__init__.py +0 -0
  196. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/segment/predict.py +0 -0
  197. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/segment/train.py +0 -0
  198. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/segment/val.py +0 -0
  199. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/world/__init__.py +0 -0
  200. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/world/train.py +0 -0
  201. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/world/train_world.py +0 -0
  202. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/yoloe/__init__.py +0 -0
  203. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/yoloe/predict.py +0 -0
  204. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/yoloe/train.py +0 -0
  205. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/yoloe/train_seg.py +0 -0
  206. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/models/yolo/yoloe/val.py +0 -0
  207. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/__init__.py +0 -0
  208. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/modules/__init__.py +0 -0
  209. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/modules/activation.py +0 -0
  210. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/modules/block.py +0 -0
  211. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/modules/conv.py +0 -0
  212. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/modules/head.py +0 -0
  213. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/modules/transformer.py +0 -0
  214. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/modules/utils.py +0 -0
  215. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/tasks.py +0 -0
  216. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/nn/text_model.py +0 -0
  217. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/__init__.py +0 -0
  218. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/ai_gym.py +0 -0
  219. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/analytics.py +0 -0
  220. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/config.py +0 -0
  221. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/distance_calculation.py +0 -0
  222. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/heatmap.py +0 -0
  223. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/instance_segmentation.py +0 -0
  224. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/object_blurrer.py +0 -0
  225. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/object_counter.py +0 -0
  226. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/object_cropper.py +0 -0
  227. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/parking_management.py +0 -0
  228. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/queue_management.py +0 -0
  229. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/region_counter.py +0 -0
  230. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/security_alarm.py +0 -0
  231. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/solutions.py +0 -0
  232. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/speed_estimation.py +0 -0
  233. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/streamlit_inference.py +0 -0
  234. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/trackzone.py +0 -0
  235. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/solutions/vision_eye.py +0 -0
  236. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/trackers/__init__.py +0 -0
  237. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/trackers/basetrack.py +0 -0
  238. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/trackers/byte_tracker.py +0 -0
  239. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/trackers/utils/__init__.py +0 -0
  240. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/trackers/utils/gmc.py +0 -0
  241. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  242. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/trackers/utils/matching.py +0 -0
  243. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/__init__.py +0 -0
  244. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/autobatch.py +0 -0
  245. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/autodevice.py +0 -0
  246. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/__init__.py +0 -0
  247. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/base.py +0 -0
  248. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/clearml.py +0 -0
  249. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/comet.py +0 -0
  250. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/dvc.py +0 -0
  251. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/hub.py +0 -0
  252. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/mlflow.py +0 -0
  253. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/neptune.py +0 -0
  254. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/raytune.py +0 -0
  255. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  256. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/callbacks/wb.py +0 -0
  257. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/checks.py +0 -0
  258. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/dist.py +0 -0
  259. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/downloads.py +0 -0
  260. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/errors.py +0 -0
  261. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/export.py +0 -0
  262. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/files.py +0 -0
  263. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/instance.py +0 -0
  264. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/loss.py +0 -0
  265. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/metrics.py +0 -0
  266. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/ops.py +0 -0
  267. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/patches.py +0 -0
  268. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/plotting.py +0 -0
  269. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/tal.py +0 -0
  270. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/torch_utils.py +0 -0
  271. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/triton.py +0 -0
  272. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics/utils/tuner.py +0 -0
  273. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics.egg-info/dependency_links.txt +0 -0
  274. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics.egg-info/entry_points.txt +0 -0
  275. {ultralytics-8.3.127 → ultralytics-8.3.128}/ultralytics.egg-info/requires.txt +0 -0
  276. {ultralytics-8.3.127 → ultralytics-8.3.128}/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.127
3
+ Version: 8.3.128
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>
@@ -134,7 +134,7 @@ ultralytics = "ultralytics.cfg:entrypoint"
134
134
  [tool.setuptools] # configuration specific to the `setuptools` build backend.
135
135
  packages = { find = { where = ["."], include = ["ultralytics", "ultralytics.*"] } }
136
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
+ package-data = { "ultralytics" = ["**/*.yaml", "**/*.sh", "../tests/*.py"], "ultralytics.assets" = ["*.jpg"], "ultralytics.solutions.templates" = ["*.html"]}
138
138
 
139
139
  [tool.setuptools.dynamic]
140
140
  version = { attr = "ultralytics.__version__" }
@@ -71,8 +71,13 @@ def test_export_engine_matrix(task, dynamic, int8, half, batch):
71
71
  @pytest.mark.skipif(not DEVICES, reason="No CUDA devices available")
72
72
  def test_train():
73
73
  """Test model training on a minimal dataset using available CUDA devices."""
74
- device = DEVICES if len(DEVICES) > 1 else DEVICES[0]
75
- YOLO(MODEL).train(data="coco8.yaml", imgsz=64, epochs=1, device=device) # requires imgsz>=64
74
+ import os
75
+
76
+ device = tuple(DEVICES) if len(DEVICES) > 1 else DEVICES[0]
77
+ results = YOLO(MODEL).train(data="coco8.yaml", imgsz=64, epochs=1, device=device) # requires imgsz>=64
78
+ visible = eval(os.environ["CUDA_VISIBLE_DEVICES"])
79
+ assert visible == device, f"Passed GPUs '{device}', but used GPUs '{visible}'"
80
+ assert results is (None if len(DEVICES) > 1 else not None) # DDP returns None, single-GPU returns metrics
76
81
 
77
82
 
78
83
  @pytest.mark.slow
@@ -188,11 +188,11 @@ def test_track_stream():
188
188
  model.track(video_url, imgsz=160, tracker="bytetrack.yaml")
189
189
  model.track(video_url, imgsz=160, tracker="botsort.yaml", save_frames=True) # test frame saving also
190
190
 
191
- # Test Global Motion Compensation (GMC) methods
192
- for gmc in "orb", "sift", "ecc":
191
+ # Test Global Motion Compensation (GMC) methods and ReID
192
+ for gmc, reidm in zip(["orb", "sift", "ecc"], ["auto", "auto", "yolo11n-cls.pt"]):
193
193
  default_args = YAML.load(ROOT / "cfg/trackers/botsort.yaml")
194
194
  custom_yaml = TMP / f"botsort-{gmc}.yaml"
195
- YAML.save(custom_yaml, {**default_args, "gmc_method": gmc})
195
+ YAML.save(custom_yaml, {**default_args, "gmc_method": gmc, "with_reid": True, "model": reidm})
196
196
  model.track(video_url, imgsz=160, tracker=custom_yaml)
197
197
 
198
198
 
@@ -1,6 +1,6 @@
1
1
  # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
2
2
 
3
- __version__ = "8.3.127"
3
+ __version__ = "8.3.128"
4
4
 
5
5
  import os
6
6
 
@@ -82,6 +82,7 @@ from ultralytics.utils import (
82
82
  ARM64,
83
83
  DEFAULT_CFG,
84
84
  IS_COLAB,
85
+ IS_JETSON,
85
86
  LINUX,
86
87
  LOGGER,
87
88
  MACOS,
@@ -682,6 +683,7 @@ class Exporter:
682
683
  @try_export
683
684
  def export_paddle(self, prefix=colorstr("PaddlePaddle:")):
684
685
  """YOLO Paddle export."""
686
+ assert not IS_JETSON, "Jetson Paddle exports not supported yet"
685
687
  check_requirements(("paddlepaddle-gpu" if torch.cuda.is_available() else "paddlepaddle>=3.0.0", "x2paddle"))
686
688
  import x2paddle # noqa
687
689
  from x2paddle.convert import pytorch2paddle # noqa
@@ -105,7 +105,8 @@ class BaseTrainer:
105
105
  self.args = get_cfg(cfg, overrides)
106
106
  self.check_resume(overrides)
107
107
  self.device = select_device(self.args.device, self.args.batch)
108
- self.args.device = str(self.device) # ensure -1 is updated to selected CUDA device
108
+ # update "-1" devices so post-training val does not repeat search
109
+ self.args.device = os.getenv("CUDA_VISIBLE_DEVICES") if "cuda" in str(self.device) else str(self.device)
109
110
  self.validator = None
110
111
  self.metrics = None
111
112
  self.plots = {}
@@ -82,11 +82,9 @@ class DetectionPredictor(BasePredictor):
82
82
 
83
83
  def get_obj_feats(self, feat_maps, idxs):
84
84
  """Extract object features from the feature maps."""
85
- from math import gcd
86
-
87
85
  import torch
88
86
 
89
- s = gcd(*[x.shape[1] for x in feat_maps]) # find smallest vector length
87
+ s = min([x.shape[1] for x in feat_maps]) # find smallest vector length
90
88
  obj_feats = torch.cat(
91
89
  [x.permute(0, 2, 3, 1).reshape(x.shape[0], -1, s, x.shape[1] // s).mean(dim=-1) for x in feat_maps], dim=1
92
90
  ) # mean reduce all vectors to same length
@@ -290,8 +290,8 @@ class AutoBackend(nn.Module):
290
290
  elif engine:
291
291
  LOGGER.info(f"Loading {w} for TensorRT inference...")
292
292
 
293
- if IS_JETSON and check_version(PYTHON_VERSION, "<=3.8.0"):
294
- # fix error: `np.bool` was a deprecated alias for the builtin `bool` for JetPack 4 with Python <= 3.8.0
293
+ if IS_JETSON and check_version(PYTHON_VERSION, "<=3.8.10"):
294
+ # fix error: `np.bool` was a deprecated alias for the builtin `bool` for JetPack 4 and JetPack 5 with Python <= 3.8.10
295
295
  check_requirements("numpy==1.23.5")
296
296
 
297
297
  try: # https://developer.nvidia.com/nvidia-tensorrt-download
@@ -29,16 +29,16 @@ class VisualAISearch(BaseSolution):
29
29
  def __init__(self, **kwargs):
30
30
  """Initializes the VisualAISearch class with the FAISS index file and CLIP model."""
31
31
  super().__init__(**kwargs)
32
- check_requirements(["open-clip-torch", "faiss-cpu"])
32
+ check_requirements(["git+https://github.com/ultralytics/CLIP.git", "faiss-cpu"])
33
+ import clip
33
34
  import faiss
34
- import open_clip
35
35
 
36
36
  self.faiss = faiss
37
- self.open_clip = open_clip
37
+ self.clip = clip
38
38
 
39
39
  self.faiss_index = "faiss.index"
40
40
  self.data_path_npy = "paths.npy"
41
- self.model_name = "ViT-B-32-quickgelu"
41
+ self.model_name = "ViT-B/32"
42
42
  self.data_dir = Path(self.CFG["data"])
43
43
  self.device = select_device(self.CFG["device"])
44
44
 
@@ -51,11 +51,7 @@ class VisualAISearch(BaseSolution):
51
51
  safe_download(url=f"{ASSETS_URL}/images.zip", unzip=True, retry=3)
52
52
  self.data_dir = Path("images")
53
53
 
54
- self.clip_model, _, self.preprocess = self.open_clip.create_model_and_transforms(
55
- self.model_name, pretrained="openai"
56
- )
57
- self.clip_model = self.clip_model.to(self.device).eval()
58
- self.tokenizer = self.open_clip.get_tokenizer(self.model_name)
54
+ self.model, self.preprocess = clip.load(self.model_name, device=self.device)
59
55
 
60
56
  self.index = None
61
57
  self.image_paths = []
@@ -67,13 +63,13 @@ class VisualAISearch(BaseSolution):
67
63
  image = Image.open(path)
68
64
  tensor = self.preprocess(image).unsqueeze(0).to(self.device)
69
65
  with torch.no_grad():
70
- return self.clip_model.encode_image(tensor).cpu().numpy()
66
+ return self.model.encode_image(tensor).cpu().numpy()
71
67
 
72
68
  def extract_text_feature(self, text):
73
69
  """Extract CLIP text embedding."""
74
- tokens = self.tokenizer([text]).to(self.device)
70
+ tokens = self.clip.tokenize([text]).to(self.device)
75
71
  with torch.no_grad():
76
- return self.clip_model.encode_text(tokens).cpu().numpy()
72
+ return self.model.encode_text(tokens).cpu().numpy()
77
73
 
78
74
  def load_or_build_index(self):
79
75
  """Loads FAISS index or builds a new one from image features."""
@@ -0,0 +1,160 @@
1
+ <!-- Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license -->
2
+
3
+ <!--Similarity search webpage-->
4
+ <!doctype html>
5
+ <html lang="en">
6
+ <head>
7
+ <meta charset="UTF-8" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
+ <title>Semantic Image Search</title>
10
+ <link
11
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap"
12
+ rel="stylesheet"
13
+ />
14
+ <style>
15
+ body {
16
+ background: linear-gradient(135deg, #f0f4ff, #f9fbff);
17
+ font-family: "Inter", sans-serif;
18
+ color: #111e68;
19
+ padding: 2rem;
20
+ margin: 0;
21
+ min-height: 100vh;
22
+ }
23
+
24
+ h1 {
25
+ text-align: center;
26
+ margin-bottom: 2rem;
27
+ font-size: 2.5rem;
28
+ font-weight: 600;
29
+ }
30
+
31
+ form {
32
+ display: flex;
33
+ flex-wrap: wrap;
34
+ justify-content: center;
35
+ align-items: center;
36
+ gap: 1rem;
37
+ margin-bottom: 3rem;
38
+ animation: fadeIn 1s ease-in-out;
39
+ }
40
+
41
+ input[type="text"] {
42
+ width: 300px;
43
+ padding: 0.75rem 1rem;
44
+ font-size: 1rem;
45
+ border-radius: 10px;
46
+ border: 1px solid #ccc;
47
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
48
+ transition: box-shadow 0.3s ease;
49
+ }
50
+
51
+ input[type="text"]:focus {
52
+ outline: none;
53
+ box-shadow: 0 0 0 3px rgba(17, 30, 104, 0.2);
54
+ }
55
+
56
+ button {
57
+ background-color: #111e68;
58
+ color: white;
59
+ font-weight: 600;
60
+ font-size: 1rem;
61
+ padding: 0.75rem 1.5rem;
62
+ border-radius: 10px;
63
+ border: none;
64
+ cursor: pointer;
65
+ transition:
66
+ background-color 0.3s ease,
67
+ transform 0.2s ease;
68
+ }
69
+
70
+ button:hover {
71
+ background-color: #1f2e9f;
72
+ transform: translateY(-2px);
73
+ }
74
+
75
+ .grid {
76
+ display: grid;
77
+ grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
78
+ gap: 1.5rem;
79
+ max-width: 1600px;
80
+ margin: auto;
81
+ animation: fadeInUp 1s ease-in-out;
82
+ }
83
+
84
+ .card {
85
+ background: white;
86
+ border-radius: 16px;
87
+ overflow: hidden;
88
+ box-shadow: 0 6px 14px rgba(0, 0, 0, 0.08);
89
+ transition:
90
+ transform 0.3s ease,
91
+ box-shadow 0.3s ease;
92
+ }
93
+
94
+ .card:hover {
95
+ transform: translateY(-6px);
96
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
97
+ }
98
+
99
+ .card img {
100
+ width: 100%;
101
+ height: 100%;
102
+ object-fit: cover;
103
+ display: block;
104
+ }
105
+
106
+ @keyframes fadeIn {
107
+ 0% {
108
+ opacity: 0;
109
+ transform: scale(0.95);
110
+ }
111
+ 100% {
112
+ opacity: 1;
113
+ transform: scale(1);
114
+ }
115
+ }
116
+
117
+ @keyframes fadeInUp {
118
+ 0% {
119
+ opacity: 0;
120
+ transform: translateY(20px);
121
+ }
122
+ 100% {
123
+ opacity: 1;
124
+ transform: translateY(0);
125
+ }
126
+ }
127
+ </style>
128
+ </head>
129
+ <body>
130
+ <div style="text-align: center; margin-bottom: 1rem">
131
+ <img
132
+ src="https://raw.githubusercontent.com/ultralytics/assets/main/logo/favicon.png"
133
+ alt="Ultralytics Logo"
134
+ style="height: 40px"
135
+ />
136
+ </div>
137
+ <h1>Semantic Image Search with AI</h1>
138
+
139
+ <!-- Search box -->
140
+ <form method="POST">
141
+ <input
142
+ type="text"
143
+ name="query"
144
+ placeholder="Describe the scene (e.g., man walking)"
145
+ value="{{ request.form['query'] }}"
146
+ required
147
+ />
148
+ <button type="submit">Search</button>
149
+ </form>
150
+
151
+ <!-- Search results grid -->
152
+ <div class="grid">
153
+ {% for img in results %}
154
+ <div class="card">
155
+ <img src="{{ url_for('static', filename=img) }}" alt="Result Image" />
156
+ </div>
157
+ {% endfor %}
158
+ </div>
159
+ </body>
160
+ </html>
@@ -255,6 +255,6 @@ class ReID:
255
255
  def __call__(self, img, dets):
256
256
  """Extract embeddings for detected objects."""
257
257
  feats = self.model([save_one_box(det, img, save=False) for det in xywh2xyxy(torch.from_numpy(dets[:, :4]))])
258
- if feats.shape[0] != dets.shape[0] and feats[0].shape[0] == dets.shape[0]:
258
+ if len(feats) != dets.shape[0] and feats[0].shape[0] == dets.shape[0]:
259
259
  feats = feats[0] # batched prediction with non-PyTorch backend
260
260
  return [f.cpu().numpy() for f in feats]
@@ -44,6 +44,8 @@ def on_predict_start(predictor: object, persist: bool = False) -> None:
44
44
  if cfg.tracker_type not in {"bytetrack", "botsort"}:
45
45
  raise AssertionError(f"Only 'bytetrack' and 'botsort' are supported for now, but got '{cfg.tracker_type}'")
46
46
 
47
+ predictor._feats = None # reset in case used earlier
48
+ predictor.save_feats = False
47
49
  if cfg.tracker_type == "botsort" and cfg.with_reid and cfg.model == "auto":
48
50
  from ultralytics.nn.modules.head import Detect
49
51
 
@@ -55,7 +57,6 @@ def on_predict_start(predictor: object, persist: bool = False) -> None:
55
57
  cfg.model = "yolo11n-cls.pt"
56
58
  else:
57
59
  predictor.save_feats = True
58
- predictor._feats = None
59
60
 
60
61
  # Register hook to extract input of Detect layer
61
62
  def pre_hook(module, input):
@@ -40,7 +40,7 @@ import torch.cuda
40
40
  from ultralytics import YOLO, YOLOWorld
41
41
  from ultralytics.cfg import TASK2DATA, TASK2METRIC
42
42
  from ultralytics.engine.exporter import export_formats
43
- from ultralytics.utils import ARM64, ASSETS, LINUX, LOGGER, MACOS, TQDM, WEIGHTS_DIR, YAML
43
+ from ultralytics.utils import ARM64, ASSETS, IS_JETSON, LINUX, LOGGER, MACOS, TQDM, WEIGHTS_DIR, YAML
44
44
  from ultralytics.utils.checks import IS_PYTHON_3_13, check_imgsz, check_requirements, check_yolo, is_rockchip
45
45
  from ultralytics.utils.downloads import safe_download
46
46
  from ultralytics.utils.files import file_size
@@ -126,7 +126,7 @@ def benchmark(
126
126
  assert not isinstance(model, YOLOWorld), "YOLOWorldv2 Paddle exports not supported yet"
127
127
  assert model.task != "obb", "Paddle OBB bug https://github.com/PaddlePaddle/Paddle/issues/72024"
128
128
  assert not is_end2end, "End-to-end models not supported by PaddlePaddle yet"
129
- assert LINUX or MACOS, "Windows Paddle exports not supported yet"
129
+ assert (LINUX and not IS_JETSON) or MACOS, "Windows and Jetson Paddle exports not supported yet"
130
130
  if i == 12: # MNN
131
131
  assert not isinstance(model, YOLOWorld), "YOLOWorldv2 MNN exports not supported yet"
132
132
  if i == 13: # NCNN
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultralytics
3
- Version: 8.3.127
3
+ Version: 8.3.128
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>
@@ -238,6 +238,7 @@ ultralytics/solutions/speed_estimation.py
238
238
  ultralytics/solutions/streamlit_inference.py
239
239
  ultralytics/solutions/trackzone.py
240
240
  ultralytics/solutions/vision_eye.py
241
+ ultralytics/solutions/templates/similarity-search.html
241
242
  ultralytics/trackers/__init__.py
242
243
  ultralytics/trackers/basetrack.py
243
244
  ultralytics/trackers/bot_sort.py
File without changes
File without changes
File without changes