2025年の開発を振り返って
昨年はQiitaのアドベントカレンダーにかこつけて2024年の振り返り記事を投稿したのですが、今回は適当なアドベントカレンダーが見つからなかったので自分のブログに投稿しておこうと。
2024年は作りたかったFF14黒塗りツールを作成しました。
一応動作はしていましたが、PythonをEXEにしていたこともあってロスの大きいものになっていたので、2025年はこのアプリのWindows化を目標としていました。
Windowsネイティブにするために、C#、C++を見よう見まねで扱いました。推論部分のサンプルコードを公開されていたのが見つかったことも大きかったですが、ちょうど生成AIによるコード生成が話題なりだした頃で、生成AIにかなり助けられたのも大きかったと考えています。
PythonからC++、C#への移行は3~4か月かけて行い、2月にMicrosoftストアでリリースすることができました。
ニッチなアプリで、今もほとんどダウンロードされていませんが、フリーソフトとして世に出せたのは嬉しかったです。
Windowsネイティブでつくり直しができ、Microsoftストアで公開できたのですが、処理速度はPythonの時とほとんど変わっていませんでした。
初期リリース以降は、ほぼずっと処理速度改善に力を入れていました。
まずは入力テンソルの形状を、正方形から長方形に変更しました。
単純なことですが、処理速度改善に大きな効果がありました。
TensorRTを利用していましたが、ファイルサイズが大きかったため、TensorRT-RTXの導入も行いました。
これによりファイルサイズの大幅な削減が実現できました。
OpenCVを自分のWindows環境でビルドすることで、よりWindowsとの親和性が高く高速なOpenCVを準備することができました。OpenCVは前処理、後処理の画像処理で利用しており、アプリ全体での処理速度改善に大きく寄与したと考えています。
当初はOpenCV-CUDAを利用してさらに高速な処理の実現を検討していたのですが、OpenCV-CUDAのファイルサイズが大きく、TensorRT-RTXで実現したファイルサイズの削減が無駄になってしまうため、適用せずにいます。
2025年に実現できた成果
Python版からWindowsネイティブ版にし、また処理速度など性能改善に取り組んだ結果、つぎのようになりました。
こう見ると結構改善できてきた気がしますね。
Python版 | Windows版 1.0.0.0 | Windows版 1.5.1.0 | |
|---|---|---|---|
最大処理速度 | 25FPS | 28FPS | 73FPS |
ファイルサイズ | 3.5GB | 3.7GB | 0.7GB |
その他 | アプリ起動に30秒程度の待ち時間。 | TensorRTへの事前コンパイルに6分必要。 | TensorRT-RTXで事前コンパイル2秒、推論前コンパイル6秒。 |
来年の取り組み
動画ファイルを比較的高速に処理することはできるようになってきたので、次はリアルタイム対応としてFF14画面をキャプチャして黒塗りし、OBSなどの配信アプリに動画として渡す、ということにチャレンジしたいと思っています。
ゲームをしながらとなると、30FPSが良いところかなと思いますが、OBSに出力できるようになればゲームを配信する時にも活用でき、ゲーム内では名前が見えて、配信では黒塗りされて名前が見えない、というのもできるのではないか?と考えています。
キャプチャやOBS仮想カメラ出力は、難易度が高そうですが実現したいですね。
また、WindowsMLを適用することで、AMD RADEON環境ではROCmベースのMIGraphXが利用できるようになるみたいなので、どこかでWindowsML対応も行いたいと思います。
ま、そんな感じでー