これは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日前)[v1.0] : JIT Compiler, Faster Distributed, C++ Frontend, CUDA10
— PyTorch (@PyTorch) 2018年12月7日
Read more about the changes at https://t.co/Xfrad06NZO
As always, get the install commands on https://t.co/DeaBDSRxs8
###データセット
カルピスの画像って少ないんですね...
苦労しました。