Katna ทำงานอัตโนมัติที่น่าเบื่อและเสี่ยงต่อข้อผิดพลาดของคีย์วิดีโอ/การแยกเฟรมที่ดีที่สุด การบีบอัดวิดีโอ และงานที่ใช้เวลานานด้วยตนเองในการครอบตัดรูปภาพและปรับขนาดโดยใช้ ML
กล่าวโดยสรุป คุณอาจต้องการพิจารณาใช้ไลบรารี Katna หากคุณมีงานดังต่อไปนี้:
คุณมีวิดีโอ/วิดีโอที่คุณต้องการบีบอัดให้มีขนาดเล็กลง (เช่น คุณมีวิดีโอที่มีขนาด 1 GB แต่คุณต้องการบีบอัดให้เล็กที่สุด)
คุณมีรูปภาพ/รูปภาพที่คุณต้องการปรับขนาดอย่างชาญฉลาดให้เป็นความละเอียดเป้าหมาย (เช่น 500x500, 1080p (1920x1080) เป็นต้น)
คุณต้องการแยกส่วนที่มีอัตราส่วนภาพเฉพาะ เช่น 4:3 จากรูปภาพ/รูปภาพที่คุณป้อน (เช่น รับการครอบตัดอัตราส่วนภาพ 1:1 จากรูปภาพความละเอียด 1920x1080 (รูปภาพอัตราส่วน 16:9))
คุณต้องการปรับขนาดวิดีโอเป็นอัตราส่วนเฉพาะ เช่น 16:9 (แนวนอน) ให้เป็น 1:1 (สี่เหลี่ยมจัตุรัส) โปรดทราบว่าขณะนี้คุณลักษณะนี้ยังอยู่ ในช่วงทดลอง และต้องการการคอมไพล์และการกำหนดค่าเพิ่มเติมของไลบรารี Google Mediapipe
Katna แบ่งออกเป็นสองโมดูล
โมดูลนี้จัดการงานในการแยกคีย์เฟรมและการบีบอัดวิดีโอ
คีย์เฟรมถูกกำหนดให้เป็นเฟรมตัวแทนของสตรีมวิดีโอ ซึ่งเป็นเฟรมที่ให้การสรุปเนื้อหาวิดีโอที่แม่นยำและกะทัดรัดที่สุด
การแยกเฟรมและเกณฑ์การคัดเลือกสำหรับการแยกคีย์เฟรม
การบีบอัดวิดีโอได้รับการจัดการโดยใช้ไลบรารี ffmpeg รายละเอียดที่สามารถอ่านได้ในส่วนโมดูล Katna.video_compressor
ตั้งแต่ Katna เวอร์ชัน 0.8.0 เป็นต้นไป เรากำลังขยายฟีเจอร์การปรับขนาดอัจฉริยะไปยังวิดีโอด้วยความช่วยเหลือจากโครงการ Mediapipe ของ Google หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ โปรดดูเอกสารประกอบ [Video Smart Resize โดยใช้ Katna] (https://katna.readthedocs.io/en/latest/understand_katna.html#katna-video-resize) โปรดทราบว่าคุณลักษณะนี้เป็นคุณลักษณะทดลองที่เป็นทางเลือก และอาจต้องมีการลบ/แก้ไขในเวอร์ชันต่อๆ ไป นอกจากนี้คุณยังต้องติดตั้งไลบรารี Mediapipe ของ Google ซึ่งเป็นไบนารีการพลิกอัตโนมัติแบบพิเศษเพื่อให้สิ่งนี้ทำงานได้ โปรดดูลิงก์สำหรับวิธีการติดตั้งและกำหนดค่ามีเดียไปป์ที่จะใช้กับ katna
โมดูลนี้จัดการงานที่เกี่ยวข้องกับการครอบตัดอัจฉริยะและการปรับขนาดรูปภาพ
การครอบตัดรูปภาพอัจฉริยะเกิดขึ้นในลักษณะที่โมดูลระบุส่วนที่ดีที่สุดหรือบริเวณที่บุคคลมุ่งเน้นมากขึ้นและตีความข้อมูลนี้ในขณะที่ครอบตัดรูปภาพ
เกณฑ์การสกัดและคัดเลือกพืชผล
คล้ายกับโมดูลรูปภาพ Smart crop Katna รองรับคุณสมบัติ การปรับขนาดรูปภาพอัจฉริยะ ด้วยรูปภาพอินพุต จึงสามารถปรับขนาดรูปภาพให้เป็นความละเอียดเป้าหมายด้วยการปรับขนาดอย่างง่าย หากอัตราส่วนกว้างยาวเท่ากันสำหรับอินพุตและรูปภาพเป้าหมาย หากอัตราส่วนภาพแตกต่างจากการปรับขนาดรูปภาพอัจฉริยะ อันดับแรกจะครอบตัดการครอบตัดคุณภาพดีที่ใหญ่ที่สุดตามความละเอียดเป้าหมาย จากนั้นจึงปรับขนาดรูปภาพตามความละเอียดเป้าหมาย สิ่งนี้ทำให้แน่ใจได้ถึงการปรับขนาดรูปภาพโดยไม่บิดเบือนภาพที่ป้อนเข้าจริงๆ โปรดทราบว่าหากอัตราส่วนภาพของอินพุตและเอาต์พุตไม่เท่ากัน katna image_resize อาจทำให้เนื้อหารูปภาพหายไปได้
รูปแบบไฟล์วิดีโอและรูปภาพที่รองรับ #########################################
รองรับรูปแบบวิดีโอหลักทั้งหมด เช่น .mp4,.mov,.avi ฯลฯ และรูปแบบรูปภาพ เช่น .jpg, .png, .jpeg ฯลฯ
คุณสมบัติการเลือกเพิ่มเติมอยู่ในขั้นตอนการพัฒนา
ติดตั้งคอมไพล์
ติดตั้ง Anaconda หรือ Miniconda Python
เปิดเทอร์มินัล
โคลน repo จากที่นี่ https://github.com/keplerlab/Katna.git
เปลี่ยนไดเร็กทอรีเป็นไดเร็กทอรีที่คุณได้โคลน repo ของคุณ
$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 ได้รับการปรับให้เหมาะสมเพื่อใช้การประมวลผลหลายตัวโดยใช้โมดูลการประมวลผลหลายตัวของ python เนื่องจากข้อจำกัดของการประมวลผลหลายตัวใน windows เพื่อการนำเข้าโมดูลหลักในระบบ windows อย่างปลอดภัย ตรวจสอบให้แน่ใจว่า “จุดเข้าใช้งาน” ของโปรแกรมอยู่ใน ชื่อ == ' main ': ดังนี้:
from Katna.video import Video
if __name__ == "__main__":
vd = Video()
# your code
โปรดดูhttps://docs.python.org/2/library/multiprocessing.html#windowsสำหรับรายละเอียดเพิ่มเติม
หากรูปภาพอินพุตมีขนาดใหญ่มาก (ใหญ่กว่า 2000x2000) อาจใช้เวลานานในการครอบตัดอัจฉริยะอัตโนมัติ หากคุณพบปัญหานี้ ให้ลองเปลี่ยน down_sample_factor จากค่าเริ่มต้น 8 เป็นค่าที่มากขึ้น ( เช่น 16 หรือ 32 ) สิ่งนี้จะลดเวลาการประมวลผลลงอย่างมาก
หากคุณเห็นข้อผิดพลาด "AttributeError: module 'cv2.cv2' has no คุณลักษณะ 'saliency'" ถอนการติดตั้ง opencv-contrib โดยเรียกใช้คำสั่ง "python -m pip ถอนการติดตั้ง 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 ตรวจสอบให้แน่ใจว่าอนาคอนดามีสิทธิ์ของผู้ดูแลระบบหากติดตั้งด้วยอนาคอนดาเนื่องจากล้มเหลวโดยมีสิทธิ์ในการเขียนขณะติดตั้งบางโมดูล
หากคุณได้รับ "RuntimeError: ไม่พบ ffmpeg exe" ติดตั้ง ffmpeg บนระบบของคุณและ/หรือตั้งค่าตัวแปรสภาพแวดล้อม IMAGEIO_FFMPEG_EXE หรือ FFMPEG_EXE เป็นพาธของไบนารี ffmpeg ของคุณ โดยปกติแล้ว ffmpeg จะถูกติดตั้งโดยใช้แพ็คเกจ imageio-ffmpeg ตรวจสอบ โฟลเดอร์ imageio_ffmpeg-*.egg ภายในโฟลเดอร์ site-packages ของคุณ ควรมีไฟล์ ffmpeg อยู่ในโฟลเดอร์ไบนารี ตรวจสอบว่าไฟล์นี้มีสิทธิ์ในการอ่าน/ปฏิบัติการที่เหมาะสมหรือไม่ และตั้งค่าเส้นทางเพิ่มเติมด้วย สู่ตัวแปรสภาพแวดล้อม
มีปัญหาหน่วยความจำรั่วใน Katna เวอร์ชัน 0.8.2 และน้อยกว่า เมื่อเรียกใช้การแยกคีย์เฟรมวิดีโอจำนวนมากบน Python เวอร์ชัน 3.6 และ 3.7 นี่เป็นข้อบกพร่องด้านการประมวลผลหลายตัวที่พบใน Python 3.6 และ 3.7 เท่านั้น และได้รับการแก้ไขใน katna เวอร์ชัน 0.9 ขึ้นไป หากคุณใช้โค้ดการแยกคีย์เฟรมกับวิดีโอจำนวนมากและประสบปัญหาหน่วยความจำ โปรดอัปเกรดเวอร์ชัน katna ของคุณเป็นเวอร์ชัน 0.9 หรือสูงกว่า หากคุณยังคงต้องการใช้ katna เวอร์ชันเก่าให้พิจารณาอัปเกรดเวอร์ชัน python เป็น 3.8 หรือสูงกว่า
เราได้เพิ่มเฟรมเวิร์กตัวเขียนเพื่อประมวลผลข้อมูลจากโมดูล Katna Video และ 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 ที่ใช้สำหรับการแยกคีย์เฟรม