Swift:处理 UIImage 数据以用于 Firebase 自定义 TFLite 模型
Posted
技术标签:
【中文标题】Swift:处理 UIImage 数据以用于 Firebase 自定义 TFLite 模型【英文标题】:Swift: Process UIImage data for use in Firebase custom TFLite model 【发布时间】:2018-06-16 22:35:12 【问题描述】:我正在使用 Swift、Firebase 和 Tensorflow 构建图像识别模型。我有一个重新训练过的 MobileNet 模型,该模型将 [1,224,224,3] 的输入数组复制到我的 Xcode 包中,当我尝试从图像中添加数据作为输入时,我收到错误:Input 0 should have 602112 bytes, but found 627941 bytes.
我正在使用以下代码:
let input = ModelInputs()
do
let newImage = image.resizeTo(size: CGSize(width: 224, height: 224))
let data = UIImagePNGRepresentation(newImage)
// Store input data in `data`
// ...
try input.addInput(data)
// Repeat as necessary for each input index
catch let error as NSError
print("Failed to add input: \(error.localizedDescription)")
interpreter.run(inputs: input, options: ioOptions) outputs, error in
guard error == nil, let outputs = outputs else
print(error!.localizedDescription)//ERROR BEING CALLED HERE
return
// Process outputs
print(outputs)
// ...
如何将图像数据重新处理为 602112 字节?如果有人可以帮助我,我会很困惑,那就太好了:)
【问题讨论】:
您在使用 Firebase ML 套件吗? @PannagSanketi 是的,我是。我在任何地方都找不到用于格式化输入数据以匹配 Swift 中的 MobileNet 规范的指南。只有 Obj-C 嘿@Ellek,链接由于某种原因被破坏了。你设法让它工作了吗? 【参考方案1】:请查看 Swift 中的 Quick Start ios 演示应用,了解如何使用自定义 TFLite 模型:
https://github.com/firebase/quickstart-ios/tree/master/mlmodelinterpreter
特别是,我认为这是您正在寻找的:
https://github.com/firebase/quickstart-ios/blob/master/mlmodelinterpreter/MLModelInterpreterExample/UIImage%2BTFLite.swift#L47
祝你好运!
【讨论】:
第一个链接有一个额外的 %20。请改用此链接:github.com/firebase/quickstart-ios/tree/master/… 非常感谢!这正是我所需要的。你救了我几个星期的挫败感,哈哈以上是关于Swift:处理 UIImage 数据以用于 Firebase 自定义 TFLite 模型的主要内容,如果未能解决你的问题,请参考以下文章
Swift 从两个 UIImage 并排生成单个 UIImage
Swift - UITableView 没有放置 UIimage=nil
swift 用于base64转换的Swift UIImage扩展