CoreML错误:导入mymodel.mlmodel

时间:2019-01-30 12:06:59

标签: ios objective-c xcode coreml

使用CoreML模型构建ios应用时遇到问题。 我使用this示例代码在我的项目中实现coreML。 在仓库中使用给定模型从github克隆示例代码时,我可以运行该示例代码,但是当我粘贴自己的模型时,我得到一个错误:

lexical preprocessor issue
    source file is not valid UTF-8
        SSD_model.mlmodel

我的模型是用于生成边界框的SSD模型(而不仅仅是像回购模型那样的对象检测),因此可能会引起问题。我使用tensorflow对象检测API对其进行了训练,并使用this helpful blog post将其导出到coreML。我已通过在针对SSD型号制作的another script中对其进行测试来验证我的模型是否运作良好。这是我现在如何导入模型的第一个示例的片段:

#import <CoreML/CoreML.h>
#import <Vision/Vision.h>
#import "SSD_model.mlmodel"

- (void)viewDidLoad {
    [super viewDidLoad];

    model = [[[SSD_model alloc] init] model]
    m = [VNCoreMLModel modelForMLModel: model error:nil];

我需要更改此目标C代码以使其起作用吗?还是我可能会忘记的任何项目设置?谢谢!

1 个答案:

答案 0 :(得分:2)

您收到此错误是因为=> #import "SSD_model.mlmodel"

本质上,编译器尝试导入一些源代码,而发现不是的源代码。

您需要先编译此模型才能使用它。您可以通过Xcode(它将为您自动生成接口)或使用在运行时编译模型的APIs对其进行编译(因此您可以更新模型而无需发布新版本的应用)。


注意:在您链接的示例中,作者导入了SomeModel.h(我想是ObjC的自动生成标头)和 not {{1 }}。所以我想这也是您可能想要做的。