问题正是错误所说的 - 您正在使用的模型(.pb 文件)正在使用 NonMaxSuppressionV2 操作,但在为 iOS 平台编译时未向 tensorflow 库注册。这是因为张量流限制了 iOS/Android 平台上的很多操作(尤其是那些通常只用于训练的操作),因此编译库的大小更小。
要纠正上述问题,您可以执行以下操作 - 更新此处存在的 ops_to_register.h 文件。
将"NonMaxSuppressionV2Op<CPUDevice>"
(如果要在数组中间添加,请不要忘记添加 coma)到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
...
};
而且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
...
;
修改此文件后,按照 repo 自述文件的快速启动部分中所述从头开始重新运行所有内容。
如果您仍然丢失一些其他操作。对他们重复相同的程序也将起作用。
希望有帮助。