Kalman Filter (KF)
استكشف كيف يقدر مرشح كالمان (Kalman Filter) حالات النظام تحت ظروف عدم اليقين. تعلم استخدامه لتتبع الكائنات مع Ultralytics YOLO26 لتحسين دقة الذكاء الاصطناعي.
فلاتر كالمان Kalman Filter (KF) هي خوارزمية رياضية تكرارية تُستخدم لتقدير حالة نظام ديناميكي بمرور الوقت. تم تقديم هذه التقنية في الأصل بواسطة رودولف إي. كالمان، وهي ضرورية لمعالجة البيانات غير المؤكدة أو غير الدقيقة أو التي تحتوي على تنوعات عشوائية، وغالبًا ما يُشار إليها باسم "الضوضاء" (noise). من خلال جمع سلسلة من القياسات التي يتم رصدها بمرور الوقت وتحتوي على عدم دقة إحصائية، ينتج فلتر كالمان تقديرات للمتغيرات المجهولة تكون أكثر دقة من تلك المستندة إلى قياس واحد بمفرده. في مجالات machine learning (ML) وartificial intelligence (AI)، يعمل كأداة حرجة من أجل predictive modeling، حيث يقوم بتنعيم نقاط البيانات المتعرجة لكشف الاتجاه الحقيقي الكامن وراءها.
كيف يعمل مرشح كالمان#
تعمل الخوارزمية وفق دورة من خطوتين: التنبؤ (prediction) والتحديث (update) (المعروف أيضًا بالتصحيح). وهي تفترض أن النظام الأساسي خطي وأن الضوضاء تتبع Gaussian distribution (منحنى الجرس).
-
التنبؤ: يستخدم الفلتر نموذجًا فيزيائيًا لإسقاط الحالة الحالية للأمام في الزمن. على سبيل المثال، إذا كان جسم يتحرك بسرعة ثابتة، يتنبأ الفلتر بموضعه التالي بناءً على kinematic equations القياسية. تُقدر هذه الخطوة أيضًا uncertainty المرتبطة بهذا التنبؤ.
-
التحديث: عندما يصل قياس جديد من مستشعر، يقارن الفلتر الحالة المتنبأ بها مع البيانات المرصودة. ويحسب متوسطًا مرجحًا -يحدده كسب كالمان (Kalman Gain)- والذي يمنح ثقة أكبر للقيمة (التنبؤ أو القياس) التي تحمل قدرًا أقل من عدم اليقين. والنتيجة هي state estimation محسنة تعمل كخط أساس للدورة التالية.
التطبيقات في الرؤية الحاسوبية والذكاء الاصطناعي#
بينما تعود جذور فلاتر كالمان في الأصل إلى نظرية التحكم والملاحة الفضائية، إلا أنها أصبحت الآن منتشرة في كل مكان في خطوط أنابيب computer vision (CV) الحديثة.
- تتبع الكائنات: هذه هي حالة الاستخدام الأكثر شيوعًا. عندما يحدد نموذج اكتشاف مثل YOLO26 كائنًا في إطار فيديو، فإنه يوفر لقطة ثابتة. لفهم الحركة، تستخدم أدوات التتبع مثل BoT-SORT فلاتر كالمان لربط الاكتشافات عبر الإطارات. وإذا تم حجب كائن مؤقتًا (حجبه عن الرؤية)، يستخدم الفلتر السرعة السابقة للكائن للتنبؤ بموقعه، مما يمنع النظام من فقدان "التتبع" أو تبديل المعرفات.
- دمج المستشعرات في الروبوتات: في robotics، يجب أن تتنقل الآلات باستخدام مستشعرات متعددة مليئة بالضوضاء. قد تستخدم روبوتات التوصيل نظام تحديد Global Positioning System (GPS) (الذي يمكن أن ينحرف)، ومشفِّرات العجلات (التي يمكن أن تنزلق)، وIMUs (التي تحتوي على ضوضاء). يقوم فلتر كالمان بدمج هذه المدخلات المتباينة لتوفير إحداثي واحد موثوق للملاحة، وهو أمر ضروري لعمليات autonomous vehicles الآمنة.
التمييز بين المفاهيم ذات الصلة#
من المفيد التمييز بين فلتر كالمان القياسي وبين تنويعاته وبدائله الموجودة في statistical AI:
- فلتر كالمان مقابل Extended Kalman Filter (EKF): يفترض فلتر كالمان القياسي أن النظام يتبع معادلات خطية (خطوط مستقيمة). ومع ذلك، فإن الحركة في العالم الحقيقي -مثل طائرة مسيرة تقوم بانعطاف مائل- غالباً ما تكون غير خطية. يحل فلتر EKF هذه المشكلة عن طريق خطية ديناميكيات النظام في كل خطوة باستخدام المشتقات، مما يجعله مناسبًا المسارات المعقدة.
- فلتر كالمان مقابل فلتر الجسيمات: بينما تعتمد فلاتر كالمان على افتراضات غاوسية، فإن particle filters تستخدم مجموعة من العينات العشوائية (الجسيمات) لتمثيل توزيعات الاحتمالات. تعتبر فلاتر الجسيمات أكثر مرونة للضوضاء غير الغاوسية ولكنها تتطلب قوة حسابية أكبر بكثير، مما قد يؤثر على سرعات real-time inference.
مثال على التنفيذ#
في نظام Ultralytics البيئي، يتم دمج فلاتر كالمان مباشرة في خوارزميات التتبع. لست بحاجة إلى كتابة المعادلات يدويًا؛ بل يمكنك الاستفادة منها عن طريق تمكين أوضاع التتبع. تتيح لك Ultralytics Platform إدارة مجموعات البيانات وتدريب النماذج التي يمكن نشرها بسهولة باستخدام قدرات التتبع هذه.
إليك مثال موجز باستخدام Python لإجراء التتبع باستخدام Ultralytics 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()}")الأهمية لجودة البيانات#
في نشر التطبيقات الواقعية، نادراً ما تكون البيانات مثالية. تعاني الكاميرات من ضبابية الحركة، وتعاني المستشعرات من ضوضاء الإشارات. يعمل فلتر كالمان كآلية متطورة data cleaning داخل حلقة القرار. من خلال التحسين المستمر للتقديرات، فإنه يضمن أن AI agents تعمل بناءً على الواقع الأكثر احتمالاً بدلاً من التفاعل مع كل خلل لحظي في تدفق المدخلات. هذه الموثوقية بالغة الأهمية للتطبيقات الحرجة للسلامة، بدءًا من مراقبة airport operations وحتى الأتمتة الصناعية الدقيقة.






