Last updated on

黒塗りアプリのC++化計画!! その5!


TensorRTでBatchを指定してみた!

TensorRTで動作するようになったものの、CPUやメモリなどが足を引っ張ってる感のある感じだったので、TensorRTのバッチ処理に挑戦してみました!
といっても、UltralyticsのDiscordで質問して、教えてもらったgithubのコードを参考にいろいろいじってみただけなのですが。
私の環境だと、ちょっとだけスピードアップする感じになりましたが、まぁ一応動いたのでこれで行こうかなー?って思ってます!

ちなみにUltralyticsに相談した際に、参考として教えていただいたコードはこちらです。
最初からこちらのコードをベースに作れば良かったのかも・・・?知らんかったし、しゃあなし。

C++化による処理速度まとめ!

まだ開発中なので今後変わってくる可能性はありますが、だいたい処理速度が見えてきたのでまとめておきます!
(未来の自分のために)

当方環境
CPU:intel 11400F
GPU:Geforce 4070Ti SUPER 16GB

SDR動画

HDR動画

備考

TensorRT
(Geforce2060以上)

36FPS

26FPS

最初に一度だけONNXからTensorRTの変換が必要。当方環境で5分30秒くらい。

DirectML
(DirectX12対応GPU)

18FPS

15FPS

ONNX-DMLを利用

現行版
Pyinstaller+torch-tensorrt

25FPS

20FPS

  • TensorRTは、NVIDIA Geforce 2060以上で利用可能なものです。
  • DirectMLは、DirectX12に対応していれば利用可能です。AMD RADEONでもIntel Arcでも利用できます。
  • 動画の読み取り、書き出しは、当方ではNVENC/NVDECを利用していますが、RADEON、ARCでもハードウェアエンコーダが利用されるようにしようと思っています。
  • それぞれの処理速度は、あくまで当方環境での結果なので、お持ちのGPUやCPUで速度は変わってきます。
  • HDR画質の動画は、フィルターを利用してSDR画質に落としている関係で、速度低下の程度は主にCPU性能が影響してきます。AutoHDRが有効ですという通知がでる場合は動画はHDR画質になっていると思います。
  • 使用するGPUメモリ量については、ディスプレイの画面描画を含めて6GBを超えることはなさそうでした。恐らくFF14をしているパソコンであれば全く問題ないと思います。
  • TensorRTは、最初に一度、ONNXからTensorRTへの変換が必要になります。個々のPCのGPUにあわせて最適化されるため、個々のPCで1度変換を実施する必要があります。当方環境では5分30秒くらいでした。

現行と比較してTensorRTで30~40%の性能アップが期待できます!
DirectML対応でRADEONでも従来よりはスピードが出るのではないかと予想しています。(RADEON持ってないから評価できないのですが)

次はいよいよUIかなー?