ultralytics 8.2.49__tar.gz → 8.2.51__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.

Potentially problematic release.


This version of ultralytics might be problematic. Click here for more details.

Files changed (233) hide show
  1. {ultralytics-8.2.49/ultralytics.egg-info → ultralytics-8.2.51}/PKG-INFO +3 -3
  2. {ultralytics-8.2.49 → ultralytics-8.2.51}/README.md +1 -1
  3. {ultralytics-8.2.49 → ultralytics-8.2.51}/pyproject.toml +1 -1
  4. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/__init__.py +1 -1
  5. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/__init__.py +14 -3
  6. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/augment.py +3 -3
  7. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/engine/exporter.py +3 -2
  8. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/engine/results.py +7 -2
  9. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/fastsam/prompt.py +1 -1
  10. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/amg.py +1 -1
  11. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/modules/tiny_encoder.py +1 -1
  12. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/world/train_world.py +2 -2
  13. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/nn/autobackend.py +3 -2
  14. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/nn/tasks.py +1 -1
  15. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/solutions/__init__.py +1 -0
  16. ultralytics-8.2.51/ultralytics/solutions/streamlit_inference.py +154 -0
  17. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/downloads.py +1 -1
  18. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/plotting.py +3 -3
  19. {ultralytics-8.2.49 → ultralytics-8.2.51/ultralytics.egg-info}/PKG-INFO +3 -3
  20. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics.egg-info/SOURCES.txt +1 -0
  21. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics.egg-info/requires.txt +1 -1
  22. {ultralytics-8.2.49 → ultralytics-8.2.51}/LICENSE +0 -0
  23. {ultralytics-8.2.49 → ultralytics-8.2.51}/setup.cfg +0 -0
  24. {ultralytics-8.2.49 → ultralytics-8.2.51}/tests/__init__.py +0 -0
  25. {ultralytics-8.2.49 → ultralytics-8.2.51}/tests/conftest.py +0 -0
  26. {ultralytics-8.2.49 → ultralytics-8.2.51}/tests/test_cli.py +0 -0
  27. {ultralytics-8.2.49 → ultralytics-8.2.51}/tests/test_cuda.py +0 -0
  28. {ultralytics-8.2.49 → ultralytics-8.2.51}/tests/test_engine.py +0 -0
  29. {ultralytics-8.2.49 → ultralytics-8.2.51}/tests/test_explorer.py +0 -0
  30. {ultralytics-8.2.49 → ultralytics-8.2.51}/tests/test_exports.py +0 -0
  31. {ultralytics-8.2.49 → ultralytics-8.2.51}/tests/test_integrations.py +0 -0
  32. {ultralytics-8.2.49 → ultralytics-8.2.51}/tests/test_python.py +0 -0
  33. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/assets/bus.jpg +0 -0
  34. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/assets/zidane.jpg +0 -0
  35. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  36. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/DOTAv1.5.yaml +0 -0
  37. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/DOTAv1.yaml +0 -0
  38. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  39. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  40. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  41. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  42. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  43. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  44. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/african-wildlife.yaml +0 -0
  45. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/brain-tumor.yaml +0 -0
  46. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/carparts-seg.yaml +0 -0
  47. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  48. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/coco.yaml +0 -0
  49. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  50. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  51. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  52. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  53. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  54. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/crack-seg.yaml +0 -0
  55. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/dota8.yaml +0 -0
  56. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/lvis.yaml +0 -0
  57. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  58. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/package-seg.yaml +0 -0
  59. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/signature.yaml +0 -0
  60. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  61. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/datasets/xView.yaml +0 -0
  62. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/default.yaml +0 -0
  63. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  64. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml +0 -0
  65. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml +0 -0
  66. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  67. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v10/yolov10b.yaml +0 -0
  68. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v10/yolov10l.yaml +0 -0
  69. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v10/yolov10m.yaml +0 -0
  70. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v10/yolov10n.yaml +0 -0
  71. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v10/yolov10s.yaml +0 -0
  72. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v10/yolov10x.yaml +0 -0
  73. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  74. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  75. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  76. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  77. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  78. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  79. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml +0 -0
  80. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml +0 -0
  81. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  82. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml +0 -0
  83. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml +0 -0
  84. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-ghost.yaml +0 -0
  85. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-obb.yaml +0 -0
  86. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  87. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  88. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  89. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  90. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  91. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  92. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  93. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-world.yaml +0 -0
  94. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8-worldv2.yaml +0 -0
  95. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  96. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v9/yolov9c-seg.yaml +0 -0
  97. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v9/yolov9c.yaml +0 -0
  98. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v9/yolov9e-seg.yaml +0 -0
  99. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v9/yolov9e.yaml +0 -0
  100. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v9/yolov9m.yaml +0 -0
  101. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v9/yolov9s.yaml +0 -0
  102. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/models/v9/yolov9t.yaml +0 -0
  103. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  104. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  105. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/__init__.py +0 -0
  106. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/annotator.py +0 -0
  107. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/base.py +0 -0
  108. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/build.py +0 -0
  109. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/converter.py +0 -0
  110. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/dataset.py +0 -0
  111. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/explorer/__init__.py +0 -0
  112. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/explorer/explorer.py +0 -0
  113. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/explorer/gui/__init__.py +0 -0
  114. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/explorer/gui/dash.py +0 -0
  115. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/explorer/utils.py +0 -0
  116. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/loaders.py +0 -0
  117. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/split_dota.py +0 -0
  118. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/data/utils.py +0 -0
  119. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/engine/__init__.py +0 -0
  120. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/engine/model.py +0 -0
  121. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/engine/predictor.py +0 -0
  122. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/engine/trainer.py +0 -0
  123. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/engine/tuner.py +0 -0
  124. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/engine/validator.py +0 -0
  125. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/hub/__init__.py +0 -0
  126. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/hub/auth.py +0 -0
  127. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/hub/session.py +0 -0
  128. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/hub/utils.py +0 -0
  129. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/__init__.py +0 -0
  130. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/fastsam/__init__.py +0 -0
  131. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/fastsam/model.py +0 -0
  132. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/fastsam/predict.py +0 -0
  133. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/fastsam/utils.py +0 -0
  134. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/fastsam/val.py +0 -0
  135. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/nas/__init__.py +0 -0
  136. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/nas/model.py +0 -0
  137. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/nas/predict.py +0 -0
  138. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/nas/val.py +0 -0
  139. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/rtdetr/__init__.py +0 -0
  140. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/rtdetr/model.py +0 -0
  141. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/rtdetr/predict.py +0 -0
  142. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/rtdetr/train.py +0 -0
  143. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/rtdetr/val.py +0 -0
  144. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/__init__.py +0 -0
  145. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/build.py +0 -0
  146. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/model.py +0 -0
  147. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/modules/__init__.py +0 -0
  148. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/modules/decoders.py +0 -0
  149. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/modules/encoders.py +0 -0
  150. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/modules/sam.py +0 -0
  151. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/modules/transformer.py +0 -0
  152. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/sam/predict.py +0 -0
  153. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/utils/__init__.py +0 -0
  154. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/utils/loss.py +0 -0
  155. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/utils/ops.py +0 -0
  156. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/__init__.py +0 -0
  157. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/classify/__init__.py +0 -0
  158. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/classify/predict.py +0 -0
  159. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/classify/train.py +0 -0
  160. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/classify/val.py +0 -0
  161. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/detect/__init__.py +0 -0
  162. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/detect/predict.py +0 -0
  163. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/detect/train.py +0 -0
  164. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/detect/val.py +0 -0
  165. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/model.py +0 -0
  166. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/obb/__init__.py +0 -0
  167. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/obb/predict.py +0 -0
  168. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/obb/train.py +0 -0
  169. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/obb/val.py +0 -0
  170. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/pose/__init__.py +0 -0
  171. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/pose/predict.py +0 -0
  172. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/pose/train.py +0 -0
  173. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/pose/val.py +0 -0
  174. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/segment/__init__.py +0 -0
  175. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/segment/predict.py +0 -0
  176. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/segment/train.py +0 -0
  177. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/segment/val.py +0 -0
  178. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/world/__init__.py +0 -0
  179. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/models/yolo/world/train.py +0 -0
  180. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/nn/__init__.py +0 -0
  181. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/nn/modules/__init__.py +0 -0
  182. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/nn/modules/block.py +0 -0
  183. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/nn/modules/conv.py +0 -0
  184. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/nn/modules/head.py +0 -0
  185. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/nn/modules/transformer.py +0 -0
  186. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/nn/modules/utils.py +0 -0
  187. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/solutions/ai_gym.py +0 -0
  188. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/solutions/analytics.py +0 -0
  189. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/solutions/distance_calculation.py +0 -0
  190. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/solutions/heatmap.py +0 -0
  191. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/solutions/object_counter.py +0 -0
  192. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/solutions/parking_management.py +0 -0
  193. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/solutions/queue_management.py +0 -0
  194. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/solutions/speed_estimation.py +0 -0
  195. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/trackers/__init__.py +0 -0
  196. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/trackers/basetrack.py +0 -0
  197. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/trackers/bot_sort.py +0 -0
  198. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/trackers/byte_tracker.py +0 -0
  199. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/trackers/track.py +0 -0
  200. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/trackers/utils/__init__.py +0 -0
  201. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/trackers/utils/gmc.py +0 -0
  202. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  203. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/trackers/utils/matching.py +0 -0
  204. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/__init__.py +0 -0
  205. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/autobatch.py +0 -0
  206. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/benchmarks.py +0 -0
  207. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/__init__.py +0 -0
  208. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/base.py +0 -0
  209. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/clearml.py +0 -0
  210. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/comet.py +0 -0
  211. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/dvc.py +0 -0
  212. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/hub.py +0 -0
  213. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/mlflow.py +0 -0
  214. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/neptune.py +0 -0
  215. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/raytune.py +0 -0
  216. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  217. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/callbacks/wb.py +0 -0
  218. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/checks.py +0 -0
  219. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/dist.py +0 -0
  220. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/errors.py +0 -0
  221. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/files.py +0 -0
  222. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/instance.py +0 -0
  223. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/loss.py +0 -0
  224. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/metrics.py +0 -0
  225. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/ops.py +0 -0
  226. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/patches.py +0 -0
  227. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/tal.py +0 -0
  228. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/torch_utils.py +0 -0
  229. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/triton.py +0 -0
  230. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics/utils/tuner.py +0 -0
  231. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics.egg-info/dependency_links.txt +0 -0
  232. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics.egg-info/entry_points.txt +0 -0
  233. {ultralytics-8.2.49 → ultralytics-8.2.51}/ultralytics.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.49
