C ++ APIを使用したGoogle Edge TPU
C ++を使用してモデルで推論を実行する場合、主に使用するので TensorFlow Lite C ++ API のある程度の経験が必要です。 追加のedgetpu.h
ファイルには、Edge TPUデバイスを指定するコンテキストオブジェクトや、TensorFlow Lite Interpreter
APIでカスタムopを登録するためのAPIなど、APIの小さなセットのみが含まれています。 (Edge TPU C ++ APIには、Python APIにあるような推論を実行するための便利なメソッドは含まれていません。)
C ++ Edge TPU APIの詳細については、edgetpu.h
ファイルを読む必要がありますが、基本的な使用には以下が必要です:
EdgeTpuContext
:これにより、Edge TPUに関連付けられたオブジェクトが作成されます。 通常、使用するEdge TPUは1つだけなので、これをEdgeTpuManager :: OpenDevice()
でインスタンス化できます。 ただし、複数のEdge TPUを使用することは可能であるため、このメソッドはオーバーロードされるため、使用するEdge TPUを指定できます。kCustomOp
andRegisterCustomOp()
:tflite :: Interpreter
がコンパイル済みモデル内でEdge TPUカスタムopを実行する方法を理解するために、これらをtflite :: BuiltinOpResolver.AddCustom()
に渡す必要があります。
一般に、記述する必要があるコードには次の要素が含まれます:
1.コンパイル済みのEdge TPUモデルをFlatBufferModel
としてロードします:
const std::string model_path = "/path/to/model_compiled_for_edgetpu.tflite";
std::unique_ptr<tflite::FlatBufferModel> model =
tflite::FlatBufferModel::BuildFromFile(model_path.c_str());
このモデルは、以下のtflite :: InterpreterBuilder()
で必要です。
2.EdgeTpuContext
オブジェクトを作成します:
std::shared_ptr<edgetpu::EdgeTpuContext> edgetpu_context =
edgetpu::EdgeTpuManager::GetSingleton()->OpenDevice();
このコンテキストは、以下のtflite :: Interpreter.SetExternalContext()
で必要です。
3.Interpreter
オブジェクトを作成するときに、Edge TPUカスタムopを指定します:
std::unique_ptr<tflite::Interpreter> model_interpreter =
BuildEdgeTpuInterpreter(*model, edgetpu_context.get());
std::unique_ptr BuildEdgeTpuInterpreter(
const tflite::FlatBufferModel& model,
edgetpu::EdgeTpuContext* edgetpu_context) {
tflite::ops::builtin::BuiltinOpResolver resolver;
resolver.AddCustom(edgetpu::kCustomOp, edgetpu::RegisterCustomOp());
std::unique_ptr interpreter;
if (tflite::InterpreterBuilder(model, resolver)(&interpreter) != kTfLiteOk) {
std::cerr << "Failed to build interpreter." << std::endl;
}
// Bind given context with interpreter.
interpreter->SetExternalContext(kTfLiteEdgeTpuContext, edgetpu_context);
interpreter->SetNumThreads(1);
if (interpreter->AllocateTensors() != kTfLiteOk) {
std::cerr << "Failed to allocate tensors." << std::endl;
}
return interpreter;
}
4.次に、インタープリター(上記のmodel_interpreter
)を使用して、tflite APIを使用して推論を実行します。 主な手順はtflite :: Interpreter :: Invoke()
を呼び出すことですが、入力を準備してから出力を解釈する必要もあります。 詳細については、[TensorFlow Liteのドキュメントを参照してください]。(https://www.tensorflow.org/lite/guide/inference)
開発ボードとアクセラレータはどちらもGoogleのEdge TPUチップを搭載しています。これは、汗をかくことなくAIモデルを実行するように設計された、あなたの指の爪ほどの大きさのASICプロセッサです。その間、カメラは開発ボードのためのアドオンとしてあります。https://store.gravitylink.com/global で贩卖を開始できます。
Author And Source
この問題について(C ++ APIを使用したGoogle Edge TPU), 我々は、より多くの情報をここで見つけました https://qiita.com/huayecai/items/dec6dd46dae6862c91ce著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .