Katna は、ビデオのキー/ベスト フレームの抽出、ビデオ圧縮、画像のトリミングやサイズ変更といった時間のかかる手動タスクといった退屈でエラーが発生しやすいタスクを ML を使用して自動化します。
つまり、次のタスクがある場合は、Katna ライブラリの使用を検討するとよいでしょう。
より小さいサイズに圧縮したいビデオがあります。 (例: サイズが 1 GB のビデオがあるが、それをできるだけ小さく圧縮したいとします。)
ターゲット解像度にスマートにサイズ変更したい画像があります。 (例: 500x500、1080p (1920x1080) など)
入力画像から特定のアスペクト比 (例: 4:3) のクロップを抽出したいとします。 (例: 解像度 1920x1080 の画像からアスペクト比 1:1 のクロップを取得 (アスペクト比 16:9 の画像))
ビデオのサイズを特定のアスペクト比、たとえば 16:9 (横長)、たとえば 1:1 (正方形) に変更したいとします。この機能は現在実験段階であり、Google メディアパイプ ライブラリの追加のコンパイルと構成が必要であることに注意してください。
Katna は 2 つのモジュールに分かれています
このモジュールは、キー フレームの抽出とビデオ圧縮のタスクを処理します。
キーフレームは、ビデオ ストリームの代表的なフレーム、つまりビデオ コンテンツの最も正確かつコンパクトな要約を提供するフレームとして定義されます。
フレーム抽出とキーフレーム抽出の選択基準
ビデオ圧縮は 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 で使用するメディアパイプのインストールおよび設定方法については、リンクを参照してください。
このモジュールは、スマートなトリミングと画像のサイズ変更に関連するタスクを処理します。
スマート画像トリミングは、モジュールが最良の部分または誰かがより焦点を当てている領域を特定し、画像のトリミング中にこの情報を解釈する方法で行われます。
作物の抽出と選択の基準
スマート クロップと同様に、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 より大きい) 場合、自動スマート クロッピングの実行に時間がかかることがあります。この問題が発生した場合は、 down_sample_factor をデフォルトの 8 からより大きな値 ( 16 や 32 など) に変更することを検討してください。これにより、処理時間が大幅に短縮されます。
「属性エラー: モジュール 'cv2.cv2' には属性 'saliency' がありません」エラーが表示される場合。コマンド「python -m pip uninstall opencv-contrib-python」を実行して opencv-contrib をアンインストールし、コマンドを実行して再度インストールします
python -m pip install opencv-contrib-python
「FileNotFoundError:frozen_east_text_detection.pb ファイルが見つかりません」と表示される場合。 Python シェルを開き、以下のコマンドに従います。
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 パッケージを使用してインストールされます。site -packagesフォルダー内のimageio_ffmpeg-*.eggフォルダーを確認してください。バイナリ フォルダー内に 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.extract_video_keyframes と video.extract_video_keyframes_from_dir には追加のライター オブジェクトが必要です。デフォルトでは、Katna.writer モジュールから KeyFrameDiskWriter を使用できます。 Writer フレームワークは、要件に基づいて拡張できます。
image.crop_image と image.crop_image_from_dir には追加のライター オブジェクトが必要です。デフォルトでは、ImageCropDiskWriter は Katna.writer モジュールから使用できます。 Writer フレームワークは、要件に基づいて拡張できます。
更新された例については、こちらのドキュメントを参照してください: リンク
このバグ修正バージョンでは、この問題が修正されています: リンク
まれに、ffmpeg を使用して分割されたビデオが読み取れず、例外リンクがスローされる問題を修正しました
Google のメディアパイプ Autoflip コード例を使用したビデオの自動切り取り/サイズ変更の実験的サポートを追加しました。
image_module Crop_image および Crop_image_from_dir メソッドによって間違った仕様のクロップが返されるバグを修正しました。
Katna.video モジュールにビデオ圧縮のサポートが追加されました。
Katna.image モジュールにスマート画像サイズ変更のサポートが追加されました。
バージョン 0.5.0 では、キーフレーム抽出に使用される Katna.video モジュール内部のパブリック関数の名前をいくつか変更しました。