3
+ Version: 8.2.51
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -55,7 +55,7 @@ Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
55
55
  Requires-Dist: mkdocstrings[python]; extra == "dev"
56
56
  Requires-Dist: mkdocs-jupyter; extra == "dev"
57
57
  Requires-Dist: mkdocs-redirects; extra == "dev"
58
- Requires-Dist: mkdocs-ultralytics-plugin>=0.0.48; extra == "dev"
58
+ Requires-Dist: mkdocs-ultralytics-plugin>=0.0.49; extra == "dev"
59
59
  Provides-Extra: export
60
60
  Requires-Dist: onnx>=1.12.0; extra == "export"
61
61
  Requires-Dist: coremltools>=7.0; (platform_system != "Windows" and python_version <= "3.11") and extra == "export"
@@ -90,10 +90,10 @@ Requires-Dist: pycocotools>=2.0.7; extra == "extra"
90
90
 
91
91
  <div>
92
92
  <a href="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yaml"><img src="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yaml/badge.svg" alt="Ultralytics CI"></a>
93
- <a href="https://codecov.io/github/ultralytics/ultralytics"><img src="https://codecov.io/github/ultralytics/ultralytics/branch/main/graph/badge.svg?token=HHW7IIVFVY" alt="Ultralytics Code Coverage"></a>
94
93
  <a href="https://zenodo.org/badge/latestdoi/264818686"><img src="https://zenodo.org/badge/264818686.svg" alt="Ultralytics YOLOv8 Citation"></a>
