从 Hugging Face 等 开源社区下载的 大语言模型 你可以在我们的设备上 运行各种模型 包括 Whisper、Stable Diffusion 和 Mistral 只需完成几个步骤 即可在你的 App 中运行模型,比如在苹果官网上下载DeepLabV3.mlmodel

下载 DeepLabV3.mlmodel

image.png

image.png

image.png

从相册获取图片

Resize图片大小

为什么要Resize

image.png

怎么Resize

下载https://github.com/hollance/CoreMLHelpers

@nonobjc public func resized(to newSize: CGSize, scale: CGFloat = 1) -> UIImage {
    let format = UIGraphicsImageRendererFormat.default()
    format.scale = scale
    let renderer = UIGraphicsImageRenderer(size: newSize, format: format)
    let image = renderer.image { _ in
      draw(in: CGRect(origin: .zero, size: newSize))
    }
    return image
  }
  
let resizedImage = resized(to: CGSize(width: height, height: height), scale: 1)  

返回没有背景的图片

// CoreMLHelpers -> UIImage+CVPixelBuffer.swift
guard let pixelBuffer = resizedImage.pixelBuffer(width: Int(width), height: Int(height)),
let outputPredictionImage = try? model.prediction(image: pixelBuffer),
// CoreMLHelpers -> MLMultiArray+Image
let outputImage = outputPredictionImage.semanticPredictions.image(min: 0, max: 1, axes: (0, 0, 1)),
let outputCIImage = CIImage(image: outputImage),
// CIImage extension helper method
let maskImage = outputCIImage.removeWhitePixels(),
let resizedCIImage = CIImage(image: resizedImage),
// (Optional) Blur image a bit if you want to avoid sharpness
let maskBlurImage = maskImage.applyBlurEffect() else { return nil }

// After we get a final background image we are going to use it as a mask for composing with the resized image.
guard let compositedImage = resizedCIImage.composite(with: maskBlurImage) else { return nil }
return UIImage(ciImage: compositedImage)
    .resized(to: CGSize(width: size.width, height: size.height))

image.png

Refer