Kalman Filter (KF)
استكشف كيف يقدر مرشح كالمان (Kalman Filter) حالات النظام تحت ظروف عدم اليقين. تعلم استخدامه لتتبع الكائنات مع Ultralytics YOLO26 لتحسين دقة الذكاء الاصطناعي.
يُعد مرشح كالمان (KF) خوارزمية رياضية تكرارية تُستخدم لتقدير حالة نظام ديناميكي بمرور الوقت. تم تقديم هذه التقنية في الأصل بواسطة رودولف إي. كالمان، وهي ضرورية لمعالجة البيانات غير المؤكدة أو غير الدقيقة أو التي تحتوي على تباينات عشوائية، والتي تُعرف غالبًا باسم "الضجيج". من خلال الجمع بين سلسلة من القياسات الملحوظة بمرور الوقت والتي تحتوي على عدم دقة إحصائية، ينتج مرشح كالمان تقديرات لمتغيرات غير معروفة تكون أكثر دقة من تلك المستندة إلى قياس واحد فقط. في مجالي تعلم الآلة (ML) والذكاء الاصطناعي (AI)، يعمل كأداة حاسمة لـ النمذجة التنبؤية، حيث يقوم بتنعيم نقاط البيانات المتعرجة للكشف عن الاتجاه الأساسي الحقيقي.
Link to this sectionكيف يعمل مرشح كالمان#
تعمل الخوارزمية في دورة من خطوتين: التنبؤ والتحديث (المعروف أيضًا بالتصحيح). ويفترض أن النظام الأساسي خطي وأن الضجيج يتبع توزيع غاوسي (منحنى الجرس).
-
التنبؤ: يستخدم المرشح نموذجًا فيزيائيًا لإسقاط الحالة الحالية للأمام في الزمن. على سبيل المثال، إذا كان كائن ما يتحرك بسرعة ثابتة، فإن المرشح يتنبأ بموقعه التالي بناءً على المعادلات الحركية القياسية. تقدر هذه الخطوة أيضًا عدم اليقين المرتبط بذلك التنبؤ.
-
التحديث: عند وصول قياس جديد من مستشعر، يقارن المرشح الحالة المتوقعة بالبيانات المرصودة. ويحسب متوسطًا مرجحًا -يحدده مكسب كالمان- والذي يمنح ثقة أكبر للقيمة (التنبؤ أو القياس) التي تحتوي على قدر أقل من عدم اليقين. والنتيجة هي تقدير حالة منقح يعمل كأساس للدورة التالية.
Link to this sectionالتطبيقات في الرؤية الحاسوبية والذكاء الاصطناعي#
على الرغم من أن مرشح كالمان كان متجذرًا في الأصل في نظرية التحكم والملاحة في الطيران، إلا أنه أصبح الآن منتشرًا في خطوط أنابيب الرؤية الحاسوبية (CV) الحديثة.
- تتبع الكائنات: هذه هي حالة الاستخدام الأكثر شيوعًا. عندما يحدد نموذج اكتشاف مثل YOLO26 كائنًا في إطار فيديو، فإنه يوفر لقطة ثابتة. لفهم الحركة، تستخدم أدوات التتبع مثل BoT-SORT مرشحات كالمان لربط الاكتشافات عبر الإطارات. إذا كان الكائن محجوبًا مؤقتًا (محجوبًا عن الرؤية)، يستخدم المرشح سرعة الكائن السابقة للتنبؤ بموقعه، مما يمنع النظام من فقدان "المسار" أو تبديل المعرفات.
- دمج المستشعرات في الروبوتات: في الروبوتات، يجب على الآلات التنقل باستخدام مستشعرات متعددة صاخبة. قد يستخدم روبوت التوصيل نظام تحديد المواقع العالمي (GPS) (الذي يمكن أن ينحرف)، ومشفرات العجلات (التي يمكن أن تنزلق)، ووحدات قياس القصور الذاتي (IMUs) (التي تكون صاخبة). يدمج مرشح كالمان هذه المدخلات المتباينة لتوفير إحداثيات واحدة موثوقة للملاحة، وهو أمر ضروري لعمليات المركبات ذاتية القيادة الآمنة.
Link to this sectionالتمييز بين المفاهيم ذات الصلة#
من المفيد التمييز بين مرشح كالمان القياسي وتنوعاته وبدائله الموجودة في الذكاء الاصطناعي الإحصائي:
- مرشح كالمان مقابل مرشح كالمان الممتد (EKF): يفترض مرشح كالمان القياسي أن النظام يتبع معادلات خطية (خطوط مستقيمة). ومع ذلك، فإن الحركة في العالم الحقيقي -مثل طائرة بدون طيار تقوم بمنعطف- غالبًا ما تكون غير خطية. يحل مرشح كالمان الممتد (EKF) هذه المشكلة عن طريق خطية ديناميكيات النظام في كل خطوة باستخدام المشتقات، مما يجعله مناسبًا للمسارات المعقدة.
- مرشح كالمان مقابل مرشح الجسيمات: بينما تعتمد مرشحات كالمان على افتراضات غاوسية، تستخدم مرشحات الجسيمات مجموعة من العينات العشوائية (الجسيمات) لتمثيل توزيعات الاحتمالات. تُعد مرشحات الجسيمات أكثر مرونة للضجيج غير الغاوسي ولكنها تتطلب قدرة حوسبة أكبر بكثير، مما قد يؤثر على سرعات الاستدلال في الوقت الفعلي.
Link to this sectionمثال على التنفيذ#
في نظام Ultralytics، يتم دمج مرشحات كالمان مباشرة في خوارزميات التتبع. لا تحتاج إلى كتابة المعادلات يدويًا؛ يمكنك الاستفادة منها عن طريق تمكين أوضاع التتبع. تتيح لك منصة Ultralytics إدارة مجموعات البيانات وتدريب النماذج التي يمكن نشرها بسهولة باستخدام قدرات التتبع هذه.
إليك مثال موجز باستخدام Python لإجراء التتبع باستخدام YOLO26، حيث يقوم متتبع البيانات الأساسي بتطبيق مرشح كالمان تلقائيًا لتنعيم حركات مربع الإحاطة:
from ultralytics import YOLO
# Load the latest YOLO26 model
model = YOLO("yolo26n.pt")
# Run tracking on a video source
# The 'botsort' tracker uses Kalman Filters internally for state estimation
results = model.track(source="traffic_video.mp4", tracker="botsort.yaml")
# Process results
for result in results:
# Access the tracked IDs (assigned and maintained via KF logic)
if result.boxes.id is not None:
print(f"Tracked IDs in frame: {result.boxes.id.cpu().numpy()}")Link to this sectionالأهمية لجودة البيانات#
في النشر في العالم الحقيقي، نادرًا ما تكون البيانات مثالية. تعاني الكاميرات من ضبابية الحركة، وتواجه المستشعرات ضجيج الإشارة. يعمل مرشح كالمان كآلية متطورة لـ تنظيف البيانات داخل حلقة القرار. من خلال تحسين التقديرات باستمرار، فإنه يضمن أن وكلاء الذكاء الاصطناعي يعملون بناءً على الواقع الأكثر احتمالًا بدلاً من التفاعل مع كل خلل لحظي في تدفق المدخلات. هذه الموثوقية أمر بالغ الأهمية للتطبيقات ذات الأهمية للسلامة، بدءًا من مراقبة عمليات المطار وصولًا إلى الأتمتة الصناعية الدقيقة.






