عد الأجسام باستخدام Ultralytics YOLO26
ما هو تعداد الأجسام؟
يتضمن عد الأجسام باستخدام Ultralytics YOLO26 تحديدًا دقيقًا وعدًا لأجسام محددة في مقاطع الفيديو وتدفقات الكاميرا. يتفوق YOLO26 في تطبيقات الوقت الفعلي، حيث يوفر عدًا فعالًا ودقيقًا للأجسام لمختلف السيناريوهات مثل تحليل الحشود والمراقبة، وذلك بفضل خوارزمياته المتطورة وقدراته في التعلم العميق.
شاهد: كيفية إجراء عد الأجسام في الوقت الفعلي باستخدام Ultralytics YOLO26 🍏
مزايا عد الكائنات
- تحسين الموارد: يسهل عد الكائنات إدارة الموارد بكفاءة من خلال توفير عدد دقيق، وتحسين تخصيص الموارد في تطبيقات مثل إدارة المخزون.
- أمان محسّن: يعزز عد الكائنات الأمان والمراقبة من خلال تتبع الكيانات وعدها بدقة، مما يساعد في الكشف الاستباقي عن التهديدات.
- اتخاذ القرارات المستنيرة: يوفر عد الأجسام رؤى قيمة لاتخاذ القرارات، وتحسين العمليات في البيع بالتجزئة، وإدارة حركة المرور، ومختلف المجالات الأخرى.
تطبيقات العالم الحقيقي
| اللوجستيات | تربية الأحياء المائية |
|---|---|
![]() | ![]() |
| عد حزم حزام النقل باستخدام Ultralytics YOLO26 | عد الأسماك في البحر باستخدام Ultralytics YOLO26 |
عد الكائنات باستخدام Ultralytics YOLO
# Run a counting example
yolo solutions count show=True
# Pass a source video
yolo solutions count source="path/to/video.mp4"
# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"
في region تقبل الوسيطة إما نقطتين (لخط) أو مضلعًا بثلاث نقاط أو أكثر. حدد الإحداثيات بالترتيب الذي يجب توصيلها به حتى يعرف العداد بالضبط مكان حدوث الإدخالات والمخارج.
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# region_points = [(20, 400), (1080, 400)] # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # rectangular region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # polygon region
# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize object counter object
counter = solutions.ObjectCounter(
show=True, # display the output
region=region_points, # pass region points
model="yolo26n.pt", # model="yolo26n-obb.pt" for object counting with OBB model.
# classes=[0, 2], # count specific classes, e.g., person and car with the COCO pretrained model.
# tracker="botsort.yaml", # choose trackers, e.g., "bytetrack.yaml"
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
ObjectCounter الوسائط
إليك جدول مع ObjectCounter arguments:
| الوسيطة | النوع | افتراضي | الوصف |
|---|---|---|---|
model | str | None | مسار إلى ملف نموذج Ultralytics YOLO. |
show_in | bool | True | Flag للتحكم فيما إذا كان سيتم عرض عدد الأسماك الداخلة في بث الفيديو. |
show_out | bool | True | Flag للتحكم فيما إذا كان سيتم عرض عدد الأسماك الخارجة في بث الفيديو. |
region | list | '[(20, 400), (1260, 400)]' | قائمة النقاط التي تحدد منطقة العد. |
في ObjectCounter يسمح الحل باستخدام العديد من track arguments:
| الوسيطة | النوع | افتراضي | الوصف |
|---|---|---|---|
tracker | str | 'botsort.yaml' | يحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال، bytetrack.yaml أو botsort.yaml. |
conf | float | 0.1 | يحدد عتبة الثقة للكشف؛ القيم الأقل تسمح بتتبع المزيد من الكائنات ولكن قد تتضمن نتائج إيجابية كاذبة. |
iou | float | 0.7 | يحدد عتبة التقاطع على الاتحاد (IoU) لتصفية عمليات الكشف المتداخلة. |
classes | list | None | يقوم بتصفية النتائج حسب فهرس الفئة. على سبيل المثال، classes=[0, 2, 3] يتتبع الفئات المحددة فقط. |
verbose | bool | True | يتحكم في عرض نتائج التتبع، مما يوفر مخرجًا مرئيًا للكائنات التي يتم تتبعها. |
device | str | None | يحدد الجهاز الخاص بالاستدلال (على سبيل المثال، cpu, cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين CPU أو GPU معين أو أجهزة حساب أخرى لتنفيذ النموذج. |
بالإضافة إلى ذلك، يتم دعم وسائط العرض المرئي المدرجة أدناه:
| الوسيطة | النوع | افتراضي | الوصف |
|---|---|---|---|
show | bool | False | إذا True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على تعليقات مرئية فورية أثناء التطوير أو الاختبار. |
line_width | int or None | None | يحدد عرض خطوط مربعات الإحاطة. إذا None، يتم تعديل عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصًا مرئيًا للوضوح. |
show_conf | bool | True | يعرض قيمة الثقة لكل كائن يتم الكشف عنه بجانب التسمية. يعطي نظرة ثاقبة حول يقين النموذج لكل كائن تم الكشف عنه. |
show_labels | bool | True | يعرض تسميات لكل كائن يتم الكشف عنه في الناتج المرئي. يوفر فهمًا فوريًا للكائنات التي تم الكشف عنها. |
الأسئلة الشائعة
كيف أعد الأجسام في مقطع فيديو باستخدام Ultralytics YOLO26؟
لعد الأجسام في مقطع فيديو باستخدام Ultralytics YOLO26، يمكنك اتباع هذه الخطوات:
- استيراد المكتبات الضرورية (
cv2,ultralytics). - حدد منطقة العد (مثل مضلع أو خط، إلخ).
- قم بإعداد التقاط الفيديو وتهيئة عداد الكائنات.
- معالجة كل إطار لتتبع الكائنات وعدها داخل المنطقة المحددة.
إليك مثال بسيط للعد في منطقة:
import cv2
from ultralytics import solutions
def count_objects_in_region(video_path, output_video_path, model_path):
"""Count objects in a specific region within a video."""
cap = cv2.VideoCapture(video_path)
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo26n.pt")
للحصول على تكوينات وخيارات أكثر تقدمًا، تحقق من حل RegionCounter لحساب الأجسام في مناطق متعددة في وقت واحد.
ما هي مزايا استخدام Ultralytics YOLO26 لعد الأجسام؟
يقدم استخدام Ultralytics YOLO26 لعد الكائنات عدة مزايا:
- تحسين الموارد: يسهل إدارة الموارد بكفاءة من خلال توفير عدد دقيق، مما يساعد على تحسين تخصيص الموارد في صناعات مثل إدارة المخزون.
- أمان محسّن: يعزز الأمان والمراقبة من خلال تتبع الكيانات وعدها بدقة، مما يساعد في الكشف الاستباقي عن التهديدات و أنظمة الأمان.
- اتخاذ قرارات مستنيرة: يقدم رؤى قيمة لاتخاذ القرارات، وتحسين العمليات في مجالات مثل البيع بالتجزئة وإدارة حركة المرور والمزيد.
- المعالجة في الوقت الفعلي: تتيح بنية YOLO26 الاستدلال في الوقت الفعلي، مما يجعلها مناسبة لتدفقات الفيديو المباشرة والتطبيقات الحساسة للوقت.
لأمثلة التنفيذ والتطبيقات العملية، استكشف حل TrackZone لتتبع الأجسام في مناطق معينة.
كيف يمكنني عد فئات محددة من الأجسام باستخدام Ultralytics YOLO26؟
لعد فئات محددة من الكائنات باستخدام Ultralytics YOLO26، تحتاج إلى تحديد الفئات التي تهتم بها خلال مرحلة الـ track. فيما يلي مثال Python:
import cv2
from ultralytics import solutions
def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
"""Count specific classes of objects in a video."""
cap = cv2.VideoCapture(video_path)
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
line_points = [(20, 400), (1080, 400)]
counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo26n.pt", [0, 2])
في هذا المثال، classes_to_count=[0, 2] يعني أنه يحسب عدد الكائنات من الفئة 0 و 2 (مثل شخص وسيّارة في مجموعة بيانات COCO). يمكنك العثور على مزيد من المعلومات حول فهارس الفئات في توثيق مجموعة بيانات COCO.
لماذا يجب أن أستخدم YOLO26 بدلاً من نماذج الكشف عن الكائنات الأخرى لتطبيقات الوقت الفعلي؟
تقدم Ultralytics YOLO26 عدة مزايا على نماذج الكشف عن الكائنات الأخرى مثل Faster R-CNN وSSD وإصدارات YOLO السابقة:
- السرعة والكفاءة: يوفر YOLO26 إمكانيات معالجة في الوقت الفعلي، مما يجعله مثاليًا للتطبيقات التي تتطلب استدلالًا عالي السرعة، مثل المراقبة والقيادة الذاتية.
- الدقة: توفر دقة متطورة للكشف عن الكائنات وتتبعها، مما يقلل من عدد النتائج الإيجابية الخاطئة ويحسن الموثوقية الكلية للنظام.
- سهولة التكامل: يوفر YOLO26 تكاملاً سلسًا مع مختلف المنصات والأجهزة، بما في ذلك الأجهزة المحمولة وأجهزة الحافة، وهو أمر بالغ الأهمية لتطبيقات الذكاء الاصطناعي الحديثة.
- المرونة: يدعم مهام مختلفة مثل اكتشاف الكائنات و التجزئة والتتبع مع نماذج قابلة للتكوين لتلبية متطلبات حالة الاستخدام المحددة.
اطلع على وثائق Ultralytics YOLO26 للاطلاع المتعمق على ميزاته ومقارنات الأداء.
هل يمكنني استخدام YOLO26 لتطبيقات متقدمة مثل تحليل الحشود وإدارة حركة المرور؟
نعم، Ultralytics YOLO26 مناسب تمامًا للتطبيقات المتقدمة مثل تحليل الحشود وإدارة حركة المرور نظرًا لقدراته على detect في الوقت الفعلي، وقابليته للتوسع، ومرونة التكامل. تتيح ميزاته المتقدمة الـ track عالي الدقة للكائنات، والعد، والتصنيف في البيئات الديناميكية. تشمل حالات الاستخدام النموذجية:
- تحليل الحشود: مراقبة وإدارة التجمعات الكبيرة، وضمان السلامة وتحسين تدفق الحشود باستخدام العد القائم على المنطقة.
- إدارة حركة المرور: تتبع وعد المركبات، وتحليل أنماط حركة المرور، وإدارة الازدحام في الوقت الفعلي مع إمكانات تقدير السرعة.
- تحليلات قطاع البيع بالتجزئة: تحليل أنماط حركة العملاء وتفاعلهم مع المنتجات لتحسين تصميم المتجر وتعزيز تجربة العملاء.
- الأتمتة الصناعية: عد المنتجات على سيور النقل ومراقبة خطوط الإنتاج لتحسين الجودة والكفاءة.
للتطبيقات الأكثر تخصصًا، استكشف حلول Ultralytics للحصول على مجموعة شاملة من الأدوات المصممة لتحديات رؤية الكمبيوتر في العالم الحقيقي.

