如何使用 CoreML 处理来自相机的非方形帧?
Posted
技术标签:
【中文标题】如何使用 CoreML 处理来自相机的非方形帧?【英文标题】:How to process non-square frames from camera with CoreML? 【发布时间】:2019-06-30 18:21:28 【问题描述】:我在 Keras 中训练了一个神经网络来检测图像上的关键点。网络需要形状 (224, 224, 3) 的图像。我希望能够使用 CoreML 在 Swift 中检测图像上的关键点,但不确定如何在需要方形图像的神经网络中使用非方形形状。关于适当的预处理步骤的任何想法? Vision API 中是否内置了一些东西来帮助解决这个问题?我可以将图像压缩成正方形,但我想这会与预测的 (X,y) 关键点对混淆。
【问题讨论】:
【参考方案1】:这取决于。原始模型是如何训练的?如果它还接受了压缩图像的训练,那么在推理过程中压缩它们就可以了。
如果不是,并且您想保留图像的纵横比,您可能需要将VNCoreMLRequest
对象中的imageCropAndScaleOption
设置为其他模式之一。
无论如何,您都必须将预测的关键点坐标转换回您正在显示图像的任何尺寸。当图像被压扁时这是最简单的(只需乘以宽度和高度),但在使用时会有点棘手其他imageCropAndScaleOption
s。
【讨论】:
谢谢,马蒂斯。该网络在裁剪图像上进行了训练,因此听起来我将不得不使用 imageCropAndScaleOption。有什么方法可以在模型处理裁剪的图像之前查看它,以便我可以对关键点的缩放过程进行逆向工程? 您可以创建一个简单的 Core ML 模型,它只输出输入图像。这让您可以看到不同imageCropAndScaleOption
设置和任何其他预处理选项的效果。这是一个执行此操作的示例项目(来自我的 Core ML 书):github.com/hollance/coreml-survival-guide/tree/master/…
非常聪明。谢谢!以上是关于如何使用 CoreML 处理来自相机的非方形帧?的主要内容,如果未能解决你的问题,请参考以下文章