将对象检测模型嵌入 iOS 应用程序,并将其部署在 UIView 的内容而不是相机流上?
Posted
技术标签:
【中文标题】将对象检测模型嵌入 iOS 应用程序,并将其部署在 UIView 的内容而不是相机流上?【英文标题】:Embedding an object detection model into iOS app, and deploy it on a UIView's content instead of camera stream? 【发布时间】:2019-06-13 09:04:48 【问题描述】:我已经在我的自定义类上通过 tensorflow 对象检测 API 重新训练了 ssd_mobilenet_v2。我现在有一个 frozen_inference_graph.pb 文件,可以嵌入到我的应用程序中。 tutorials on tensorflow's github 和网站仅显示如何将其用于 ios 内置摄像头流。相反,我有一个用于 iPhone 的外部摄像头,它可以流式传输到 UIView 组件。我希望我的网络能够检测到其中的对象,但我的研究并没有指向任何明显的实现/教程。
我的问题:有人知道这是否可能吗?如果是这样,实现这样的事情的最佳方法是什么?张量流精简版?张量流手机?核心机器学习?金属?
谢谢!
【问题讨论】:
【参考方案1】:在该 TensorFlow 源代码中,文件 CameraExampleViewController.mm 中有一个方法 runCNNOnFrame
,它将 CVPixelBuffer
对象作为输入(来自相机)并将其内容复制到 image_tensor_mapped.data()
.然后它在 image_tensor
对象上运行 TF 图。
要使用不同的图像源,例如 UIView
的内容,您需要先将该视图的内容读入某种内存缓冲区(通常是 CGImage
),然后将该内存缓冲区复制到image_tensor_mapped.data()
.
将 TF 模型转换为 Core ML(如果可能)可能更容易,然后使用 Vision 框架运行模型,因为它可以直接使用 CGImage
作为输入。这使您不必先将该图像转换为张量。
【讨论】:
以上是关于将对象检测模型嵌入 iOS 应用程序,并将其部署在 UIView 的内容而不是相机流上?的主要内容,如果未能解决你的问题,请参考以下文章
如何将使用 Mask Rcnn 在自定义对象检测上创建蒙版图像的 Keras 模型转换为 CoreML 模型以在 iOS 应用程序中使用?