ultralytics 8.0.218__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.218/ultralytics.egg-info → ultralytics-8.0.219}/PKG-INFO +1 -1
  2. {ultralytics-8.0.218 → ultralytics-8.0.219}/tests/test_python.py +4 -3
  3. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/__init__.py +1 -1
  4. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/__init__.py +2 -2
  5. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/default.yaml +1 -0
  6. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/engine/predictor.py +14 -4
  7. {ultralytics-8.0.218 → ultralytics-8.0.219/ultralytics.egg-info}/PKG-INFO +1 -1
  8. {ultralytics-8.0.218 → ultralytics-8.0.219}/CONTRIBUTING.md +0 -0
  9. {ultralytics-8.0.218 → ultralytics-8.0.219}/LICENSE +0 -0
  10. {ultralytics-8.0.218 → ultralytics-8.0.219}/MANIFEST.in +0 -0
  11. {ultralytics-8.0.218 → ultralytics-8.0.219}/README.md +0 -0
  12. {ultralytics-8.0.218 → ultralytics-8.0.219}/README.zh-CN.md +0 -0
  13. {ultralytics-8.0.218 → ultralytics-8.0.219}/requirements.txt +0 -0
  14. {ultralytics-8.0.218 → ultralytics-8.0.219}/setup.cfg +0 -0
  15. {ultralytics-8.0.218 → ultralytics-8.0.219}/setup.py +0 -0
  16. {ultralytics-8.0.218 → ultralytics-8.0.219}/tests/conftest.py +0 -0
  17. {ultralytics-8.0.218 → ultralytics-8.0.219}/tests/test_cli.py +0 -0
  18. {ultralytics-8.0.218 → ultralytics-8.0.219}/tests/test_cuda.py +0 -0
  19. {ultralytics-8.0.218 → ultralytics-8.0.219}/tests/test_engine.py +0 -0
  20. {ultralytics-8.0.218 → ultralytics-8.0.219}/tests/test_integrations.py +0 -0
  21. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/assets/bus.jpg +0 -0
  22. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/assets/zidane.jpg +0 -0
  23. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/Argoverse.yaml +0 -0
  24. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/DOTAv2.yaml +0 -0
  25. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/GlobalWheat2020.yaml +0 -0
  26. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/ImageNet.yaml +0 -0
  27. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/Objects365.yaml +0 -0
  28. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/SKU-110K.yaml +0 -0
  29. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/VOC.yaml +0 -0
  30. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/VisDrone.yaml +0 -0
  31. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco-pose.yaml +0 -0
  32. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco.yaml +0 -0
  33. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco128-seg.yaml +0 -0
  34. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco128.yaml +0 -0
  35. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco8-pose.yaml +0 -0
  36. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco8-seg.yaml +0 -0
  37. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/coco8.yaml +0 -0
  38. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/open-images-v7.yaml +0 -0
  39. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/tiger-pose.yaml +0 -0
  40. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/datasets/xView.yaml +0 -0
  41. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/rt-detr/rtdetr-l.yaml +0 -0
  42. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/rt-detr/rtdetr-x.yaml +0 -0
  43. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v3/yolov3-spp.yaml +0 -0
  44. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v3/yolov3-tiny.yaml +0 -0
  45. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v3/yolov3.yaml +0 -0
  46. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v5/yolov5-p6.yaml +0 -0
  47. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v5/yolov5.yaml +0 -0
  48. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v6/yolov6.yaml +0 -0
  49. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-cls.yaml +0 -0
  50. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-p2.yaml +0 -0
  51. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-p6.yaml +0 -0
  52. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-pose-p6.yaml +0 -0
  53. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-pose.yaml +0 -0
  54. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-rtdetr.yaml +0 -0
  55. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-seg-p6.yaml +0 -0
  56. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8-seg.yaml +0 -0
  57. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/models/v8/yolov8.yaml +0 -0
  58. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/trackers/botsort.yaml +0 -0
  59. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/cfg/trackers/bytetrack.yaml +0 -0
  60. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/data/__init__.py +0 -0
  61. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/data/annotator.py +0 -0
  62. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/data/augment.py +0 -0
  63. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/data/base.py +0 -0
  64. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/data/build.py +0 -0
  65. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/data/converter.py +0 -0
  66. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/data/dataset.py +0 -0
  67. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/data/loaders.py +0 -0
  68. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/data/utils.py +0 -0
  69. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/engine/__init__.py +0 -0
  70. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/engine/exporter.py +0 -0
  71. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/engine/model.py +0 -0
  72. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/engine/results.py +0 -0
  73. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/engine/trainer.py +0 -0
  74. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/engine/tuner.py +0 -0
  75. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/engine/validator.py +0 -0
  76. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/hub/__init__.py +0 -0
  77. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/hub/auth.py +0 -0
  78. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/hub/session.py +0 -0
  79. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/hub/utils.py +0 -0
  80. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/__init__.py +0 -0
  81. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/fastsam/__init__.py +0 -0
  82. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/fastsam/model.py +0 -0
  83. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/fastsam/predict.py +0 -0
  84. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/fastsam/prompt.py +0 -0
  85. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/fastsam/utils.py +0 -0
  86. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/fastsam/val.py +0 -0
  87. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/nas/__init__.py +0 -0
  88. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/nas/model.py +0 -0
  89. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/nas/predict.py +0 -0
  90. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/nas/val.py +0 -0
  91. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/rtdetr/__init__.py +0 -0
  92. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/rtdetr/model.py +0 -0
  93. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/rtdetr/predict.py +0 -0
  94. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/rtdetr/train.py +0 -0
  95. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/rtdetr/val.py +0 -0
  96. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/__init__.py +0 -0
  97. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/amg.py +0 -0
  98. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/build.py +0 -0
  99. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/model.py +0 -0
  100. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/modules/__init__.py +0 -0
  101. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/modules/decoders.py +0 -0
  102. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/modules/encoders.py +0 -0
  103. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/modules/sam.py +0 -0
  104. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/modules/tiny_encoder.py +0 -0
  105. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/modules/transformer.py +0 -0
  106. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/sam/predict.py +0 -0
  107. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/utils/__init__.py +0 -0
  108. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/utils/loss.py +0 -0
  109. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/utils/ops.py +0 -0
  110. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/__init__.py +0 -0
  111. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/classify/__init__.py +0 -0
  112. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/classify/predict.py +0 -0
  113. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/classify/train.py +0 -0
  114. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/classify/val.py +0 -0
  115. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/detect/__init__.py +0 -0
  116. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/detect/predict.py +0 -0
  117. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/detect/train.py +0 -0
  118. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/detect/val.py +0 -0
  119. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/model.py +0 -0
  120. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/pose/__init__.py +0 -0
  121. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/pose/predict.py +0 -0
  122. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/pose/train.py +0 -0
  123. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/pose/val.py +0 -0
  124. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/segment/__init__.py +0 -0
  125. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/segment/predict.py +0 -0
  126. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/segment/train.py +0 -0
  127. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/models/yolo/segment/val.py +0 -0
  128. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/nn/__init__.py +0 -0
  129. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/nn/autobackend.py +0 -0
  130. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/nn/modules/__init__.py +0 -0
  131. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/nn/modules/block.py +0 -0
  132. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/nn/modules/conv.py +0 -0
  133. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/nn/modules/head.py +0 -0
  134. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/nn/modules/transformer.py +0 -0
  135. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/nn/modules/utils.py +0 -0
  136. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/nn/tasks.py +0 -0
  137. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/trackers/__init__.py +0 -0
  138. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/trackers/basetrack.py +0 -0
  139. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/trackers/bot_sort.py +0 -0
  140. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/trackers/byte_tracker.py +0 -0
  141. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/trackers/track.py +0 -0
  142. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/trackers/utils/__init__.py +0 -0
  143. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/trackers/utils/gmc.py +0 -0
  144. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/trackers/utils/kalman_filter.py +0 -0
  145. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/trackers/utils/matching.py +0 -0
  146. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/__init__.py +0 -0
  147. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/autobatch.py +0 -0
  148. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/benchmarks.py +0 -0
  149. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/__init__.py +0 -0
  150. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/base.py +0 -0
  151. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/clearml.py +0 -0
  152. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/comet.py +0 -0
  153. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/dvc.py +0 -0
  154. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/hub.py +0 -0
  155. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/mlflow.py +0 -0
  156. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/neptune.py +0 -0
  157. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/raytune.py +0 -0
  158. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/tensorboard.py +0 -0
  159. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/callbacks/wb.py +0 -0
  160. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/checks.py +0 -0
  161. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/dist.py +0 -0
  162. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/downloads.py +0 -0
  163. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/errors.py +0 -0
  164. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/files.py +0 -0
  165. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/instance.py +0 -0
  166. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/loss.py +0 -0
  167. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/metrics.py +0 -0
  168. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/ops.py +0 -0
  169. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/patches.py +0 -0
  170. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/plotting.py +0 -0
  171. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/tal.py +0 -0
  172. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/torch_utils.py +0 -0
  173. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/triton.py +0 -0
  174. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics/utils/tuner.py +0 -0
  175. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics.egg-info/SOURCES.txt +0 -0
  176. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics.egg-info/dependency_links.txt +0 -0
  177. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics.egg-info/entry_points.txt +0 -0
  178. {ultralytics-8.0.218 → ultralytics-8.0.219}/ultralytics.egg-info/requires.txt +0 -0
  179. {ultralytics-8.0.218 → 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.218
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.218'
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', 'show_boxes',
75
- 'keras', '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):
@@ -63,6 +63,7 @@ retina_masks: False # (bool) use high-resolution segmentation masks
63
63
 
64
64
  # Visualize settings ---------------------------------------------------------------------------------------------------
65
65
  show: False # (bool) show predicted images and videos if environment allows
66
+ save_frames: False # (bool) save predicted individual video frames
66
67
  save_txt: False # (bool) save results as .txt file
67
68
  save_conf: False # (bool) save results with confidence scores
68
69
  save_crop: False # (bool) save cropped images with results
@@ -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
@@ -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.218
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