ultralytics 8.0.217__tar.gz → 8.0.219__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 (179) hide show
  1. {ultralytics-8.0.217/ultralytics.egg-info → ultralytics-8.0.219}/PKG-INFO +1 -1
  2. {ultralytics-8.0.217 → ultralytics-8.0.219}/tests/test_python.py +4 -3
  3. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/__init__.py +1 -1
  4. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/__init__.py +5 -2
  5. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/default.yaml +13 -10
  6. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/data/loaders.py +7 -2
  7. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/engine/predictor.py +15 -5
  8. {ultralytics-8.0.217 → ultralytics-8.0.219/ultralytics.egg-info}/PKG-INFO +1 -1
  9. {ultralytics-8.0.217 → ultralytics-8.0.219}/CONTRIBUTING.md +0 -0
  10. {ultralytics-8.0.217 → ultralytics-8.0.219}/LICENSE +0 -0
  11. {ultralytics-8.0.217 → ultralytics-8.0.219}/MANIFEST.in +0 -0
  12. {ultralytics-8.0.217 → ultralytics-8.0.219}/README.md +0 -0
  13. {ultralytics-8.0.217 → ultralytics-8.0.219}/README.zh-CN.md +0 -0
  14. {ultralytics-8.0.217 → ultralytics-8.0.219}/requirements.txt +0 -0
  15. {ultralytics-8.0.217 → ultralytics-8.0.219}/setup.cfg +0 -0
  16. {ultralytics-8.0.217 → ultralytics-8.0.219}/setup.py +0 -0
  17. {ultralytics-8.0.217 → ultralytics-8.0.219}/tests/conftest.py +0 -0
  18. {ultralytics-8.0.217 → ultralytics-8.0.219}/tests/test_cli.py +0 -0
  19. {ultralytics-8.0.217 → ultralytics-8.0.219}/tests/test_cuda.py +0 -0
  20. {ultralytics-8.0.217 → ultralytics-8.0.219}/tests/test_engine.py +0 -0
  21. {ultralytics-8.0.217 → ultralytics-8.0.219}/tests/test_integrations.py +0 -0
  22. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/assets/bus.jpg +0 -0
  23. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/assets/zidane.jpg +0 -0
  24. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  25. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/DOTAv2.yaml +0 -0
  26. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  27. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  28. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  29. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  30. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  31. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  32. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  33. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco.yaml +0 -0
  34. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  35. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  36. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  37. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  38. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  39. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  40. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  41. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/datasets/xView.yaml +0 -0
  42. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  43. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  44. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  45. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  46. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  47. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  48. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  49. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  50. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  51. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  52. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  53. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  54. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  55. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  56. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  57. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  58. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  59. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  60. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  61. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/data/__init__.py +0 -0
  62. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/data/annotator.py +0 -0
  63. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/data/augment.py +0 -0
  64. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/data/base.py +0 -0
  65. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/data/build.py +0 -0
  66. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/data/converter.py +0 -0
  67. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/data/dataset.py +0 -0
  68. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/data/utils.py +0 -0
  69. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/engine/__init__.py +0 -0
  70. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/engine/exporter.py +0 -0
  71. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/engine/model.py +0 -0
  72. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/engine/results.py +0 -0
  73. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/engine/trainer.py +0 -0
  74. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/engine/tuner.py +0 -0
  75. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/engine/validator.py +0 -0
  76. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/hub/__init__.py +0 -0
  77. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/hub/auth.py +0 -0
  78. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/hub/session.py +0 -0
  79. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/hub/utils.py +0 -0
  80. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/__init__.py +0 -0
  81. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/fastsam/__init__.py +0 -0
  82. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/fastsam/model.py +0 -0
  83. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/fastsam/predict.py +0 -0
  84. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/fastsam/prompt.py +0 -0
  85. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/fastsam/utils.py +0 -0
  86. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/fastsam/val.py +0 -0
  87. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/nas/__init__.py +0 -0
  88. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/nas/model.py +0 -0
  89. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/nas/predict.py +0 -0
  90. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/nas/val.py +0 -0
  91. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/rtdetr/__init__.py +0 -0
  92. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/rtdetr/model.py +0 -0
  93. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/rtdetr/predict.py +0 -0
  94. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/rtdetr/train.py +0 -0
  95. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/rtdetr/val.py +0 -0
  96. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/__init__.py +0 -0
  97. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/amg.py +0 -0
  98. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/build.py +0 -0
  99. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/model.py +0 -0
  100. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/modules/__init__.py +0 -0
  101. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/modules/decoders.py +0 -0
  102. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/modules/encoders.py +0 -0
  103. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/modules/sam.py +0 -0
  104. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  105. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/modules/transformer.py +0 -0
  106. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/sam/predict.py +0 -0
  107. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/utils/__init__.py +0 -0
  108. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/utils/loss.py +0 -0
  109. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/utils/ops.py +0 -0
  110. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/__init__.py +0 -0
  111. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/classify/__init__.py +0 -0
  112. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/classify/predict.py +0 -0
  113. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/classify/train.py +0 -0
  114. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/classify/val.py +0 -0
  115. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/detect/__init__.py +0 -0
  116. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/detect/predict.py +0 -0
  117. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/detect/train.py +0 -0
  118. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/detect/val.py +0 -0
  119. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/model.py +0 -0
  120. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/pose/__init__.py +0 -0
  121. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/pose/predict.py +0 -0
  122. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/pose/train.py +0 -0
  123. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/pose/val.py +0 -0
  124. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/segment/__init__.py +0 -0
  125. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/segment/predict.py +0 -0
  126. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/segment/train.py +0 -0
  127. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/models/yolo/segment/val.py +0 -0
  128. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/nn/__init__.py +0 -0
  129. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/nn/autobackend.py +0 -0
  130. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/nn/modules/__init__.py +0 -0
  131. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/nn/modules/block.py +0 -0
  132. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/nn/modules/conv.py +0 -0
  133. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/nn/modules/head.py +0 -0
  134. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/nn/modules/transformer.py +0 -0
  135. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/nn/modules/utils.py +0 -0
  136. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/nn/tasks.py +0 -0
  137. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/trackers/__init__.py +0 -0
  138. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/trackers/basetrack.py +0 -0
  139. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/trackers/bot_sort.py +0 -0
  140. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/trackers/byte_tracker.py +0 -0
  141. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/trackers/track.py +0 -0
  142. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/trackers/utils/__init__.py +0 -0
  143. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/trackers/utils/gmc.py +0 -0
  144. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  145. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/trackers/utils/matching.py +0 -0
  146. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/__init__.py +0 -0
  147. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/autobatch.py +0 -0
  148. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/benchmarks.py +0 -0
  149. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/__init__.py +0 -0
  150. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/base.py +0 -0
  151. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/clearml.py +0 -0
  152. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/comet.py +0 -0
  153. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/dvc.py +0 -0
  154. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/hub.py +0 -0
  155. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/mlflow.py +0 -0
  156. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/neptune.py +0 -0
  157. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/raytune.py +0 -0
  158. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  159. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/callbacks/wb.py +0 -0
  160. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/checks.py +0 -0
  161. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/dist.py +0 -0
  162. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/downloads.py +0 -0
  163. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/errors.py +0 -0
  164. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/files.py +0 -0
  165. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/instance.py +0 -0
  166. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/loss.py +0 -0
  167. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/metrics.py +0 -0
  168. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/ops.py +0 -0
  169. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/patches.py +0 -0
  170. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/plotting.py +0 -0
  171. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/tal.py +0 -0
  172. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/torch_utils.py +0 -0
  173. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/triton.py +0 -0
  174. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics/utils/tuner.py +0 -0
  175. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics.egg-info/SOURCES.txt +0 -0
  176. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics.egg-info/dependency_links.txt +0 -0
  177. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics.egg-info/entry_points.txt +0 -0
  178. {ultralytics-8.0.217 → ultralytics-8.0.219}/ultralytics.egg-info/requires.txt +0 -0
  179. {ultralytics-8.0.217 → ultralytics-8.0.219}/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.0.217
