🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
  • Home
  • Blog
  • نظرة عامة على النظام

نظرة عامة على النظام

  • Scenarios
August 29, 2020
milvus

كما يوحي اسمه، البحث عن مقاطع الفيديو عن طريق الصورة هو عملية استرجاع من مستودع مقاطع الفيديو التي تحتوي على إطارات مشابهة للصورة المُدخَلة. تتمثل إحدى الخطوات الرئيسية في تحويل مقاطع الفيديو إلى تضمينات، أي استخراج الإطارات الرئيسية وتحويل ميزاتها إلى متجهات. والآن، قد يتساءل بعض القراء الفضوليين عن الفرق بين البحث عن الفيديو حسب الصورة والبحث عن صورة حسب الصورة؟ في الواقع، إن البحث عن الإطارات الرئيسية في مقاطع الفيديو يعادل البحث عن صورة بصورة.

يمكنك الرجوع إلى مقالنا السابق Milvus x VGG: بناء نظام استرجاع الصور القائم على المحتوى إذا كنت مهتمًا.

نظرة عامة على النظام

يوضح الرسم البياني التالي سير العمل النموذجي لنظام البحث عن الفيديو هذا.

1-video-search-system-workflow.png 1-video-search-system-workflow.png

عند استيراد مقاطع الفيديو، نستخدم مكتبة OpenCV لتقطيع كل مقطع فيديو إلى إطارات، ونستخرج متجهات الإطارات الرئيسية باستخدام نموذج استخراج سمات الصورة VGG، ثم ندرج المتجهات المستخرجة (التضمينات) في ملفوس. نستخدم Minio لتخزين مقاطع الفيديو الأصلية وRedis لتخزين الارتباطات بين مقاطع الفيديو والمتجهات.

عند البحث عن مقاطع الفيديو، نستخدم نفس نموذج VGG لتحويل الصورة المدخلة إلى متجه ميزة وإدخاله في Milvus للعثور على المتجهات الأكثر تشابهًا. بعد ذلك، يسترجع النظام مقاطع الفيديو المقابلة من Minio على واجهته وفقًا للارتباطات في ريديس.

إعداد البيانات

في هذه المقالة، نستخدم حوالي 100,000 ملف GIF من Tumblr كمجموعة بيانات نموذجية في بناء حل شامل للبحث عن الفيديو. يمكنك استخدام مستودعات الفيديو الخاصة بك.

النشر

الكود الخاص ببناء نظام استرجاع الفيديو في هذه المقالة موجود على GitHub.

الخطوة 1: بناء صور Docker.

يتطلب نظام استرجاع الفيديو إرساء Milvus v0.7.1 docker، وRedis docker، وMinio docker، وDocker للواجهة الأمامية، وDocker لواجهة برمجة التطبيقات الخلفية. تحتاج إلى بناء وحدة إرساء الواجهة الأمامية ووحدة إرساء واجهة برمجة التطبيقات الخلفية بنفسك، بينما يمكنك سحب وحدات الإرساء الثلاثة الأخرى مباشرةً من Docker Hub.

# Get the video search code
$ git clone -b 0.10.0 https://github.com/JackLCL/search-video-demo.git

# Build front-end interface docker and api docker images
$ cd search-video-demo & make all

الخطوة 2: تهيئة البيئة.

نستخدم هنا docker-compose.yml لإدارة الحاويات الخمس المذكورة أعلاه. انظر الجدول التالي للاطلاع على تكوين docker-compose.yml:

2-configure-docker-compose-yml.png 2-configure-docker-compose-compose-yml.png

عنوان IP 192.168.1.38 في الجدول أعلاه هو عنوان الخادم المخصص لبناء نظام استرجاع الفيديو في هذه المقالة. تحتاج إلى تحديثه إلى عنوان الخادم الخاص بك.

تحتاج إلى إنشاء دلائل تخزين يدويًا لـ Milvus وRedis وMinio، ثم إضافة المسارات المقابلة في docker-compose.yml. في هذا المثال، أنشأنا الدلائل التالية:

