Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

test_solutions.py 5.0 KB

You have to be logged in to leave a comment. Sign In
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
  1. # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
  2. # This is file for Ultralytics Solutions tests: https://docs.ultralytics.com/solutions/,
  3. # It includes every solution excluding DistanceCalculation and Security Alarm System.
  4. import cv2
  5. import pytest
  6. from tests import TMP
  7. from ultralytics import solutions
  8. from ultralytics.utils import ASSETS_URL
  9. from ultralytics.utils.downloads import safe_download
  10. DEMO_VIDEO = "solutions_ci_demo.mp4" # for all the solutions, except workout and parking
  11. POSE_VIDEO = "solution_ci_pose_demo.mp4" # only for workouts monitoring solution
  12. PARKING_VIDEO = "solution_ci_parking_demo.mp4" # only for parking management solution
  13. PARKING_AREAS_JSON = "solution_ci_parking_areas.json" # only for parking management solution
  14. PARKING_MODEL = "solutions_ci_parking_model.pt" # only for parking management solution
  15. @pytest.mark.slow
  16. def test_major_solutions():
  17. """Test the object counting, heatmap, speed estimation, trackzone and queue management solution."""
  18. safe_download(url=f"{ASSETS_URL}/{DEMO_VIDEO}", dir=TMP)
  19. cap = cv2.VideoCapture(str(TMP / DEMO_VIDEO))
  20. assert cap.isOpened(), "Error reading video file"
  21. region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
  22. counter = solutions.ObjectCounter(region=region_points, model="yolo11n.pt", show=False) # Test object counter
  23. heatmap = solutions.Heatmap(colormap=cv2.COLORMAP_PARULA, model="yolo11n.pt", show=False) # Test heatmaps
  24. heatmapcounter = solutions.Heatmap(
  25. colormap=cv2.COLORMAP_PARULA, model="yolo11n.pt", show=False, region=region_points
  26. ) # Test heatmaps with object counting
  27. speed = solutions.SpeedEstimator(region=region_points, model="yolo11n.pt", show=False) # Test speed estimation
  28. queue = solutions.QueueManager(region=region_points, model="yolo11n.pt", show=False) # Test queue management
  29. lineanalytics = solutions.Analytics(analytics_type="line", model="yolo11n.pt", show=False) # Line analytics
  30. pieanalytics = solutions.Analytics(analytics_type="pie", model="yolo11n.pt", show=False) # Pie analytics
  31. baranalytics = solutions.Analytics(analytics_type="bar", model="yolo11n.pt", show=False) # Bar analytics
  32. areaanalytics = solutions.Analytics(analytics_type="area", model="yolo11n.pt", show=False) # Area analytics
  33. trackzone = solutions.TrackZone(region=region_points, model="yolo11n.pt", show=False) # Track zone monitoring
  34. objectcropper = solutions.ObjectCropper(
  35. model="yolo11n.pt", show=False, crop_dir=str(TMP / "cropped-detections")
  36. ) # Object cropping
  37. objectblurrer = solutions.ObjectBlurrer(blur_ratio=0.5, model="yolo11n.pt", show=False) # Object blurring
  38. isegment = solutions.InstanceSegmentation(model="yolo11n-seg.pt", show=False) # Instance segmentation
  39. visioneye = solutions.VisionEye(model="yolo11n.pt", show=False) # Vision Eye solution
  40. regioncounter = solutions.RegionCounter(region=region_points, model="yolo11n.pt", show=False) # Region counter
  41. frame_count = 0 # Required for analytics
  42. while cap.isOpened():
  43. success, im0 = cap.read()
  44. if not success:
  45. break
  46. frame_count += 1
  47. original_im0 = im0.copy()
  48. _ = counter(original_im0.copy())
  49. _ = heatmap(original_im0.copy())
  50. _ = heatmapcounter(original_im0.copy())
  51. _ = speed(original_im0.copy())
  52. _ = queue(original_im0.copy())
  53. _ = lineanalytics(original_im0.copy(), frame_count)
  54. _ = pieanalytics(original_im0.copy(), frame_count)
  55. _ = baranalytics(original_im0.copy(), frame_count)
  56. _ = areaanalytics(original_im0.copy(), frame_count)
  57. _ = trackzone(original_im0.copy())
  58. _ = objectcropper(original_im0.copy())
  59. _ = isegment(original_im0.copy())
  60. _ = objectblurrer(original_im0.copy())
  61. _ = visioneye(original_im0.copy())
  62. _ = regioncounter(original_im0.copy())
  63. cap.release()
  64. # Test workouts monitoring
  65. safe_download(url=f"{ASSETS_URL}/{POSE_VIDEO}", dir=TMP)
  66. cap = cv2.VideoCapture(str(TMP / POSE_VIDEO))
  67. assert cap.isOpened(), "Error reading video file"
  68. gym = solutions.AIGym(kpts=[5, 11, 13], show=False)
  69. while cap.isOpened():
  70. success, im0 = cap.read()
  71. if not success:
  72. break
  73. _ = gym(im0)
  74. cap.release()
  75. # Test parking management
  76. safe_download(url=f"{ASSETS_URL}/{PARKING_VIDEO}", dir=TMP)
  77. safe_download(url=f"{ASSETS_URL}/{PARKING_AREAS_JSON}", dir=TMP)
  78. safe_download(url=f"{ASSETS_URL}/{PARKING_MODEL}", dir=TMP)
  79. cap = cv2.VideoCapture(str(TMP / PARKING_VIDEO))
  80. assert cap.isOpened(), "Error reading video file"
  81. parkingmanager = solutions.ParkingManagement(
  82. json_file=str(TMP / PARKING_AREAS_JSON), model=str(TMP / PARKING_MODEL), show=False
  83. )
  84. while cap.isOpened():
  85. success, im0 = cap.read()
  86. if not success:
  87. break
  88. _ = parkingmanager(im0)
  89. cap.release()
  90. @pytest.mark.slow
  91. def test_streamlit_predict():
  92. """Test streamlit predict live inference solution."""
  93. solutions.Inference().inference()
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...