簡體   English   中英

iOS應用中的Tensorflow對象檢測開發-nonmaxsuppressionV2

[英]Tensorflow Object detection development in IOS app - nonmaxsuppressionV2

我正在嘗試使用ssd_mobilenet_v1_coco模型檢測對象。 我自己訓練有素的模型文件.pb文件用於檢測。 成功構建后,單擊運行按鈕,我得到以下錯誤。

 "Not found: Op type not registered 'NonMaxSuppressionV2' in binary running on IPhone. Make sure the Op and Kernel are registered in the binary running in this process. "

我可以在下面的鏈接中為已訓練的.pb模型文件執行並啟動ios應用。 請提供解決上述問題並啟動ios應用的解決方案。 https://github.com/JieHe96/iOS_Tensorflow_ObjectDetection_Example

問題恰恰是錯誤所指出的-您正在使用的模型(.pb文件)正在使用操作NonMaxSuppressionV2,但在為iOS平台進行編譯時未向tensorflow庫注冊。 這是因為張量流限制了iOS / Android平台上的許多操作(尤其是通常只需要訓練的操作),從而使編譯庫的大小較小。

要糾正上述問題,您可以執行以下操作-更新此處當前存在的文件ops_to_register.h文件。

kNecessaryOpKernelClasses數組添加"NonMaxSuppressionV2Op<CPUDevice>" (如果要在數組中間添加,請不要忘記添加kNecessaryOpKernelClasses )。 像這樣 -

constexpr const char* kNecessaryOpKernelClasses[] = { 
"BinaryOp< CPUDevice, functor::add<float>>",
"BinaryOp< CPUDevice, functor::add<int32>>",
"AddNOp< CPUDevice, float>",
"NonMaxSuppressionOp<CPUDevice>",
//Added NonMaxSuppressionV2Op
"NonMaxSuppressionV2Op<CPUDevice>",
...
//Other operations
...
};

還有constexpr inline bool ShouldRegisterOp(const char op[]) isequal(op, "NonMaxSuppressionV2") constexpr inline bool ShouldRegisterOp(const char op[])

像這樣 -

constexpr inline bool ShouldRegisterOp(const char op[]) {
  return false
     || isequal(op, "Add")
     || isequal(op, "NoOp")
     || isequal(op, "NonMaxSuppression")
     //Added NonMaxSuppressionV2
     || isequal(op, "NonMaxSuppressionV2")
     || isequal(op, "Pack")
     //other stuff
     ...
  ;

修改此文件后,請按照回購自述文件的快速入門部分所述從頭開始運行所有內容。

如果您仍然丟失其他操作。 對他們重復相同的步驟也可以。

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM