CoreML Vision 人脸检测的输入图像尺寸要求是啥
Posted
技术标签:
【中文标题】CoreML Vision 人脸检测的输入图像尺寸要求是啥【英文标题】:What are the input image size requirements for CoreML Vision face detectionCoreML Vision 人脸检测的输入图像尺寸要求是什么 【发布时间】:2020-01-18 04:25:01 【问题描述】:我正在使用 Vision 框架来检测图像中的人脸。我在 Apple 的文档中找不到输入图像的要求。通常在使用机器学习模型时,尤其是在 CoreML 中使用 .mlmodel 时,它描述了所需的输入。例如Image (Color 112 x 112)
。
let image: UIImage = someUIImage()
let handler = VNImageRequestHandler(ciImage: CIImage(cgImage: (image?.cgImage)!))
let faceRequest = VNDetectFaceLandmarksRequest(completionHandler: (request: VNRequest, error: Error?) in
guard let observations = request.results as? [VNFaceObservation]
else
print("unexpected result type from VNFaceObservation")
return
self.doSomething(with observations: observations)
)
do
try handler.perform([faceRequest])
catch
print("Face detection failed: \(error)")
【问题讨论】:
【参考方案1】:没关系,Vision 会自动处理这个问题。 (它可能会或可能不会在后台使用机器学习模型。)
您确实需要确保整个面部/头部在图像中可见,否则面部检测器将无法正常工作。
它也可能不适用于非常小的图像,但我从未尝试过。
【讨论】:
我正在从相机胶卷中获取图像。我猜它不适用于缓存 32x32 中最小的可用图像,另一方面也不需要全尺寸图像。如果他们提到建议的或最小的尺寸,我会知道要拿什么。现在我只是猜测。 我在相机的 1080x1920 图像上使用它没有问题。我确信 Vision 会在内部将图像大小调整为它喜欢的任何大小。 如果要处理相机胶卷中的所有照片(10k 张照片),这一点至关重要。我使用.fasFormat
交付模式获取 224x224。我正在退化 90x120,这是 VNRequest 的输入,效果很好。但这是一种猜测
我想你可以设置一个断点,然后使用调试器来逐步执行 Vision 正在执行的操作。 ;-) 肯定会在某处致电vImageScale_xxx()
。
我读过他们的论文,描述了他们在做什么。在第一层中使用 convulution 意味着您可以提供任何输入大小。也许这是一种新概念,即输入越好,输出就越好(发生)。而不是通常如何在固定输入大小上训练模型以上是关于CoreML Vision 人脸检测的输入图像尺寸要求是啥的主要内容,如果未能解决你的问题,请参考以下文章
使用“android-vision”库保存实时检测到的人脸(跟踪人脸)图像
使用 Vision 和 AVFoundation 框架从实时摄像头(而非静态图像)进行实时人脸检测
Apple Vision Framework:通过观察检测微笑或幸福的面孔?