Katna 使用機器學習自動執行視訊關鍵/最佳幀提取、視訊壓縮等無聊且容易出錯的任務,以及手動耗時的圖像裁剪和調整大小任務。
簡而言之,如果您有以下任務,您可能需要考慮使用 Katna 庫:
您有一個或多個影片想要壓縮到更小的尺寸。 (例如,假設您的影片大小為 1 GB,但您希望將其壓縮得盡可能小。)
您想要將多個影像智慧地調整為目標解析度。 (例如 500x500、1080p (1920x1080) 等)
您想要從輸入影像中提取特定縱橫比的裁剪,例如 4:3。 (例如,從解析度為 1920x1080 的影像(16:9 寬高比影像)中取得寬高比為 1:1 的裁切)
您想要將影片大小調整為特定的寬高比,例如 16:9(橫向),或 1:1(方形)。請注意,此功能目前處於實驗階段,需要額外編譯和配置 google mediapipe 庫。
Katna分為兩個模組
此模組處理關鍵幀提取和視訊壓縮的任務。
關鍵幀被定義為視訊串流的代表性幀,這些幀提供了視訊內容的最準確和最緊湊的摘要。
幀提取和關鍵幀提取的選擇標準
視訊壓縮使用 ffmpeg 庫進行處理。有關詳細信息,請參閱 Katna.video_compressor 模組部分。
自 Katna 0.8.0 版本以來,我們在 Google Mediapipe 專案的幫助下將智慧調整大小功能擴展到影片。要了解更多信息,請參閱文檔 [使用 Katna 進行視頻智能調整大小] (https://katna.readthedocs.io/en/latest/understanding_katna.html#katna-video-resize)。請注意,此功能是可選的實驗性功能。並且可能會在以後的版本中被刪除/修改。此外,您還需要安裝 Google 的 Mediapipe 庫,特別是 autoflip 二進位才能正常運作。請參閱連結以了解如何安裝和配置與 katna 一起使用的 mediapipe。
此模組處理與智慧裁剪和影像調整大小相關的任務。
智慧型影像裁剪的方式是,模組識別最佳部分或人們更關注的區域,並在裁剪影像時解釋此資訊。
作物提取和選擇標準
類似智慧型裁切 Katna 影像模組支援智慧型影像調整大小功能。給定輸入影像,如果輸入影像和目標影像的長寬比相同,則可以透過簡單的調整大小將影像大小調整為目標解析度。如果寬高比與智慧型影像調整大小不同,將首先以目標解析度裁剪最大的優質裁剪,然後以目標解析度調整影像大小。這可確保調整影像大小而不會實際傾斜輸入影像。請注意,如果輸入和輸出影像的寬高比不同,katna image_resize 可能會導致影像內容遺失
支援的影片和圖片檔案格式############################################################################ #
支援所有主要影片格式(如 .mp4、.mov、.avi 等)和影像格式(如 .jpg、.png、.jpeg 等)。
更多選擇功能正在開發中
安裝git
安裝 Anaconda 或 Miniconda Python
打開終端
從這裡克隆儲存庫 https://github.com/keplerlab/Katna.git
將目錄變更為克隆儲存庫的目錄
$cd path_to_the_folder_repo_cloned
如果您使用的是 anaconda python 發行版,請建立新的 anaconda 環境
conda create --name katna python=3.7
source activate katna
運行設定:
python setup.py install
自 Katna 版本 0.4.0 起,Katna 視訊模組經過最佳化,可使用 python 多處理模組進行多處理。由於windows中多處理的限制,為了在windows系統中安全導入主模組,請確保程式的「入口點」包裹在name == ' main ':中,如下所示:
from Katna.video import Video
if __name__ == "__main__":
vd = Video()
# your code
請參閱 https://docs.python.org/2/library/multiprocessing.html#windows 以了解更多詳細資訊。
如果輸入影像非常大(大於 2000x2000 ),則執行自動智慧裁剪可能需要很長時間。這將顯著減少處理時間。
如果您看到「AttributeError:模組『cv2.cv2』沒有屬性『顯著性』」錯誤。透過執行指令「python -m pip uninstall opencv-contrib-python」卸載 opencv-contrib,然後再次透過執行指令安裝它
python -m pip install opencv-contrib-python
如果您看到「FileNotFoundError:未找到 freeze_east_text_detection.pb 檔案」。開啟 python shell 並執行以下命令。
from Katna.image_filters.text_detector import TextDetector
td = TextDetector()
td.download()
在 Windows 上,如果使用 anaconda 安裝,請確保 anaconda 具有管理員權限,因為在安裝某些模組時,它會因寫入權限而失敗。
如果出現「執行階段錯誤:找不到 ffmpeg exe」。在系統上安裝 ffmpeg,和/或將 IMAGEIO_FFMPEG_EXE 或 FFMPEG_EXE 環境變數設定為 ffmpeg 二進位檔案的路徑。通常 ffmpeg 是使用 imageio-ffmpeg 套件安裝的,檢查site-packages資料夾中的imageio_ffmpeg-*.egg資料夾,binaries 資料夾中應該有一個ffmpeg 文件,檢查該文件是否具有正確的讀取/可執行權限集,並另外設定其路徑到環境變數。
在 Python 3.6 和 3.7 上執行大量視訊關鍵影格擷取時,Katna 0.8.2 及更低版本中存在已知的記憶體洩漏問題,這是僅在 Python 3.6 和 3.7 中觀察到的多處理錯誤。並在 katna 0.9 及以上版本中修復。如果您在大量影片上執行關鍵影格提取程式碼並遇到記憶體問題,請要求您將 katna 版本升級到 0.9 或更高版本。如果您仍然想使用舊版本的 katna,請考慮將 python 版本升級到 3.8 或更高版本。
我們添加了編寫器框架來處理來自 Katna 視訊和圖像模組的資料。此版本還修復了此問題和此問題報告的記憶體洩漏問題。
video.extract_video_keyframes 和 video.extract_video_keyframes_from_dir 需要額外的 writer 物件。預設情況下,KeyFrameDiskWriter 可以從 Katna.writer 模組中使用。 Writer框架可以根據需求進行擴展。
image.crop_image 和 image.crop_image_from_dir 需要額外的 writer 物件。預設情況下,ImageCropDiskWriter 可從 Katna.writer 模組中使用。 Writer框架可以根據需求進行擴展。
請參閱此處更新範例的文檔:鏈接
此錯誤修復版本修復了此問題:鏈接
修正了在極少數情況下使用 ffmpeg 分割影片不可讀並引發異常的問題
使用 Google 的 mediapipe Autoflip 程式碼範例新增了自動裁切/調整影片大小的實驗性支援。
修正了 image_modulecrop_image 和crop_image_from_dir 方法傳回不正確規格作物的錯誤。
Katna.video 模組中加入了對視訊壓縮的支援。
Katna.image 模組中新增了對智慧型影像調整大小的支援。
在 0.5.0 版本中,我們更改了用於關鍵幀提取的 Katna.video 模組內部的一些公共函數的名稱,