스크립트
00:00:00جميعنا نعرف OpenCV، أليس كذلك؟ إنها مكتبة الرؤية الحاسوبية المثالية التي يستخدمها الجميع
00:00:07لتغيير حجم الصور، واكتشاف الكائنات، وتنفيذ كافة أنواع مهام الرؤية الحاسوبية. وقد حصلت للتو على
00:00:13أول تحديث رئيسي لها منذ عام 2018. وهذا تحديث كبير. يحتوي OpenCV5 على محرك
00:00:21تعلم عميق جديد كلياً يمكنه تشغيل YOLO. ويمكنه أيضاً إجراء عمليات ترميم الصور (in-painting) بأسلوب Stable Diffusion
00:00:27وحتى تشغيل نموذج رؤية ولغة كامل بشكل أصلي دون الحاجة إلى PyTorch، أو ONNX runtime، أو أي شيء آخر
00:00:35مضاف إليها. لذا في فيديو اليوم، سنشرح ما الجديد فعلياً في OpenCV5، ثم سنقوم باختبار
00:00:41الميزات الجديدة بأنفسنا من خلال بعض العروض التوضيحية الرائعة التي تعمل محلياً على جهازي. سيكون الأمر
00:00:47ممتعاً للغاية، فلنبدأ في ذلك. أولاً، إليكم لماذا يعتبر هذا التحديث أمراً كبيراً.
00:00:57تنتشر OpenCV في كل مكان. لديها أكثر من 86 ألف نجمة على GitHub، وأكثر من مليون عملية تثبيت يومياً، و
00:01:05على مدى عقدين من الزمن، كانت الأساس للروبوتات والواقع المعزز والهندسة الطبية، والتفتيش
00:01:11الصناعي، وأي برنامج يحتوي على جانب رؤية حاسوبية مرتبط به. وبالنسبة لـ
00:01:17السنوات الثماني الماضية، كان الجميع يبنون على نفس خط الإصدار 4. لذا فإن قفزة الإصدار الرئيسية هنا
00:01:24تعد حقاً أمراً مهماً جداً. والميزة الرئيسية لهذا الإصدار الجديد هي إعادة كتابة كاملة لوحدة DNN،
00:01:32وهذا هو الجزء من OpenCV الذي يشغل الشبكات العصبية. إليكم أهم رقم يجب
00:01:38الانتباه إليه. في OpenCV4، كان محرك DNN يدعم حوالي 22% فقط من مشغلات ONNX. وONNX هو التنسيق
00:01:47القياسي الذي تصدر إليه النموذج عندما تريد تشغيله في مكان آخر غير الإطار الذي تدرب عليه.
00:01:53وهذه التغطية بنسبة 22% كانت تعني في أغلب الأحيان أنك ستأخذ نموذجاً حديثاً، وتحاول تحميله، و
00:02:01تصطدم فوراً بعقبة. بعض المشغلات لم تكن مدعومة، لذا كنت عالقاً. لكن OpenCV5 يرفع هذه التغطية
00:02:08إلى 80%. والآن تقوم هذه المكتبة بتشغيل معظم هذه النماذج مباشرةً. والسبب في هذه القفزة
00:02:15الكبيرة هو طريقة إعادة بنائها. المحرك القديم كان يعالج الشبكات طبقة تلو الأخرى. أما المحرك الجديد فهو
00:02:22مبني حول رسم بياني للعمليات محدد النوع. لذا فهو ينظر إلى الشبكة بأكملها كرسم بياني أولاً، ثم يقوم
00:02:29باستنتاج الأشكال بشكل صحيح، وطي الثوابت، ودمج المشغلات قبل تشغيل أي شيء فعلياً. بعبارات بسيطة،
00:02:36هو يفهم النموذج بالكامل قبل تنفيذه، لذا يمكنه التعامل مع الأشكال الديناميكية و
00:02:42بنيات المحولات (Transformer) الحديثة التي لم يستطع المحرك القديم التعامل معها. وإليكم الجزء المثير للإعجاب.
00:02:48مع هذه التغييرات الجديدة، ليس فقط أصبح أكثر توافقاً، بل أصبح أيضاً سريعاً جداً. لقد اختبرت OpenCV محركها الجديد
00:02:56مقارنة بمحرك ONNX من مايكروسوفت. وعلى وحدة المعالجة المركزية (CPU)، تفوق OpenCV5 عليه أو تعادل معه في النماذج الحقيقية. لذا
00:03:04كان أسرع بنسبة 11.5% من YOLO الإصدار 8، وأسرع بنحو 37% من OWL الإصدار 2، وأسرع بنسبة 30% من Xfeet.
00:03:15هذه أرقام أعلنت عنها OpenCV بنفسها. لذا خذها بحذر واختبر
00:03:22عبء العمل الخاص بك. لكن إذا كانت صحيحة، فهذا مثير للإعجاب حقاً. وهناك المزيد من الأشياء الرائعة في
00:03:27هذا الإصدار الجديد مثل دعم أصلي لأنواع البيانات FP16 وBF16، ودعم حقيقي للمصفوفات ذات الأبعاد n في CVMAT،
00:03:36ونواة تعتمد على بايثون أولاً، وتم الاستغناء عن واجهة برمجة تطبيقات C القديمة واستبدالها بـ C++17 كقاعدة أساسية.
00:03:44وهناك ملاحظة مهمة يجب أن تعرفها مقدماً، وهي أن المحرك الجديد يعمل على وحدة المعالجة المركزية (CPU) فقط في الوقت الحالي.
00:03:51دعم وحدة معالجة الرسوميات (GPU) سيأتي لاحقاً في دورة الإصدار 5. لذا إذا كنت بحاجة إلى استنتاج GPU اليوم،
00:03:58فسوف تعود إلى المحرك التقليدي، الذي لا يزال يحتوي على دعم CUDA وOpenVINO.
00:04:03لذا كل ما سأعرضه لكم في هذا الإصدار 5 الجديد يعمل على CPU. إذن الميزة الأكبر في هذا
00:04:10الإصدار هي محرك DNN الجديد. لذا سنختبر بعض الأمثلة ونرى كيف يعمل.
00:04:16حسناً، لنبدأ بمثال ممتع. توفر OpenCV مثالاً للتلوين حيث يمكنك أخذ
00:04:22صورة بالأبيض والأسود ويقوم هو بتوقع الألوان. وعلى الهامش، كنت أشاهد Spider Noir
00:04:28مؤخراً، وهو عرض رائع. وهو أيضاً بالأبيض والأسود، لذا فكرت أنه قد يكون ممتعاً
00:04:34تلوين لقطة من هذا العرض ورؤية كيف ستبدو. لذا سآخذ هذه الصورة وأشغل
00:04:39مثال التلوين، الذي يستخدم محرك DNN الجديد وبوم، ها هي. انظروا كم كان ذلك سريعاً.
00:04:47بالنسبة للنتيجة، فهي ليست مثالية. ما زلنا نرى أنها جعلت السماء صحيحة نوعاً ما،
00:04:53لكنها فشلت في تلوين بعض الأجزاء الأخرى من الصورة. وتذكروا أن هذا يستخدم نموذج تلوين
00:04:59أقدم، والذي يلعب بأمان مع النغمات الهادئة. لكن النقطة هنا ليست النموذج،
00:05:05بل هي المحرك. لذا ما أردت إظهاره هنا هو أن هذه الصورة تم إنتاجها باستخدام الشبكة العصبية الأصلية
00:05:11لـ OpenCV بدون أي تبعيات إضافية، وهو أمر رائع جداً. الآن لنقم بتجربة مثال اكتشاف الكائنات
00:05:17الخاص بهم. ومجدداً، بما أننا في موضوع Spider Noir، سأستخدم مقطعاً من العرض
00:05:24وأشغله من خلال خط المعالجة لنرى كيف سيعمل. وعندما شغلت البرنامج النصي، انظروا
00:05:29إلى ذلك. إنه يقوم باكتشاف الكائنات في الوقت الفعلي، ويعمل على وحدة المعالجة المركزية من خلال محرك DNN الجديد. و
00:05:36تذكروا ذلك الاختبار الذي ذكرناه سابقاً؟ هذا هو نوع النماذج التي تتفوق فيها OpenCV في السرعة على
00:05:43وقت تشغيل ONNX. لذا فأنت لا تضحي بالأداء من أجل الراحة، بل تحصل على كليهما في هذا
00:05:49السيناريو الخاص. ولا تحتاج إلى تثبيت PyTorch لذلك أو وقت تشغيل منفصل. ولا يوجد GPU مطلوب.
00:05:56كل هذا يعمل في OpenCV الصافية. حسناً، الآن لنقم بتجربة مثال التلوين (in-painting) الخاص بـ LDM.
00:06:03LDM تعني الانتشار الكامن (Latent Diffusion)، وتوفر OpenCV 5 مثالاً للانتشار الكامن هنا.
00:06:11لذا دعونا نرى كيف يعمل ذلك. لنقم بتحميل نفس صورة Spider Noir التي استخدمناها سابقاً.
00:06:16والآن يمكنني التلوين فوق شيء أريد إزالته من الصورة. يمكن أن يكون شخصاً، كائناً،
00:06:23أياً كان. ويقوم نموذج الانتشار بملء المساحة الفارغة. وهذا أبطأ قليلاً لأن مثال التلوين التقليدي
00:06:31في OpenCV يستخدم تمريرة أمامية واحدة، وهي فورية، لكن LDM يستخدم الانتشار،
00:06:39وهو تكراري. لذا يبدأ من الضوضاء ثم يزيل الضوضاء خطوة بخطوة. لذا فهو يشغل هذا النموذج
00:06:45خطوات متعددة على التوالي. ولأننا نقوم بذلك على وحدة معالجة مركزية، فهو أبطأ لأن الانتشار
00:06:51مهمة أكثر ملاءمة لـ GPU. ومع ذلك، إليكم النتيجة التي حصلت عليها عند تشغيلها على بضع
00:06:58خطوات. وأود أن أقول إنها قامت بعمل جيد جداً. ليست مثالية. لا يزال بإمكاننا رؤية بعض آثار
00:07:05الانتشار بوضوح. لكن يمكن حل ذلك عن طريق زيادة عدد الخطوات أو استخدام نموذج انتشار مختلف.
00:07:11وأخيراً، أريد أن أعرض لكم مثال استنتاج VLM، الذي يوضح كيف يمكنك استخدام نماذج
00:07:17الرؤية واللغة أو LLMs أصلياً داخل OpenCV للقيام بأشياء مثل التعليق التوضيحي على الصور أو غيرها من
00:07:25الأشياء. في هذا العرض التوضيحي، نستخدم نموذج Pali Gemma للتعليق على صورة Spider Noir هذه.
00:07:32وكما ترون، إنه بطيء جداً. والنتيجة النهائية ليست مذهلة أيضاً. لذا أنا بالتأكيد
00:07:39لن أستخدم OpenCV لهذا الغرض. هناك خيارات أفضل بكثير للتعليق على الصور. على سبيل المثال،
00:07:45يمكنك تشغيل نموذج 12 billion Gemma 4 محلياً على OMLX والحصول على مخرجات أسرع بمائة مرة من هذا.
00:07:53لقد عرضت ذلك المثال تحديداً في أحد مقاطع الفيديو السابقة عن نموذج 12 billion Gemma 4.
00:07:58لذا تحققوا من ذلك إذا كنتم مهتمين. لكن الهدف من هذا العرض هو إظهار أن OpenCV تمتلك الآن
00:08:04كل القطع التي تحتاجها لتشغيل LLMs. المرمّز (tokenizer)، وطبقات الانتباه، وذاكرة KV المؤقتة،
00:08:11كلها مدمجة. وحقيقة أنها تعمل على الإطلاق على وقت تشغيل منفصل هي إشارة حقيقية
00:08:18إلى المكان الذي تتجه إليه هذه المكتبة. سيكون لديها رؤية ولغة مجمعة في مكان واحد. و
00:08:24بمجرد طرح تحديث GPU، سيكون الأمر أفضل وأسرع. إذن إليكم ذلك،
00:08:29يا رفاق. هذا هو OpenCV الإصدار 5 الجديد باختصار. مكتبة واحدة تعمل على CPU بدون أي
00:08:37تبعات إضافية. وقد استخدمناها للتلوين، واكتشاف الكائنات في الوقت الفعلي، وتلوين الانتشار،
00:08:43والتعليق التوضيحي على الصور. سيتعين عليكم تدريب نماذجكم على شيء مثل Pytorch.
00:08:50هذا ليس شيئاً صُممت OpenCV للقيام به. ولكن عندما يتعلق الأمر بتشغيل تلك النماذج فعلياً
00:08:56داخل خط معالجة الرؤية، فإن OpenCV 5 يعد خياراً رائعاً وقفزة هائلة عما كانت عليه قبل
00:09:03شهر مع محرك DNN الجديد الخاص بهم. فما رأيكم في OpenCV 5 الجديد؟ هل ستستخدمونه
00:09:09في مشاريعكم؟ أخبرونا في قسم التعليقات بالأسفل. ويا رفاق، إذا أعجبتكم
00:09:14أنواع هذه التحليلات التقنية، يرجى إعلامي عن طريق الضغط على زر الإعجاب تحت الفيديو.
00:09:19وأيضاً لا تنسوا الاشتراك في قناتنا. كان معكم أندروس من BetterStack،
00:09:24وسأراكم في الفيديوهات القادمة.