تقوم Katna بأتمتة المهمة المملة والمعرضة للأخطاء المتمثلة في استخراج مفاتيح مقاطع الفيديو/أفضل الإطارات وضغط الفيديو والمهمة اليدوية التي تستغرق وقتًا طويلاً لاقتصاص الصور وتغيير حجمها باستخدام ML.
باختصار، قد ترغب في التفكير في استخدام مكتبة كاتنا إذا كانت لديك المهام التالية:
لديك فيديو/مقاطع فيديو تريد ضغطها إلى حجم أصغر. (على سبيل المثال، لديك مقطع فيديو بحجم 1 غيغابايت على سبيل المثال ولكنك تريد ضغطه إلى أصغر حجم ممكن.)
لديك صورة/صور تريد تغيير حجمها بذكاء إلى الدقة المستهدفة. (على سبيل المثال 500 × 500، 1080 بكسل (1920 × 1080) وما إلى ذلك)
تريد استخراج نسبة عرض إلى ارتفاع معينة، على سبيل المثال، 4:3 من الصورة/الصور المدخلة. (على سبيل المثال، احصل على نسبة عرض إلى ارتفاع 1:1 من صورة بدقة 1920×1080 (صورة بنسبة عرض إلى ارتفاع تبلغ 16:9))
تريد تغيير حجم الفيديو إلى نسبة عرض إلى ارتفاع معينة، على سبيل المثال 16:9 (أفقي)، لنفترض أنها 1:1 (مربع). يرجى ملاحظة أن هذه الميزة تجريبية حاليًا وتحتاج إلى تجميع وتكوين إضافي لمكتبة google mediapipe.
تنقسم كاتنا إلى وحدتين
تتولى هذه الوحدة المهمة (المهام) الخاصة باستخراج الإطار (الإطارات) الرئيسية وضغط الفيديو.
يتم تعريف الإطارات الرئيسية على أنها الإطارات التمثيلية لدفق الفيديو، وهي الإطارات التي توفر الملخص الأكثر دقة وإحكامًا لمحتوى الفيديو.
استخراج الإطار ومعايير الاختيار لاستخراج الإطار الرئيسي
تتم معالجة ضغط الفيديو باستخدام مكتبة ffmpeg. التفاصيل التي يمكن قراءتها في قسم وحدة Katna.video_compressor.
منذ الإصدار 0.8.0 من Katna، قمنا بتوسيع ميزات تغيير الحجم الذكي لمقاطع الفيديو بمساعدة مشروع Mediapipe من Google. لمعرفة المزيد حول هذا الأمر، يرجى الرجوع إلى الوثائق [Video Smart Resizeاستخدام Katna] (https://katna.readthedocs.io/en/latest/understanding_katna.html#katna-video-resize). يرجى ملاحظة أن هذه الميزة هي ميزة تجريبية اختيارية. وقد يخضع للإزالة/التعديلات في الإصدارات الأحدث. تحتاج أيضًا أيضًا إلى تثبيت مكتبة Mediapipe من Google، وخاصةً الملف الثنائي التلقائي حتى يعمل هذا. يرجى الرجوع إلى الرابط لمعرفة كيفية تثبيت وتكوين mediapipe ليتم استخدامه مع katna.
تتعامل هذه الوحدة مع المهام (المهام) المتعلقة بالاقتصاص الذكي وتغيير حجم الصورة.
يحدث اقتصاص الصورة الذكية بطريقة تحدد الوحدة أفضل جزء أو المنطقة التي يركز عليها الشخص أكثر وتفسر هذه المعلومات أثناء اقتصاص الصورة.
معايير استخراج واختيار المحاصيل
على غرار وحدة الصور Smart Crop Katna، تدعم ميزة تغيير حجم الصورة الذكية . نظرًا لصورة إدخال، يمكن تغيير حجم الصورة لاستهداف الدقة مع تغيير حجم بسيط إذا كانت نسبة العرض إلى الارتفاع هي نفسها بالنسبة للإدخال والصورة المستهدفة. إذا كانت نسبة العرض إلى الارتفاع مختلفة عن تغيير حجم الصورة الذكي، فسيتم أولاً اقتصاص أكبر محصول ذي جودة جيدة في الدقة المستهدفة ثم تغيير حجم الصورة في الدقة المستهدفة. وهذا يضمن تغيير حجم الصورة دون تحريف الصورة المدخلة فعليًا. يرجى ملاحظة أنه إذا كانت نسبة العرض إلى الارتفاع لصورة الإدخال والإخراج ليست هي نفسها katna image_resize يمكن أن يؤدي إلى فقدان بعض محتوى الصورة
تنسيقات ملفات الفيديو والصور المدعومة ####################################
يتم دعم جميع تنسيقات الفيديو الرئيسية مثل .mp4 و.mov و.avi وغيرها وتنسيقات الصور مثل .jpg و.png و.jpeg وما إلى ذلك.
المزيد من ميزات الاختيار في طور التطوير
قم بتثبيت البوابة
قم بتثبيت Anaconda أو Miniconda Python
فتح المحطة
استنساخ الريبو من هنا https://github.com/keplerlab/Katna.git
قم بتغيير الدليل إلى الدليل الذي قمت باستنساخ الريبو الخاص بك فيه
$cd path_to_the_folder_repo_cloned
قم بإنشاء بيئة أناكوندا جديدة إذا كنت تستخدم توزيعة أناكوندا بايثون
conda create --name katna python=3.7
source activate katna
قم بتشغيل الإعداد:
python setup.py install
منذ إصدار Katna 0.4.0، تم تحسين وحدة الفيديو Katna لاستخدام المعالجة المتعددة باستخدام وحدة المعالجة المتعددة بيثون. بسبب قيود المعالجة المتعددة في نظام التشغيل Windows، من أجل الاستيراد الآمن للوحدة الرئيسية في نظام Windows، تأكد من أن "نقطة الدخول" للبرنامج مغلفة بالاسم == ' main ': كما يلي:
from Katna.video import Video
if __name__ == "__main__":
vd = Video()
# your code
يرجى الرجوع إلى https://docs.python.org/2/library/multiprocessing.html#windows لمزيد من التفاصيل.
إذا كانت الصورة المدخلة ذات حجم كبير جدًا (أكبر من 2000 × 2000)، فقد يستغرق إجراء الاقتصاص الذكي التلقائي وقتًا طويلاً. إذا واجهت هذه المشكلة، ففكر في تغيير down_sample_factor من القيمة الافتراضية 8 إلى قيم أكبر (مثل 16 أو 32). سيؤدي هذا إلى تقليل وقت المعالجة بشكل كبير.
إذا رأيت الخطأ "AttributeError: الوحدة النمطية 'cv2.cv2' لا تحتوي على السمة 'saliency'". قم بإلغاء تثبيت opencv-contrib عن طريق تشغيل الأمر "python -m pip uninstall opencv-contrib-python" ثم قم بتثبيته مرة أخرى عن طريق تشغيل الأمر
python -m pip install opencv-contrib-python
إذا رأيت "FileNotFoundError: لم يتم العثور على الملف Frozen_east_text_detection.pb". افتح python shell واتبع الأوامر أدناه.
from Katna.image_filters.text_detector import TextDetector
td = TextDetector()
td.download()
على نظام التشغيل Windows، تأكد من أن anaconda لديه حقوق المسؤول في حالة التثبيت باستخدام anaconda لأنه يفشل في الحصول على إذن الكتابة أثناء تثبيت بعض الوحدات.
إذا ظهرت لك رسالة "RuntimeError: تعذر العثور على ffmpeg exe". قم بتثبيت ffmpeg على نظامك، و/أو قم بتعيين متغير البيئة IMAGEIO_FFMPEG_EXE أو FFMPEG_EXE على مسار الملف الثنائي ffmpeg. عادةً ما يتم تثبيت ffmpeg باستخدام حزمة imageio-ffmpeg، تحقق من مجلد imageio_ffmpeg-*.egg داخل مجلد حزم الموقع الخاص بك، ويجب أن يكون هناك ملف ffmpeg داخل مجلد الثنائيات، وتحقق مما إذا كان هذا الملف يحتوي على مجموعة أذونات القراءة/التنفيذ المناسبة وقم أيضًا بتعيين مساره لمتغير البيئة.
توجد مشكلة معروفة تتعلق بتسرب الذاكرة في الإصدار 0.8.2 من Katna والإصدارات الأقل، عند تشغيل استخراج إطارات رئيسية مجمعة للفيديو في الإصدار 3.6 و3.7 من Python، وهذا خطأ في المعالجة المتعددة تمت ملاحظته فقط في الإصدار 3.6 و3.7 من Python. وتم إصلاحه في إصدار كاتنا 0.9 وما فوق. إذا كنت تقوم بتشغيل كود استخراج Keyframe على عدد كبير من مقاطع الفيديو وتواجه مشكلة في الذاكرة، فاطلب منك ترقية إصدار katna الخاص بك إلى الإصدار 0.9 أو أعلى. إذا كنت لا تزال ترغب في استخدام الإصدار الأقدم من katna، فكر في ترقية إصدار python الخاص بك إلى 3.8 أو أعلى.
لقد أضفنا إطار عمل للكاتب لمعالجة البيانات من وحدة Katna Video and Image. يعمل هذا الإصدار أيضًا على إصلاح مشكلة تسرب الذاكرة التي تم الإبلاغ عنها بواسطة هذه المشكلة وهذه المشكلة.
يتطلب video.extract_video_keyframes وvideo.extract_video_keyframes_from_dir كائن كاتب إضافي. بشكل افتراضي، KeyFrameDiskWriter متاح للاستخدام من وحدة Katna.writer. يمكن تمديد إطار الكاتب بناءً على المتطلبات.
يتطلب image.crop_image وimage.crop_image_from_dir كائن كاتب إضافي. بشكل افتراضي، يتوفر ImageCropDiskWriter للاستخدام من وحدة Katna.writer. يمكن تمديد إطار الكاتب بناءً على المتطلبات.
راجع الوثائق للحصول على الأمثلة المحدثة هنا: الرابط
يعمل إصدار إصلاح الأخطاء هذا على إصلاح هذه المشكلة: الرابط
تم إصلاح المشكلة، في حالات نادرة، حيث تكون مقاطع الفيديو المقسمة باستخدام ffmpeg غير قابلة للقراءة ويتم طرح رابط الاستثناء
تمت إضافة دعم تجريبي لمقاطع الفيديو التي يتم قصها تلقائيًا/تغيير حجمها باستخدام مثال رمز Mediapipe Autoflip من Google.
تم إصلاح الخلل حيث تم إرجاع المحاصيل ذات المواصفات غير الصحيحة بواسطة طريقة image_module Crop_image وcrop_image_from_dir.
تمت إضافة دعم لضغط الفيديو في وحدة Katna.video.
تمت إضافة دعم لتغيير حجم الصورة الذكية في وحدة Katna.image.
في الإصدار 0.5.0 قمنا بتغيير اسم بعض الوظائف العامة داخل وحدة Katna.video المستخدمة لاستخراج الإطار الرئيسي،