3
+ Version: 8.0.219
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Home-page: https://github.com/ultralytics/ultralytics
6
6
  Author: Ultralytics
@@ -154,9 +154,10 @@ def test_track_stream():
154
154
  """
155
155
  import yaml
156
156
 
157
+ video_url = 'https://ultralytics.com/assets/decelera_portrait_min.mov'
157
158
  model = YOLO(MODEL)
158
- model.track('https://ultralytics.com/assets/decelera_portrait_min.mov', imgsz=160, tracker='bytetrack.yaml')
159
- model.track('https://ultralytics.com/assets/decelera_portrait_min.mov', imgsz=160, tracker='botsort.yaml')
159
+ model.track(video_url, imgsz=160, tracker='bytetrack.yaml')
160
+ model.track(video_url, imgsz=160, tracker='botsort.yaml', save_frames=True) # test frame saving also
160
161
 
161
162
  # Test Global Motion Compensation (GMC) methods
162
163
  for gmc in 'orb', 'sift', 'ecc':
@@ -166,7 +167,7 @@ def test_track_stream():
166
167
  data['gmc_method'] = gmc
167
168
  with open(tracker, 'w', encoding='utf-8') as f:
168
169
  yaml.safe_dump(data, f)
169
- model.track('https://ultralytics.com/assets/decelera_portrait_min.mov', imgsz=160, tracker=tracker)
170
+ model.track(video_url, imgsz=160, tracker=tracker)
170
171
 
171
172
 
172
173
  def test_val():
@@ -1,6 +1,6 @@
1
1
  # Ultralytics YOLO 🚀, AGPL-3.0 license
2
2
 
3
- __version__ = '8.0.217'
3
+ __version__ = '8.0.219'
4
4
 
5
5
  from ultralytics.models import RTDETR, SAM, YOLO
6
6
  from ultralytics.models.fastsam import FastSAM
@@ -71,8 +71,8 @@ CFG_INT_KEYS = ('epochs', 'patience', 'batch', 'workers', 'seed', 'close_mosaic'
71
71
  'line_width', 'workspace', 'nbs', 'save_period')
72
72
  CFG_BOOL_KEYS = ('save', 'exist_ok', 'verbose', 'deterministic', 'single_cls', 'rect', 'cos_lr', 'overlap_mask', 'val',
73
73
  'save_json', 'save_hybrid', 'half', 'dnn', 'plots', 'show', 'save_txt', 'save_conf', 'save_crop',
74
- 'show_labels', 'show_conf', 'visualize', 'augment', 'agnostic_nms', 'retina_masks', 'boxes', 'keras',
75
- 'optimize', 'int8', 'dynamic', 'simplify', 'nms', 'profile')
74
+ 'save_frames', 'show_labels', 'show_conf', 'visualize', 'augment', 'agnostic_nms', 'retina_masks',
75
+ 'show_boxes', 'keras', 'optimize', 'int8', 'dynamic', 'simplify', 'nms', 'profile')
76
76
 
77
77
 
78
78
  def cfg2dict(cfg):
@@ -164,6 +164,9 @@ def _handle_deprecation(custom):
164
164
  """Hardcoded function to handle deprecated config keys."""
165
165
 
166
166
  for key in custom.copy().keys():
167
+ if key == 'boxes':
168
+ deprecation_warn(key, 'show_boxes')
169
+ custom['show_boxes'] = custom.pop('boxes')
167
170
  if key == 'hide_labels':
168
171
  deprecation_warn(key, 'show_labels')
169
172
  custom['show_labels'] = custom.pop('hide_labels') == 'False'
@@ -49,25 +49,28 @@ iou: 0.7 # (float) intersection over union (IoU) threshold for NMS
49
49
  max_det: 300 # (int) maximum number of detections per image
50
50
  half: False # (bool) use half precision (FP16)
51
51
  dnn: False # (bool) use OpenCV DNN for ONNX inference
52
- plots: True # (bool) save plots during train/val
52
+ plots: True # (bool) save plots and images during train/val
53
53
 
54
- # Prediction settings --------------------------------------------------------------------------------------------------
54
+ # Predict settings -----------------------------------------------------------------------------------------------------
55
55
  source: # (str, optional) source directory for images or videos
56
- show: False # (bool) show results if possible
57
- save_txt: False # (bool) save results as .txt file
58
- save_conf: False # (bool) save results with confidence scores
59
- save_crop: False # (bool) save cropped images with results
60
- show_labels: True # (bool) show object labels in plots
61
- show_conf: True # (bool) show object confidence scores in plots
62
56
  vid_stride: 1 # (int) video frame-rate stride
63
57
  stream_buffer: False # (bool) buffer all streaming frames (True) or return the most recent frame (False)
64
- line_width: # (int, optional) line width of the bounding boxes, auto if missing
65
58
  visualize: False # (bool) visualize model features
66
59
  augment: False # (bool) apply image augmentation to prediction sources
67
60
  agnostic_nms: False # (bool) class-agnostic NMS
68
61
  classes: # (int | list[int], optional) filter results by class, i.e. classes=0, or classes=[0,2,3]
69
62
  retina_masks: False # (bool) use high-resolution segmentation masks
70
- boxes: True # (bool) Show boxes in segmentation predictions
63
+
64
+ # Visualize settings ---------------------------------------------------------------------------------------------------
65
+ show: False # (bool) show predicted images and videos if environment allows
66
+ save_frames: False # (bool) save predicted individual video frames
67
+ save_txt: False # (bool) save results as .txt file
68
+ save_conf: False # (bool) save results with confidence scores
69
+ save_crop: False # (bool) save cropped images with results
70
+ show_labels: True # (bool) show prediction labels, i.e. 'person'
71
+ show_conf: True # (bool) show prediction confidence, i.e. '0.99'
72
+ show_boxes: True # (bool) show prediction boxes
73
+ line_width: # (int, optional) line width of the bounding boxes. Scaled to image size if None.
71
74
 
72
75
  # Export settings ------------------------------------------------------------------------------------------------------
73
76
  format: torchscript # (str) format to export to, choices at https://docs.ultralytics.com/modes/export/#export-formats
@@ -67,11 +67,16 @@ class LoadStreams:
67
67
  self.mode = 'stream'
68
68
  self.imgsz = imgsz
69
69
  self.vid_stride = vid_stride # video frame-rate stride
70
+
70
71
  sources = Path(sources).read_text().rsplit() if os.path.isfile(sources) else [sources]
71
72
  n = len(sources)
72
- self.sources = [ops.clean_str(x) for x in sources] # clean source names for later
73
- self.imgs, self.fps, self.frames, self.threads, self.shape = [[]] * n, [0] * n, [0] * n, [None] * n, [[]] * n
73
+ self.fps = [0] * n # frames per second
74
+ self.frames = [0] * n
75
+ self.threads = [None] * n
74
76
  self.caps = [None] * n # video capture objects
77
+ self.imgs = [[] for _ in range(n)] # images
78
+ self.shape = [[] for _ in range(n)] # image shapes
79
+ self.sources = [ops.clean_str(x) for x in sources] # clean source names for later
75
80
  for i, s in enumerate(sources): # index, source
76
81
  # Start thread to read frames from video stream
77
82
  st = f'{i + 1}/{n}: {s}... '
@@ -98,7 +98,7 @@ class BasePredictor:
98
98
  self.imgsz = None
99
99
  self.device = None
100
100
  self.dataset = None
101
- self.vid_path, self.vid_writer = None, None
101
+ self.vid_path, self.vid_writer, self.vid_frame = None, None, None
102
102
  self.plotted_img = None
103
103
  self.data_path = None
104
104
  self.source_type = None
@@ -170,7 +170,7 @@ class BasePredictor:
170
170
  if self.args.save or self.args.show: # Add bbox to image
171
171
  plot_args = {
172
172
  'line_width': self.args.line_width,
173
- 'boxes': self.args.boxes,
173
+ 'boxes': self.args.show_boxes,
174
174
  'conf': self.args.show_conf,
175
175
  'labels': self.args.show_labels}
176
176
  if not self.args.retina_masks:
@@ -221,7 +221,9 @@ class BasePredictor:
221
221
  len(self.dataset) > 1000 or # images
222
222
  any(getattr(self.dataset, 'video_flag', [False]))): # videos
223
223
  LOGGER.warning(STREAM_WARNING)
224
- self.vid_path, self.vid_writer = [None] * self.dataset.bs, [None] * self.dataset.bs
224
+ self.vid_path = [None] * self.dataset.bs
225
+ self.vid_writer = [None] * self.dataset.bs
226
+ self.vid_frame = [None] * self.dataset.bs
225
227
 
226
228
  @smart_inference_mode()
227
229
  def stream_inference(self, source=None, model=None, *args, **kwargs):
@@ -341,8 +343,11 @@ class BasePredictor:
341
343
  if self.dataset.mode == 'image':
342
344
  cv2.imwrite(save_path, im0)
343
345
  else: # 'video' or 'stream'
346
+ frames_path = f'{save_path.split(".", 1)[0]}_frames/'
344
347
  if self.vid_path[idx] != save_path: # new video
348
+ Path(frames_path).mkdir(parents=True, exist_ok=True)
345
349
  self.vid_path[idx] = save_path
350
+ self.vid_frame[idx] = 0
346
351
  if isinstance(self.vid_writer[idx], cv2.VideoWriter):
347
352
  self.vid_writer[idx].release() # release previous video writer
348
353
  if vid_cap: # video
@@ -352,10 +357,15 @@ class BasePredictor:
352
357
  else: # stream
353
358
  fps, w, h = 30, im0.shape[1], im0.shape[0]
354
359
  suffix, fourcc = ('.mp4', 'avc1') if MACOS else ('.avi', 'WMV2') if WINDOWS else ('.avi', 'MJPG')
355
- save_path = str(Path(save_path).with_suffix(suffix))
356
- self.vid_writer[idx] = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*fourcc), fps, (w, h))
360
+ self.vid_writer[idx] = cv2.VideoWriter(str(Path(save_path).with_suffix(suffix)),
361
+ cv2.VideoWriter_fourcc(*fourcc), fps, (w, h))
362
+ # Write video
357
363
  self.vid_writer[idx].write(im0)
358
364
 
365
+ # Write frame
366
+ cv2.imwrite(f'{frames_path}{self.vid_frame[idx]}.jpg', im0)
367
+ self.vid_frame[idx] += 1
368
+
359
369
  def run_callbacks(self, event: str):
360
370
  """Runs all registered callbacks for a specific event."""
361
371
  for callback in self.callbacks.get(event, []):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics
3
- Version: 8.0.217
3
+ Version: 8.0.219
4
4
  Summary: Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
5
5
  Home-page: https://github.com/ultralytics/ultralytics
6
6
  Author: Ultralytics
File without changes
File without changes
File without changes
File without changes
File without changes