遅延を改善するために、おそらくTensorFlowが提供する8ビットの量子化ツールを試すことができます。彼らにはこれを行う特別なツールがあります:グラフ変換hereを読むことができます。
例えば、これは私がAPKにそれを構築する前に、私は凍結し、モデルに何をすべきかです:
/home/kwotsin/tensorflow-android/tensorflow/bazel-bin/tensorflow/tools/graph_transforms/transform_graph \
--in_graph=./frozen_model_mobilenet.pb \
--out_graph=./quantized_model_mobilenet.pb \
--inputs='Placeholder_only' \
--outputs='MobileNet/Predictions/Softmax' \
--transforms='
add_default_attributes
strip_unused_nodes(type=float, shape="1,299,299,3")
remove_nodes(op=Identity, op=CheckNumerics)
fold_constants(ignore_errors=true)
fold_batch_norms
fold_old_batch_norms
quantize_weights
quantize_nodes
strip_unused_nodes
sort_by_execution_order'
入力サイズを変更するには、私はそれが入力サイズモデルから必要とするものに依存します推測します開始。現在のところ、私のアプリケーションでは299の画像サイズを使用しています。推論速度は非常に速く、通常は1秒未満です(もちろん、これはハードウェアにも依存しますが、LG G3で実行しました)。あなたのモデルが[None、299、299、3]という形のテンソルのバッチを取り入れたら、あなたのイメージサイズは299である必要があります。そうでなければ、ClassifierActivity.java
ファイルのイメージサイズを変更してみてください。
クラシファイアのパフォーマンスは、実行する必要のあるタスクによって異なるため、推奨される画像サイズはないと思います。たとえば、単純に色を分類する非常に単純な作業を行っている場合、私はあなたがそれを行うために非常に高解像度の画像を必要としないと思います。一方、非常によく似た外観を持つオブジェクトを分類しようとすると、画像サイズが大きくなると、分類子に多くの情報を与えるのに役立ちます。これは、モデルがどのようなトレーニングを行ったかによって異なります。
私も推論時間の問題があります。私はかなり速いが、モデルはおそらく類似している場合でも非常に遅くなる任意のカスタムモデルは、デフォルトのアプリケーションを見つける。 – JCooke