من YOLOv1 إلى YOLOv2: تحسينات جذرية في السرعة والدقة مع إدخال مفهوم الصناديق الأولية والطبقة الناقلة
يُعدّ تطوير نموذج YOLOv2 وYOLO9000 خطوة مهمة في تطوير نماذج الكشف عن الكائنات، حيث سعى الباحثون إلى تحقيق توازن بين الدقة والسرعة. تم تقديم YOLOv2 كتحديث مباشر لـ YOLOv1، مع حل مشكلتين رئيسيتين: خطأ التحديد المكاني المرتفع وانخفاض نسبة الاسترجاع (recall). لمعالجة هذه المشكلات، تم تطبيق عدة تحسينات جوهرية. أولاً، تم إدخال طبقة التطبيع بالدفعة (Batch Normalization) التي ساهمت في استقرار التدريب وتسريع التقارب، مع تقليل الحاجة إلى طبقة Dropout، ما أدى إلى تحسن في الدقة (mAP) بنسبة 2.4% من 63.4% إلى 65.8%. ثانيًا، تم تحسين عملية التدريب المُعدّل (fine-tuning) من خلال إضافة خطوة وسطى: تدريب النموذج على صور ImageNet بحجم 448×448 قبل التدريب على مجموعة PASCAL VOC، مما ساعد النموذج على التكيف مع الأحجام الأكبر، ورفع mAP إلى 69.5%. من ثم، تم تبني مفهوم "مربعات المرجع" (Anchor Boxes) بدلًا من التنبؤ مباشرة بتنسيق المربعات، حيث يُستخدم كل مربع مرجعي كنقطة بداية للتنبؤ بتحديثات الموضع والحجم. هذا التغيير سمح لكل مربع مرجعي في خلية شبكة بالتنبؤ بفئة مختلفة، مما زاد من قدرة النموذج على الكشف عن الكائنات المتعددة في نفس المنطقة. كما تم تحويل النموذج إلى شبكة كاملة مُشَبَّكَة (Fully Convolutional Network) بعامل تقليل 32، مع تغيير حجم الإدخال إلى 416×416 لضمان وجود خلية مركزية في المخرجات (13×13)، مما يعزز دقة الكشف عن الكائنات الكبيرة. لتحسين جودة مربعات المرجع، استخدم الباحثون خوارزمية K-means لتحديد أحجام مربعات مرجعية تتوافق مع توزيع أبعاد الكائنات في البيانات، باستخدام مقياس المسافة المستند إلى IOU بدلًا من المسافة الإقليدية. أظهرت النتائج أن هذه الطريقة تُنتج مربعات مرجعية أفضل من تلك المُحددة يدويًا، ما ساهم في رفع mAP من 69.6% إلى 74.4%. كما تم تحسين التنبؤات باستخدام دالة سيغمويد لقيمة الموضع (x, y) ودالة أسية لعرض وارتفاع المربع، لضمان تنبؤات ضمن حدود الخلية وتجنب القيم السلبية. إضافة إلى ذلك، تم إدخال طبقة "التمرير" (Passthrough Layer) لاستعادة المعلومات الدقيقة من الطبقات السابقة قبل التقليل، حيث يتم تقسيم الخريطة الميزة 26×26 ودمجها في قنوات جديدة لتكوين خريطة 13×13، ثم دمجها مع الخريطة من المسار الرئيسي. هذا يعزز كشف الكائنات الصغيرة. كما تم تطبيق تدريب متعدد المقاييس (Multi-Scale Training)، حيث يتم تغيير حجم الصورة عشوائيًا كل 10 دفعات بين 320×320 و608×608، مما يُحسّن قدرة النموذج على التعرف على الكائنات بمقاييس مختلفة، ورفع mAP إلى 78.6% عند 544×544. كما تم استخدام معمارية Darknet-19 كنواة للنموذج، التي تتميز بكمية عمليات أقل من YOLOv1 (5.58 مليار مقابل 8.52 مليار)، مما يعزز السرعة. في النهاية، تم بناء YOLO9000 عبر دمج بيانات ImageNet (22 ألف فئة) مع COCO باستخدام هيكلية "شجرة الكلمات" (WordTree)، مما سمح للنموذج بالكشف عن أكثر من 9000 فئة، مع الحفاظ على الترابط بين الفئات العامة والمتخصصة. تم في النهاية عرض تطبيق عملي لبناء YOLOv2 من الصفر باستخدام PyTorch، مع تضمين كل المكونات: Darknet-19، طبقة التمرير، والطبقات النهائية للتنبؤ. الناتج النهائي هو متجه تنبؤ بحجم 125×13×13 لكل خلية، يحتوي على معلومات عن 5 مربعات مرجعية وفئات الكائنات. هذا النموذج يُعدّ نقلة نوعية في التوازن بين السرعة والدقة، ويُعدّ أساسًا لتطوير نماذج لاحقة مثل YOLOv3 وYOLOv4.
