😀

OpenCV for UnityでTensorflowのmodelを読み込む

2022/12/24に公開

OpenCVにはDNNモジュールがあり、Tensorflowの学習済みmodelを読み込むことができます。
OpenCV for Unityを使う場合は、下記のようにできます。

using OpenCVForUnity.UnityUtils;

string MODEL_FILENAME = "model.pb";
string model_filepath = Utils.getFilePath(MODEL_FILENAME);
Net net = Dnn.readNetFromTensorflow(model_filepath);

getFilePath関数のコメントを見ると、"StreamingAssets"フォルダを作成してそこからの相対パスを入力すると、絶対パスを出力するみたいですね。
絶対パスは実行するプラットフォームによって変わってしまうので、この関数でその違いを吸収しているようです。

StreamingAssetsフォルダはOpenCV for Unityに限らず、UnityとしてPATHが決まっているようで、下記で確認することができます。

Debug.Log(Application.streamingAssetsPath);

私のWindows環境下では下記のように出力されました。
ResourceTest2というのはプロジェクト名なので、Assetsフォルダ直下にStreamingAssetsフォルダを作成しなければいけないみたいですね。

C:/Users/naolu/Documents/Unity/ResourceTest2/Assets/StreamingAssets

実際にその他の場所にStreamingAssetsを置いても、Utils.getFilePathからは空文字しか返らず、モデルのPATHを取得することができませんでした。

GitHubで編集を提案

Discussion