95
94
  <a href="https://hub.docker.com/r/ultralytics/ultralytics"><img src="https://img.shields.io/docker/pulls/ultralytics/ultralytics?logo=docker" alt="Ultralytics Docker Pulls"></a>
96
95
  <a href="https://ultralytics.com/discord"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
96
+ <a href="https://community.ultralytics.com"><img alt="Ultralytics Forums" src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fcommunity.ultralytics.com&logo=discourse&label=Forums&color=blue"></a>
97
97
  <br>
98
98
  <a href="https://console.paperspace.com/github/ultralytics/ultralytics"><img src="https://assets.paperspace.io/img/gradient-badge.svg" alt="Run Ultralytics on Gradient"></a>
99
99
  <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open Ultralytics In Colab"></a>
@@ -8,10 +8,10 @@
8
8
 
9
9
  <div>
10
10
  <a href="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yaml"><img src="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yaml/badge.svg" alt="Ultralytics CI"></a>
11
- <a href="https://codecov.io/github/ultralytics/ultralytics"><img src="https://codecov.io/github/ultralytics/ultralytics/branch/main/graph/badge.svg?token=HHW7IIVFVY" alt="Ultralytics Code Coverage"></a>
12
11
  <a href="https://zenodo.org/badge/latestdoi/264818686"><img src="https://zenodo.org/badge/264818686.svg" alt="Ultralytics YOLOv8 Citation"></a>
13
12
  <a href="https://hub.docker.com/r/ultralytics/ultralytics"><img src="https://img.shields.io/docker/pulls/ultralytics/ultralytics?logo=docker" alt="Ultralytics Docker Pulls"></a>
14
13
  <a href="https://ultralytics.com/discord"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
14
+ <a href="https://community.ultralytics.com"><img alt="Ultralytics Forums" src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fcommunity.ultralytics.com&logo=discourse&label=Forums&color=blue"></a>
15
15
  <br>
16
16
  <a href="https://console.paperspace.com/github/ultralytics/ultralytics"><img src="https://assets.paperspace.io/img/gradient-badge.svg" alt="Run Ultralytics on Gradient"></a>
