web-dev-qa-db-ja.com

インターネットなしでローカルにアプリから特定のオブジェクト/画像検出

私の要件は、固定オブジェクトをスキャンすることです。それを認識した後、オブジェクトをハイライト表示し、それに応じて高さ、幅、円周などの対応する事前フィードパラメータを表示します。

これはすべて、インターネットなしで、カメラのみを使用して実行したいです。

このための解決策/提案があれば教えてください。

CraftAR SDKを見てきました。オブジェクトを認識するために私の要件に従って動作しているようですが、サーバーを使用して画像を保存していますが、これは望ましくありません。静止画像をアプリ自体に保存したいので。

19
Narendra Singh

TensorFlow Object Detection APIを使用してみてください。リンク: TensorFlow Object Detection API

その後、アプリ全体の動作をそれに応じてカスタマイズして、すべての要件を管理できます(たとえば、オブジェクトの後にTensoflow Object Detection APIを使用しているときに何らかのコールバックを受け取った後に検出されたオブジェクトのすべての詳細をポップアップで表示するなど)正常に検出されました)また、TensorFlowオブジェクト検出シナリオの部分は必要に応じてカスタマイズできると思います(ここでは、特にアプリでオブジェクトをグラフィカルに検出する方法の場合のUI関連部分について説明しています) 。

オフラインでどのように機能するか、APKの全体的なサイズなどの詳細について回答するには、以下のリンクからよりよく理解できます。

1] ステップごとのTensorFlowオブジェクト検出APIチュートリアル—パート1:モデルの選択

2] TensorFlowのObject Detector APIを使用して独自のObject Detectorをトレーニングする方法

概要として、オブジェクトをオフラインで検出するには、独自のデータ/オブジェクトのセットで制限する必要があります(APKのサイズを小さくするため)(検出用の固定オブジェクトがあることを述べたように、それは良いことです)。 SSD-Mobilenetモデルを使用して、このオブジェクトのセットをトレーニングする必要があります(ローカルでもクラウドでもトレーニングできます)。次に、retrained_graph.pbファイル(これはAndroidプロジェクトのアセットフォルダーに移動します)を提供するオブジェクトセットの独自のトレーニング済みモデル(簡単に言うと)になります。リアルタイムでカメラフレームを検出して分類し、提供された情報(またはデータ/オブジェクトのセット)に従って結果(またはオブジェクトの詳細)を表示するトリック(簡単な言葉で)を含む最終結果。あらゆる種類のインターネット接続たとえば、 TF Detect は、カメラプレビューでオブジェクト(80カテゴリから)をリアルタイムで追跡できます。

詳細については、次のリンクを参照してください。

1] Google Inception Model

2] Tensorflowオブジェクト検出APIモデル

3] 最新の畳み込みオブジェクト検出器の速度/精度のトレードオフ

また、retrained_graph.pbをoptimized_graph.pbに最適化(または圧縮)することもできます。これは、APKファイルのサイズを増やす唯一の主要な要素であるためです。ずっと前に、5つの異なるオブジェクトを検出しようとしたとき( TF Classify を使用)、各オブジェクトのフォルダーには約650枚の写真があり、5つのフォルダー(全体)の全体のサイズは約230 mbで、retrained_graph .pbのサイズはわずか5.5 mbでした(さらに、optimized_graph.pbに最適化してサイズをさらに削減できます)。

初心者レベルから学習を開始するには、これらのコードラボリンクを一度読んで、私もそうであったように、これら2つのプロジェクトの動作を理解することをお勧めします。

1] 詩人のTensorFlow

2] 詩人向けTensorFlow 2:モバイル向けに最適化

幸運を祈ります。

TensorFlow GitHub(マスター)への以下のリンクには、ほぼすべてが含まれています。

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/Android

14
Nitin Gurbani