Edited at
Siv3DDay 10

OpenSiv3DとLibTorchでカルピスの判定

これはSiv3D Advent Calendar 201810日目の記事です。


はじめに

カルピス美味しいですよね。そこで今回はカルピスのボトルの写真から味の判定をするアプリケーションを作りました。


LibTorch+OpenSiv3D

LibTorchはPyTorchのC++ APIです。これを使えば、C++でDeep Leaningができます。OpenSiv3Dから、LibTorchを呼び出してあげることで、簡単にDeep Learningを使用したアプリケーションを作れます。(簡単に作れるとは言ってない


OpenSiv3D側

GUIと画像の前処理を請け負っています。


LibTorch側

PyTorchで作ったモデルを読み込んで、OpenSiv3Dから渡された画像から、カルピスの味を判定しています。


制作したアプリケーション

ウィンドウに画像ファイルをドラッグアンドドロップすると、勝手に判別するようになっています。



カルピス北海道はまあまあ美味しいですね。



自分は普通のカルピスが一番好きです。



カルピスの写っていない画像も判別するようにしました。


ソースコード

本記事で作成したアプリケーションのソースをあげときます。

https://github.com/MurakamiShun/CALPIS


奮闘記

そう簡単にできたら、困ってませんよwww


ABIのバージョンとCMakeファイル

まず、OpenSiv3DはC++17準拠で書かれています。

またLibTorchはC++11準拠で書かれているのですが、ABIのバージョンが古いため、そのままコンパイルするとOpenSiv3D側のコンパイルが通らないという問題があます。このABIのバージョンを_GLIBCXX_USE_CXX11_ABIで指定する必要があります。しかし、このフラグがLibTorchのCMakeファイルに書かれいるため、一度無効化して、LibTorchを使用しているcppファイルで再度宣言してあげる必要があります。これに気づくのにかなりの時間を要してしまいました。


PyTorch1.0の正式リリース

この記事を書いている途中にPyTorch1.0が正式リリースされました。これが12/8日のことでした。





オゥ...書きなおすか...(投稿2日前)


データセット

カルピスの画像って少ないんですね...

苦労しました。