17
17
  <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open Ultralytics In Colab"></a>
@@ -93,7 +93,7 @@ dev = [
93
93
  "mkdocstrings[python]",
94
94
  "mkdocs-jupyter", # for notebooks
95
95
  "mkdocs-redirects", # for 301 redirects
96
- "mkdocs-ultralytics-plugin>=0.0.48", # for meta descriptions and images, dates and authors
96
+ "mkdocs-ultralytics-plugin>=0.0.49", # for meta descriptions and images, dates and authors
97
97
  ]
98
98
  export = [
99
99
  "onnx>=1.12.0", # ONNX export
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = "8.2.49"
3
+ __version__ = "8.2.51"
4
4
 
5
5
  import os
6
6
 
@@ -78,10 +78,13 @@ CLI_HELP_MSG = f"""
78
78
  4. Export a YOLOv8n classification model to ONNX format at image size 224 by 128 (no TASK required)
79
79
  yolo export model=yolov8n-cls.pt format=onnx imgsz=224,128
80
80
 
81
- 6. Explore your datasets using semantic search and SQL with a simple GUI powered by Ultralytics Explorer API
81
+ 5. Explore your datasets using semantic search and SQL with a simple GUI powered by Ultralytics Explorer API
82
82
  yolo explorer
83
-
84
- 5. Run special commands:
83
+
84
+ 6. Streamlit real-time object detection on your webcam with Ultralytics YOLOv8
85
+ yolo streamlit-predict
86
+
87
+ 7. Run special commands:
85
88
  yolo help
86
89
  yolo checks
87
90
  yolo version
@@ -514,6 +517,13 @@ def handle_explorer():
514
517
  subprocess.run(["streamlit", "run", ROOT / "data/explorer/gui/dash.py", "--server.maxMessageSize", "2048"])
515
518
 
516
519
 
520
+ def handle_streamlit_inference():
521
+ """Open the Ultralytics Live Inference streamlit app for real time object detection."""
522
+ checks.check_requirements(["streamlit", "opencv-python", "torch"])
523
+ LOGGER.info("💡 Loading Ultralytics Live Inference app...")
524
+ subprocess.run(["streamlit", "run", ROOT / "solutions/streamlit_inference.py", "--server.headless", "true"])
525
+
526
+
517
527
  def parse_key_value_pair(pair):
518
528
  """Parse one 'key=value' pair and return key and value."""
519
529
  k, v = pair.split("=", 1) # split on first '=' sign
@@ -582,6 +592,7 @@ def entrypoint(debug=""):
582
592
  "login": lambda: handle_yolo_hub(args),
583
593
  "copy-cfg": copy_default_cfg,
584
594
  "explorer": lambda: handle_explorer(),
595
+ "streamlit-predict": lambda: handle_streamlit_inference(),
585
596
  }
586
597
  full_args_dict = {**DEFAULT_CFG_DICT, **{k: None for k in TASKS}, **{k: None for k in MODES}, **special}
587
598
 
@@ -686,7 +686,7 @@ class RandomFlip:
686
686
  flip_idx (array-like, optional): Index mapping for flipping keypoints, if any.
687
687
  """
688
688
  assert direction in {"horizontal", "vertical"}, f"Support direction `horizontal` or `vertical`, got {direction}"
689
- assert 0 <= p <= 1.0
689
+ assert 0 <= p <= 1.0, f"The probability should be in range [0, 1], but got {p}."
690
690
 
691
691
  self.p = p
692
692
  self.direction = direction
@@ -1210,7 +1210,7 @@ def classify_transforms(
1210
1210
  import torchvision.transforms as T # scope for faster 'import ultralytics'
1211
1211
 
1212
1212
  if isinstance(size, (tuple, list)):
1213
- assert len(size) == 2
1213
+ assert len(size) == 2, f"'size' tuples must be length 2, not length {len(size)}"
1214
1214
  scale_size = tuple(math.floor(x / crop_fraction) for x in size)
1215
1215
  else:
1216
1216
  scale_size = math.floor(size / crop_fraction)
@@ -1288,7 +1288,7 @@ def classify_augmentations(
1288
1288
  secondary_tfl = []
1289
1289
  disable_color_jitter = False
1290
1290
  if auto_augment:
1291
- assert isinstance(auto_augment, str)
1291
+ assert isinstance(auto_augment, str), f"Provided argument should be string, but got type {type(auto_augment)}"
1292
1292
  # color jitter is typically disabled if AA/RA on,
1293
1293
  # this allows override without breaking old hparm cfgs
1294
1294
  disable_color_jitter = not force_color_jitter
@@ -686,9 +686,10 @@ class Exporter:
686
686
  import tensorrt as trt # noqa
687
687
  except ImportError:
688
688
  if LINUX:
689
- check_requirements("tensorrt", cmds="-U")
689
+ check_requirements("tensorrt>7.0.0,<=10.1.0")
690
690
  import tensorrt as trt # noqa
691
- check_version(trt.__version__, "7.0.0", hard=True) # require tensorrt>=7.0.0
691
+ check_version(trt.__version__, ">=7.0.0", hard=True)
692
+ check_version(trt.__version__, "<=10.1.0", msg="https://github.com/ultralytics/ultralytics/pull/14239")
692
693
 
693
694
  # Setup and checks
694
695
  LOGGER.info(f"\n{prefix} starting export with TensorRT {trt.__version__}...")
@@ -42,7 +42,7 @@ class BaseTensor(SimpleClass):
42
42
  base_tensor = BaseTensor(data, orig_shape)
43
43
  ```
44
44
  """
45
- assert isinstance(data, (torch.Tensor, np.ndarray))
45
+ assert isinstance(data, (torch.Tensor, np.ndarray)), "data must be torch.Tensor or np.ndarray"
46
46
  self.data = data
47
47
  self.orig_shape = orig_shape
48
48
 
@@ -120,7 +120,12 @@ class Results(SimpleClass):
120
120
  boxes (torch.tensor, optional): A 2D tensor of bounding box coordinates for each detection.
121
121
  masks (torch.tensor, optional): A 3D tensor of detection masks, where each mask is a binary image.
122
122
  probs (torch.tensor, optional): A 1D tensor of probabilities of each class for classification task.
123
- keypoints (torch.tensor, optional): A 2D tensor of keypoint coordinates for each detection.
123
+ keypoints (torch.tensor, optional): A 2D tensor of keypoint coordinates for each detection. For default pose
124
+ model, Keypoint indices for human body pose estimation are:
125
+ 0: Nose, 1: Left Eye, 2: Right Eye, 3: Left Ear, 4: Right Ear
126
+ 5: Left Shoulder, 6: Right Shoulder, 7: Left Elbow, 8: Right Elbow
127
+ 9: Left Wrist, 10: Right Wrist, 11: Left Hip, 12: Right Hip
128
+ 13: Left Knee, 14: Right Knee, 15: Left Ankle, 16: Right Ankle
124
129
  obb (torch.tensor, optional): A 2D tensor of oriented bounding box coordinates for each detection.
125
130
  speed (dict, optional): A dictionary containing preprocess, inference, and postprocess speeds (ms/image).
126
131
 
@@ -286,7 +286,7 @@ class FastSAMPrompt:
286
286
  def box_prompt(self, bbox):
287
287
  """Modifies the bounding box properties and calculates IoU between masks and bounding box."""
288
288
  if self.results[0].masks is not None:
289
- assert bbox[2] != 0 and bbox[3] != 0
289
+ assert bbox[2] != 0 and bbox[3] != 0, "Bounding box width and height should not be zero"
290
290
  masks = self.results[0].masks.data
291
291
  target_height, target_width = self.results[0].orig_shape
292
292
  h = masks.shape[1]
@@ -133,7 +133,7 @@ def remove_small_regions(mask: np.ndarray, area_thresh: float, mode: str) -> Tup
133
133
  """Remove small disconnected regions or holes in a mask, returning the mask and a modification indicator."""
134
134
  import cv2 # type: ignore
135
135
 
136
- assert mode in {"holes", "islands"}
136
+ assert mode in {"holes", "islands"}, f"Provided mode {mode} is invalid"
137
137
  correct_holes = mode == "holes"
138
138
  working_mask = (correct_holes ^ mask).astype(np.uint8)
139
139
  n_labels, regions, stats, _ = cv2.connectedComponentsWithStats(working_mask, 8)
@@ -261,7 +261,7 @@ class Attention(torch.nn.Module):
261
261
  """
262
262
  super().__init__()
263
263
 
264
- assert isinstance(resolution, tuple) and len(resolution) == 2
264
+ assert isinstance(resolution, tuple) and len(resolution) == 2, "'resolution' argument not tuple of length 2"
265
265
  self.num_heads = num_heads
266
266
  self.scale = key_dim**-0.5
267
267
  self.key_dim = key_dim
@@ -72,8 +72,8 @@ class WorldTrainerFromScratch(WorldTrainer):
72
72
  """
73
73
  final_data = {}
74
74
  data_yaml = self.args.data
75
- assert data_yaml.get("train", False) # object365.yaml
76
- assert data_yaml.get("val", False) # lvis.yaml
75
+ assert data_yaml.get("train", False), "train dataset not found" # object365.yaml
76
+ assert data_yaml.get("val", False), "validation dataset not found" # lvis.yaml
77
77
  data = {k: [check_det_dataset(d) for d in v.get("yolo_data", [])] for k, v in data_yaml.items()}
78
78
  assert len(data["val"]) == 1, f"Only support validating on 1 dataset for now, but got {len(data['val'])}."
79
79
  val_split = "minival" if "lvis" in data["val"][0]["val"] else "val"
@@ -225,9 +225,10 @@ class AutoBackend(nn.Module):
225
225
  import tensorrt as trt # noqa https://developer.nvidia.com/nvidia-tensorrt-download
226
226
  except ImportError:
227
227
  if LINUX:
228
- check_requirements("tensorrt", cmds="-U")
228
+ check_requirements("tensorrt>7.0.0,<=10.1.0")
229
229
  import tensorrt as trt # noqa
230
- check_version(trt.__version__, "7.0.0", hard=True) # require tensorrt>=7.0.0
230
+ check_version(trt.__version__, ">=7.0.0", hard=True)
231
+ check_version(trt.__version__, "<=10.1.0", msg="https://github.com/ultralytics/ultralytics/pull/14239")
231
232
  if device.type == "cpu":
232
233
  device = torch.device("cuda:0")
233
234
  Binding = namedtuple("Binding", ("name", "dtype", "shape", "data", "ptr"))
@@ -276,7 +276,7 @@ class BaseModel(nn.Module):
276
276
  batch (dict): Batch to compute loss on
277
277
  preds (torch.Tensor | List[torch.Tensor]): Predictions.
278
278
  """
279
- if not hasattr(self, "criterion"):
279
+ if getattr(self, "criterion", None) is None:
280
280
  self.criterion = self.init_criterion()
281
281
 
282
282
  preds = self.forward(batch["img"]) if preds is None else preds
@@ -8,6 +8,7 @@ from .object_counter import ObjectCounter
8
8
  from .parking_management import ParkingManagement, ParkingPtsSelection
9
9
  from .queue_management import QueueManager
10
10
  from .speed_estimation import SpeedEstimator
11
+ from .streamlit_inference import inference
11
12
 
12
13
  __all__ = (
13
14
  "AIGym",
@@ -0,0 +1,154 @@
1
+ # Ultralytics YOLO 🚀, AGPL-3.0 license
2
+
3
+ import io
4
+ import time
5
+
6
+ import cv2
7
+ import torch
8
+
9
+
10
+ def inference():
11
+ """Runs real-time object detection on video input using Ultralytics YOLOv8 in a Streamlit application."""
12
+
13
+ # Scope imports for faster ultralytics package load speeds
14
+ import streamlit as st
15
+
16
+ from ultralytics import YOLO
17
+
18
+ # Hide main menu style
19
+ menu_style_cfg = """<style>MainMenu {visibility: hidden;}</style>"""
20
+
21
+ # Main title of streamlit application
22
+ main_title_cfg = """<div><h1 style="color:#FF64DA; text-align:center; font-size:40px;
23
+ font-family: 'Archivo', sans-serif; margin-top:-50px;margin-bottom:20px;">
24
+ Ultralytics YOLOv8 Streamlit Application
25
+ </h1></div>"""
26
+
27
+ # Subtitle of streamlit application
28
+ sub_title_cfg = """<div><h4 style="color:#042AFF; text-align:center;
29
+ font-family: 'Archivo', sans-serif; margin-top:-15px; margin-bottom:50px;">
30
+ Experience real-time object detection on your webcam with the power of Ultralytics YOLOv8! 🚀</h4>
31
+ </div>"""
32
+
33
+ # Set html page configuration
34
+ st.set_page_config(page_title="Ultralytics Streamlit App", layout="wide", initial_sidebar_state="auto")
35
+
36
+ # Append the custom HTML
37
+ st.markdown(menu_style_cfg, unsafe_allow_html=True)
38
+ st.markdown(main_title_cfg, unsafe_allow_html=True)
39
+ st.markdown(sub_title_cfg, unsafe_allow_html=True)
40
+
41
+ # Add ultralytics logo in sidebar
42
+ with st.sidebar:
43
+ logo = "https://raw.githubusercontent.com/ultralytics/assets/main/logo/Ultralytics_Logotype_Original.svg"
44
+ st.image(logo, width=250)
45
+
46
+ # Add elements to vertical setting menu
47
+ st.sidebar.title("User Configuration")
48
+
49
+ # Add video source selection dropdown
50
+ source = st.sidebar.selectbox(
51
+ "Video",
52
+ ("webcam", "video"),
53
+ )
54
+
55
+ vid_file_name = ""
56
+ if source == "video":
57
+ vid_file = st.sidebar.file_uploader("Upload Video File", type=["mp4", "mov", "avi", "mkv"])
58
+ if vid_file is not None:
59
+ g = io.BytesIO(vid_file.read()) # BytesIO Object
60
+ vid_location = "ultralytics.mp4"
61
+ with open(vid_location, "wb") as out: # Open temporary file as bytes
62
+ out.write(g.read()) # Read bytes into file
63
+ vid_file_name = "ultralytics.mp4"
64
+ elif source == "webcam":
65
+ vid_file_name = 0
66
+
67
+ # Add dropdown menu for model selection
68
+ yolov8_model = st.sidebar.selectbox(
69
+ "Model",
70
+ (
71
+ "YOLOv8n",
72
+ "YOLOv8s",
73
+ "YOLOv8m",
74
+ "YOLOv8l",
75
+ "YOLOv8x",
76
+ "YOLOv8n-Seg",
77
+ "YOLOv8s-Seg",
78
+ "YOLOv8m-Seg",
79
+ "YOLOv8l-Seg",
80
+ "YOLOv8x-Seg",
81
+ "YOLOv8n-Pose",
82
+ "YOLOv8s-Pose",
83
+ "YOLOv8m-Pose",
84
+ "YOLOv8l-Pose",
85
+ "YOLOv8x-Pose",
86
+ ),
87
+ )
88
+ model = YOLO(f"{yolov8_model.lower()}.pt") # Load the yolov8 model
89
+ class_names = list(model.names.values()) # Convert dictionary to list of class names
90
+
91
+ # Multiselect box with class names and get indices of selected classes
92
+ selected_classes = st.sidebar.multiselect("Classes", class_names, default=class_names[:3])
93
+ selected_ind = [class_names.index(option) for option in selected_classes]
94
+
95
+ if not isinstance(selected_ind, list): # Ensure selected_options is a list
96
+ selected_ind = list(selected_ind)
97
+
98
+ conf_thres = st.sidebar.slider("Confidence Threshold", 0.0, 1.0, 0.25, 0.01)
99
+ nms_thres = st.sidebar.slider("NMS Threshold", 0.0, 1.0, 0.45, 0.01)
100
+
101
+ col1, col2 = st.columns(2)
102
+ org_frame = col1.empty()
103
+ ann_frame = col2.empty()
104
+
105
+ fps_display = st.sidebar.empty() # Placeholder for FPS display
106
+
107
+ if st.sidebar.button("Start"):
108
+ videocapture = cv2.VideoCapture(vid_file_name) # Capture the video
109
+
110
+ if not videocapture.isOpened():
111
+ st.error("Could not open webcam.")
112
+
113
+ stop_button = st.button("Stop") # Button to stop the inference
114
+
115
+ prev_time = 0
116
+ while videocapture.isOpened():
117
+ success, frame = videocapture.read()
118
+ if not success:
119
+ st.warning("Failed to read frame from webcam. Please make sure the webcam is connected properly.")
120
+ break
121
+
122
+ curr_time = time.time()
123
+ fps = 1 / (curr_time - prev_time)
124
+ prev_time = curr_time
125
+
126
+ # Store model predictions
127
+ results = model(frame, conf=float(conf_thres), iou=float(nms_thres), classes=selected_ind)
128
+ annotated_frame = results[0].plot() # Add annotations on frame
129
+
130
+ # display frame
131
+ org_frame.image(frame, channels="BGR")
132
+ ann_frame.image(annotated_frame, channels="BGR")
133
+
134
+ if stop_button:
135
+ videocapture.release() # Release the capture
136
+ torch.cuda.empty_cache() # Clear CUDA memory
137
+ st.stop() # Stop streamlit app
138
+
139
+ # Display FPS in sidebar
140
+ fps_display.metric("FPS", f"{fps:.2f}")
141
+
142
+ # Release the capture
143
+ videocapture.release()
144
+
145
+ # Clear CUDA memory
146
+ torch.cuda.empty_cache()
147
+
148
+ # Destroy window
149
+ cv2.destroyAllWindows()
150
+
151
+
152
+ # Main function call
153
+ if __name__ == "__main__":
154
+ inference()
@@ -22,7 +22,7 @@ GITHUB_ASSETS_NAMES = (
22
22
  + [f"yolov3{k}u.pt" for k in ("", "-spp", "-tiny")]
23
23
  + [f"yolov8{k}-world.pt" for k in "smlx"]
24
24
  + [f"yolov8{k}-worldv2.pt" for k in "smlx"]
25
- + [f"yolov9{k}.pt" for k in "ce"]
25
+ + [f"yolov9{k}.pt" for k in "tsmce"]
26
26
  + [f"yolov10{k}.pt" for k in "nsmblx"]
27
27
  + [f"yolo_nas_{k}.pt" for k in "sml"]
28
28
  + [f"sam_{k}.pt" for k in "bl"]
@@ -740,18 +740,18 @@ class Annotator:
740
740
  cv2.polylines(self.im, [np.int32([mask])], isClosed=True, color=mask_color, thickness=2)
741
741
 
742
742
  label = f"Track ID: {track_label}" if track_label else det_label
743
- text_size, _ = cv2.getTextSize(label, 0, 0.7, 1)
743
+ text_size, _ = cv2.getTextSize(label, 0, self.sf, self.tf)
744
744
 
745
745
  cv2.rectangle(
746
746
  self.im,
747
747
  (int(mask[0][0]) - text_size[0] // 2 - 10, int(mask[0][1]) - text_size[1] - 10),
748
- (int(mask[0][0]) + text_size[0] // 2 + 5, int(mask[0][1] + 5)),
748
+ (int(mask[0][0]) + text_size[0] // 2 + 10, int(mask[0][1] + 10)),
749
749
  mask_color,
750
750
  -1,
751
751
  )
752
752
 
753
753
  cv2.putText(
754
- self.im, label, (int(mask[0][0]) - text_size[0] // 2, int(mask[0][1]) - 5), 0, 0.7, (255, 255, 255), 2
754
+ self.im, label, (int(mask[0][0]) - text_size[0] // 2, int(mask[0][1])), 0, self.sf, (255, 255, 255), self.tf
755
755
  )
756
756
 
757
757
  def plot_distance_and_line(self, distance_m, distance_mm, centroids, line_color, centroid_color):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.2.49
3
+ Version: 8.2.51
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Author: Glenn Jocher, Ayush Chaurasia, Jing Qiu
6
6
  Maintainer: Glenn Jocher, Ayush Chaurasia, Jing Qiu
@@ -55,7 +55,7 @@ Requires-Dist: mkdocs-material>=9.5.9; extra == "dev"
55
55
  Requires-Dist: mkdocstrings[python]; extra == "dev"
56
56
  Requires-Dist: mkdocs-jupyter; extra == "dev"
57
57
  Requires-Dist: mkdocs-redirects; extra == "dev"
58
- Requires-Dist: mkdocs-ultralytics-plugin>=0.0.48; extra == "dev"
58
+ Requires-Dist: mkdocs-ultralytics-plugin>=0.0.49; extra == "dev"
59
59
  Provides-Extra: export
60
60
  Requires-Dist: onnx>=1.12.0; extra == "export"
61
61
  Requires-Dist: coremltools>=7.0; (platform_system != "Windows" and python_version <= "3.11") and extra == "export"
@@ -90,10 +90,10 @@ Requires-Dist: pycocotools>=2.0.7; extra == "extra"
90
90
 
91
91
  <div>
92
92
  <a href="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yaml"><img src="https://github.com/ultralytics/ultralytics/actions/workflows/ci.yaml/badge.svg" alt="Ultralytics CI"></a>
93
- <a href="https://codecov.io/github/ultralytics/ultralytics"><img src="https://codecov.io/github/ultralytics/ultralytics/branch/main/graph/badge.svg?token=HHW7IIVFVY" alt="Ultralytics Code Coverage"></a>
94
93
  <a href="https://zenodo.org/badge/latestdoi/264818686"><img src="https://zenodo.org/badge/264818686.svg" alt="Ultralytics YOLOv8 Citation"></a>
95
94
  <a href="https://hub.docker.com/r/ultralytics/ultralytics"><img src="https://img.shields.io/docker/pulls/ultralytics/ultralytics?logo=docker" alt="Ultralytics Docker Pulls"></a>
96
95
  <a href="https://ultralytics.com/discord"><img alt="Ultralytics Discord" src="https://img.shields.io/discord/1089800235347353640?logo=discord&logoColor=white&label=Discord&color=blue"></a>
96
+ <a href="https://community.ultralytics.com"><img alt="Ultralytics Forums" src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fcommunity.ultralytics.com&logo=discourse&label=Forums&color=blue"></a>
97
97
  <br>
98
98
  <a href="https://console.paperspace.com/github/ultralytics/ultralytics"><img src="https://assets.paperspace.io/img/gradient-badge.svg" alt="Run Ultralytics on Gradient"></a>
99
99
  <a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open Ultralytics In Colab"></a>
@@ -197,6 +197,7 @@ ultralytics/solutions/object_counter.py
197
197
  ultralytics/solutions/parking_management.py
198
198
  ultralytics/solutions/queue_management.py
199
199
  ultralytics/solutions/speed_estimation.py
200
+ ultralytics/solutions/streamlit_inference.py
200
201
  ultralytics/trackers/__init__.py
201
202
  ultralytics/trackers/basetrack.py
202
203
  ultralytics/trackers/bot_sort.py
@@ -24,7 +24,7 @@ mkdocs-material>=9.5.9
24
24
  mkdocstrings[python]
25
25
  mkdocs-jupyter
26
26
  mkdocs-redirects
27
- mkdocs-ultralytics-plugin>=0.0.48
27
+ mkdocs-ultralytics-plugin>=0.0.49
28
28
 
29
29
  [explorer]
30
30
  lancedb
File without changes
File without changes