نظرة عامة على النظام
كما يوحي اسمه، البحث عن مقاطع الفيديو عن طريق الصورة هو عملية استرجاع من مستودع مقاطع الفيديو التي تحتوي على إطارات مشابهة للصورة المُدخَلة. تتمثل إحدى الخطوات الرئيسية في تحويل مقاطع الفيديو إلى تضمينات، أي استخراج الإطارات الرئيسية وتحويل ميزاتها إلى متجهات. والآن، قد يتساءل بعض القراء الفضوليين عن الفرق بين البحث عن الفيديو حسب الصورة والبحث عن صورة حسب الصورة؟ في الواقع، إن البحث عن الإطارات الرئيسية في مقاطع الفيديو يعادل البحث عن صورة بصورة.
يمكنك الرجوع إلى مقالنا السابق Milvus x VGG: بناء نظام استرجاع الصور القائم على المحتوى إذا كنت مهتمًا.
نظرة عامة على النظام
يوضح الرسم البياني التالي سير العمل النموذجي لنظام البحث عن الفيديو هذا.
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-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-milvigure-milvus-redis-minio-docker-compose-yml.png
الخطوة 3: ابدأ تشغيل النظام.
استخدم docker-compose.yml المعدل لبدء تشغيل حاويات docker الخمس التي ستُستخدم في نظام استرجاع الفيديو:
$ docker-compose up -d
بعد ذلك، يمكنك تشغيل docker-compose ps للتحقق مما إذا كانت حاويات docker الخمس قد بدأت بشكل صحيح. تُظهر لقطة الشاشة التالية واجهة نموذجية بعد بدء التشغيل الناجح.
4-بدء التشغيل الناجح.png
الآن، لقد نجحت في بناء نظام بحث عن الفيديو، على الرغم من أن قاعدة البيانات لا تحتوي على مقاطع فيديو.
الخطوة 4: استيراد مقاطع الفيديو.
في دليل النشر في مستودع النظام، يقع استيراد_data.py، وهو البرنامج النصي لاستيراد مقاطع الفيديو. ما عليك سوى تحديث المسار إلى ملفات الفيديو والفاصل الزمني للاستيراد لتشغيل البرنامج النصي.
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-واجهة البحث عن الفيديو. png
قم بتبديل مفتاح الترس في أعلى اليمين لعرض جميع مقاطع الفيديو في المستودع.
7-عرض جميع مقاطع الفيديو في المستودع.png
انقر على مربع التحميل في أعلى اليسار لإدخال صورة مستهدفة. كما هو موضح أدناه، يعرض النظام مقاطع الفيديو التي تحتوي على الإطارات الأكثر تشابهًا.
8-enjoy-RE-recommender-نظام-قطط.png
بعد ذلك، استمتع بنظام البحث عن الفيديو!
أنشئ نظامك الخاص
في هذه المقالة، استخدمنا ميلفوس لبناء نظام للبحث عن مقاطع الفيديو حسب الصور. هذا مثال على تطبيق ميلفوس في معالجة البيانات غير المنظمة.
تتوافق Milvus مع العديد من أطر التعلم العميق، وتتيح عمليات البحث في أجزاء من الثانية لمتجهات بمليارات الثواني. لا تتردد في أخذ Milvus معك إلى المزيد من سيناريوهات الذكاء الاصطناعي: https://github.com/milvus-io/milvus.
- إعداد البيانات
- النشر
- الخطوة 2: تهيئة البيئة.
- الخطوة 3: ابدأ تشغيل النظام.
- الخطوة 4: استيراد مقاطع الفيديو.
- عرض الواجهة
- أنشئ نظامك الخاص
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word