Darkside(https対応しました) |
2022年6月15日(水) 21:39
やはり、万能でお任せできる手ぶれ補正アルゴリズムは無さそうだ。
クリップによって効果に差があり、いろいろなクリップを試行錯誤しつつノウハウを貯めねばならない。
2軸で充分な効果があると思われる場合は、2軸だけで補正した方が確実。処理時間も短い。いずれにしろ、補正効果を確認する工程は省けない。どこで補正失敗が発生しているか分からない。
某3分半のクリップでは、1ピクセル以上の座標変動で基準フレームを切り替えるのが威力を発揮。ただし、一致率の低下は無視した方が良かった。
手ぶれ補正に目処が付いて来ると、ステッチに膨大な時間を要する問題が大きく感じる。現状では、1フレームに4秒近くを要する。そして、これだけ遅いのは png 圧縮のせいだ。ならば、マルチスレッドを試してみよう。
ProcessPoolExecutor を使うところまでは分かったが、ネット情報が極端に少ない。それっぽいコードを記述して実行したところ、実行できたが肝心のマルチ処理部分が全く実行されていない。マルチ処理の先頭で print させているが、何も表示されない。もちろん png ファイルも生成されない。
結論として、パラメーターの引き渡し方が不適切だったと判明。
修正し、まずは max_workers=1 で様子を見る。これは普通に動作した。次に、max_workers=2 に変更し、いよいよマルチ動作。速くなるか?
これが・・・終了しない。しかも書き込むディスクをブラウズしようとすると、異様に長く待たされてレスポンスが悪い。強制終了させてタイムスタンプを確認。連番 png 出力だと、動画出力と異なって途中で強制終了されても出力済みフレームはそのまま使える。
更に、png ファイルごとのタイムスタンプにより、出力速度も分かる。
何と、max_workers=1 と 2 で、出力速度に変化が見られない。マルチ動作させても速度が変わらず、何か不安定になっているだけ意味がない。
話を単純にするため、png 出力部分だけをマルチ処理にしてみた。
すると、ほぼ倍速で出力されるようになったが、ある程度進行すると突然ハング状態に。出力が進行しなくなる。訳が分からない。
並列数を増やしても、png 出力は2倍半まで速くなるかどうかという付近で頭打ち。更に、何フレーム出力するとハングするかというのは一定していない。こうなると、超絶の不安定な割に高速化の効果は小さいと言うしかない。何しろ現状でも、別々のステッチを2窓で実行するとか、DaVinci にエンコードさせてる裏でステッチさせるとか、そういう同時実行は行っている。そしてそういう同時実行は、安定している。
当面はシングルタスク版のまま運用し、それよりも手ぶれ補正のノウハウなど収集を優先させるとしよう。
written by higashino [Virtual Reality] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4