/mnt/redis/data /mnt/minio/data /mnt/milvus/db

يمكنك تكوين Milvus، وRedis، وMinio في docker-compose.yml على النحو التالي:

3-configure-milvus-redis-minio-docker-compose-yml.png 3-configure-milvigure-milvus-redis-minio-docker-compose-yml.png

الخطوة 3: ابدأ تشغيل النظام.

استخدم docker-compose.yml المعدل لبدء تشغيل حاويات docker الخمس التي ستُستخدم في نظام استرجاع الفيديو:

$ docker-compose up -d

بعد ذلك، يمكنك تشغيل docker-compose ps للتحقق مما إذا كانت حاويات docker الخمس قد بدأت بشكل صحيح. تُظهر لقطة الشاشة التالية واجهة نموذجية بعد بدء التشغيل الناجح.

4-sucessful-setup.png 4-بدء التشغيل الناجح.png

الآن، لقد نجحت في بناء نظام بحث عن الفيديو، على الرغم من أن قاعدة البيانات لا تحتوي على مقاطع فيديو.

الخطوة 4: استيراد مقاطع الفيديو.

في دليل النشر في مستودع النظام، يقع استيراد_data.py، وهو البرنامج النصي لاستيراد مقاطع الفيديو. ما عليك سوى تحديث المسار إلى ملفات الفيديو والفاصل الزمني للاستيراد لتشغيل البرنامج النصي.

5-update-path-video.png 5-تحديث المسار-باث-فيديو.png

data_path: المسار إلى مقاطع الفيديو المراد استيرادها.

time.sleep(0.5): الفاصل الزمني الذي يستورد فيه النظام مقاطع الفيديو. يحتوي الخادم الذي نستخدمه لبناء نظام البحث عن الفيديو على 96 نواة وحدة معالجة مركزية. لذلك، يوصى بتعيين الفاصل الزمني على 0.5 ثانية. قم بتعيين الفاصل الزمني على قيمة أكبر إذا كان الخادم لديك يحتوي على عدد أقل من أنوية وحدة المعالجة المركزية. وإلا، فإن عملية الاستيراد ستضع عبئًا على وحدة المعالجة المركزية، وستخلق عمليات زومبي.

قم بتشغيل import_data.py لاستيراد مقاطع الفيديو.

$ cd deploy
$ python3 import_data.py

بمجرد أن يتم استيراد الفيديوهات، ستكون جاهزًا مع نظام البحث عن الفيديو الخاص بك!

عرض الواجهة

افتح متصفحك وادخل إلى 192.168.1.38:8001 لترى واجهة نظام البحث عن الفيديو كما هو موضح أدناه.

6-video-search-interface.png 6-واجهة البحث عن الفيديو. png

قم بتبديل مفتاح الترس في أعلى اليمين لعرض جميع مقاطع الفيديو في المستودع.

7-view-all-videos-repository.png 7-عرض جميع مقاطع الفيديو في المستودع.png

انقر على مربع التحميل في أعلى اليسار لإدخال صورة مستهدفة. كما هو موضح أدناه، يعرض النظام مقاطع الفيديو التي تحتوي على الإطارات الأكثر تشابهًا.

8-enjoy-recommender-system-cats.png 8-enjoy-RE-recommender-نظام-قطط.png

بعد ذلك، استمتع بنظام البحث عن الفيديو!

أنشئ نظامك الخاص

في هذه المقالة، استخدمنا ميلفوس لبناء نظام للبحث عن مقاطع الفيديو حسب الصور. هذا مثال على تطبيق ميلفوس في معالجة البيانات غير المنظمة.

تتوافق Milvus مع العديد من أطر التعلم العميق، وتتيح عمليات البحث في أجزاء من الثانية لمتجهات بمليارات الثواني. لا تتردد في أخذ Milvus معك إلى المزيد من سيناريوهات الذكاء الاصطناعي: https://github.com/milvus-io/milvus.

لا تكن غريبًا، تابعنا على تويتر أو انضم إلينا على سلاك! 👇🏻

Like the article? Spread the word

استمر في القراءة