如何使用苹果机器学习将拍摄对象从背景中提炼出来?

问题描述 投票:0回答:3

在 iOS 16 中,您可以从图像中提升主体或通过删除背景来隔离主体。

您可以在这里看到它的实际效果:https://developer.apple.com/wwdc22/101?time=1101

我想知道这个功能是否也可供开发者在自己的应用程序中使用。人们可能可以训练机器学习模型并将其与Vision框架一起使用。

这里有一个关于如何实现这一点的示例,但是Apple的解决方案已经很好了,当有捷径时我不想花时间重新发明轮子。

ios macos image-processing apple-vision
3个回答
6
投票
Apple 的

CoreML

 库和 
DeepLabV3
 图像分割模型就是您正在寻找的东西。

DeepLabV3

模型经过训练可以识别和分割这些项目:

    飞机
  • 自行车
  • 瓶子
  • 巴士
  • 汽车
  • 椅子
  • 餐桌
  • 摩托车
  • 盆栽植物
  • 沙发
  • 火车
  • 电视或显示器

VNCoreMLRequest

 是从 
CoreML
 使用的 API。它接受一个回调函数,用于获取图像的特征,即 
VNCoreMLFeatureValueObservation
 对象。

VNCoreMLFeatureValueObservation

对象给出了图片的分割图,这就是您正在寻找的。删除背景会掩盖这些片段之一。

此处有完整的、写得很好的分步指南。

该链接的主要部分如下:

// use DeepLabV3 func runVisionRequest() { guard let model = try? VNCoreMLModel(for: DeepLabV3(configuration: .init()).model) else { return } let request = VNCoreMLRequest(model: model, completionHandler: visionRequestDidComplete) request.imageCropAndScaleOption = .scaleFill DispatchQueue.global().async { let handler = VNImageRequestHandler(cgImage: inputImage.cgImage!, options: [:]) do { try handler.perform([request]) }catch { print(error) } } } // extract the segmentation map and convert to an image using a third party library func visionRequestDidComplete(request: VNRequest, error: Error?) { DispatchQueue.main.async { if let observations = request.results as? [VNCoreMLFeatureValueObservation], let segmentationmap = observations.first?.featureValue.multiArrayValue { let segmentationMask = segmentationmap.image(min: 0, max: 1) self.outputImage = segmentationMask!.resizedImage(for: self.inputImage.size)! maskInputImage() } } }
    

0
投票
您所说的分割任务属于苹果的计算机视觉(视觉框架),

在此列出

每个特定任务都列出了各种主题。


0
投票
首先,我只是想分享一下我对苹果这个功能的理解。

在Apple Developer方面,有CreateML和CoreML项目。

https://developer.apple.com/machine-learning/

您可以从这里下载训练数据。或者您可以根据细分要求创建自己的数据或更新其中之一。

这里是示例数据:

https://developer.apple.com/machine-learning/models/#text

开发者可以通过API连接到经过训练的数据(你是对的),但由于数据会非常大,大约400亿,所以建议编写一个ML项目。

还有: WWDC 示例:https://github.com/vincentspitale/SSC2022

CoreML 示例: https://blog.devgenius.io/foreground-background-separation-using-core-ml-82efbe7e7fc8

© www.soinside.com 2019 - 2024. All rights reserved.