Accelerateフレームワークに追加されたり、TensorFlowのiOSサポートが追加されたり、Prismaがオフライン対応したりと、なんとなくあらかじめ学習させておいたモデルを使って計算するぐらいのことはiOSデバイス側でやらせてもいいんじゃないか、という空気感も出てきたような気がしてます。1・・・いや、そんな大層な理由ではなくて、機械学習/ディープラーニングについて無知な自分が、学習用に大量のデータを集めて、Pythonスクリプトを書いて自前モデルを作成するのは一段ハードルが高いように思えてしまいます。いうわけで、先日書いた『TensorFlowにiOSサポートが追加されたそうなので試してみた』の次のステップとして、GitHubとかに落ちている学習済みモデルを拾ってきてTensorFlow/iOSで動かすということを試してみました。いう気になる名前のリポジトリを見つけました。配下にあるsimpleサンプルで使えるようにしてみました。ソースの変更点simpleサンプルでFlowersモデルを利用するにあたってコードを書き換えた点は以下。"final_result";ちなみにもちろん、モデルファイル(.pb)、ラベルファイル(.txt)、テスト画像への参照をプロジェクトに追加する必要はあります。認識結果はこう出ました。once"の略みたいです。データセットに対して物体認識を行う手法で、20種類(クラス)のオブジェクトを分類可能だそうです。tv/monitorで、この学習済みモデルが公開されていて、それをTensorFlowで使えるようにした人がいて、それをさらに別の人がiOSで使えるようにしたのが下記リポジトリ。配下にあるcameraサンプルで使えるようにした、というのがこのリポジトリです。iOSで動くサンプルが用意されてるのでここでは利用方法については書きませんが、使ってみたところ、メモリの使用量がエグいです。Plusでのみ動作します。3ちゃんとREADMEにもその旨が書いてあります。model.実行結果Google画像検索で適当に牛とか馬とか犬とか猫を表示してモニタにカメラをかざしてリアルタイム認識させてみました。ファイルごとGitHubにアップされていました。5ちゃんと動いてそうです。TensorSwift本記事のタイトルを見て、koherさんのこの記事を思い浮かべた方も多いかもしれません。Qiitaやりたいことは同じなのですが、上記記事は、TensorFlowのiOSサポートの入った0.9.0がリリースされるよりも前に書かれた記事であり、iOS側ではTensorFlowを使っていない、というのが大きく違う点です。いう独自ライブラリでテンソルの計算を行う、というものです。本家TensorFlow(のiOSサポート版)を用いることと比較して、TensorSwiftのアプローチは以下の点がメリットかと思います。Swiftで書かれている軽量であるBLAS(Accelerate.frameworkに入っている線形代数ライブラリ)を利用した高速化がなされている逆に、以下の点はデメリットになりそうです。ファイルを読み込めればいいのですが今のところそのような機能はありません。今回は基本的に「iOSで使えますよ」と明示して公開されている学習済みモデルを利用させていただいたわけですが、実は結構ググったりGitHub検索したにもかかわらず、そういうものはなかなか見つかりませんでした。フォーマットの違う(っぽい)TensorFlow用モデルが公開されている学習済みモデルは置いていないが、学習データと学習スクリプトが公開されているというケースは多々あったので、もうちょっとちゃんとモデルについて理解して、自分でiOSでも利用可能な形で書き出すなり、学習させるなりすることができれば、できることも広がりそうです。iOSで使えるモデルを作成する」ということを色々参照しつつやってみたいと思っています。モデルをどのように利用しているか、コードを追ってみて記事を書きました。Qiita全部サーバー側で計算してると、ユーザーが増えればそれだけサーバー負荷も上がりますし。↩モデルの種類を増やしていって欲しいところですが、モデルファイルは一般的にサイズが大きく、GitHubでその他ソースを公開しているプロジェクトでも、モデルファイルは別のところに置いてあって別途ダウンロードするようになっているケースも多いので、今後もそんなに集まることは期待できないかもしれませんね。6でも試してみましたが、メモリが足りず実行時に100%クラッシュしました。upLoginユーザーは見つかりませんでした。