iOS利用CoreML运用小型深度神经网络架构对图像举行解析 ...

打印 上一主题 下一主题

主题 796|帖子 796|积分 2388


查找一个图片选择器

我用的是ImagePicker
项目有点老了,须要做一些改造,下面是新的仓库
  1. platform :ios, '16.0'
  2. use_frameworks!
  3. target 'learnings' do
  4.   source 'https://github.com/CocoaPods/Specs.git'
  5.   pod 'ImagePicker', :git => 'https://github.com/KevinSnoopy/ImagePicker.git'
  6.   
  7. end
复制代码
接下来就是利用图片选择器输出图片了

  1.     func wrapperDidPress(_ imagePicker: ImagePicker.ImagePickerController, images: [UIImage]) {
  2.         
  3.     }
  4.    
  5.     func doneButtonDidPress(_ imagePicker: ImagePicker.ImagePickerController, images: [UIImage]) {
  6.         if !images.isEmpty, let _ = images.first {
  7.             /**
  8.              在这里输出图片,可以调用模型进行解析
  9.              */
  10.         }
  11.     }
  12.    
  13.     func cancelButtonDidPress(_ imagePicker: ImagePicker.ImagePickerController) {
  14.         imagePicker.dismiss(animated: true)
  15.     }
复制代码
当前我利用了几个公开的模型

FCRN:

  1. /**
  2.      深度估计
  3.      根据一幅图像来预测深度。
  4.      */
  5.     func fcrnDepthPrediction(image: UIImage?) {
  6.         let config = MLModelConfiguration()
  7.         config.computeUnits = .all
  8.         if let img = image?.cgImage, let fcrn = try? FCRN(contentsOf: FCRN.urlOfModelInThisBundle, configuration: config) {
  9.             if let input = try? FCRNInput(imageWith: img), let output = try? fcrn.prediction(input: input) {
  10.                 print(output.depthmapShapedArray)
  11.             }
  12.         }
  13.     }
复制代码
MNISTClassifier:

  1. /**
  2.      涂鸦分类
  3.      对单个手写数字进行分类 (支持数字 0-9)。
  4.      */
  5.     func mnistClassifier(image: UIImage?) {
  6.         if let img = image?.cgImage, let mnist = try? MNISTClassifier(contentsOf: MNISTClassifier.urlOfModelInThisBundle, configuration: MLModelConfiguration()) {
  7.             if let input = try? MNISTClassifierInput(imageWith: img), let output = try? mnist.prediction(input: input) {
  8.                 print(output.classLabel)
  9.                 print(output.labelProbabilities)
  10.             }
  11.         }
  12.     }
复制代码
UpdatableDrawingClassifier:

  1. /**
  2.      涂鸦分类
  3.      基于 K-最近邻算法(KNN)模型来学习识别新涂鸦的涂鸦分类器。
  4.      */
  5.     func updatableDrawingClassifier(image: UIImage?) {
  6.         if let img = image?.cgImage, let updatable = try? UpdatableDrawingClassifier(contentsOf: UpdatableDrawingClassifier.urlOfModelInThisBundle, configuration: MLModelConfiguration()) {
  7.             if let input = try? UpdatableDrawingClassifierInput(drawingWith: img), let output = try? updatable.prediction(input: input) {
  8.                 print(output.label)
  9.                 print(output.labelProbs)
  10.             }
  11.         }
  12.     }
复制代码
MobileNetV2:

  1. /**
  2.      图像分类
  3.      MobileNetv2 架构经过训练,可对相机取景框内或图像中的主要对象进行分类。
  4.      */
  5.     func mobileNetV2(image: UIImage?) {
  6.         if let img = image?.cgImage, let netv2 = try? MobileNetV2(contentsOf: MobileNetV2.urlOfModelInThisBundle, configuration: MLModelConfiguration()) {
  7.             if let input = try? MobileNetV2Input(imageWith: img), let output = try? netv2.prediction(input: input) {
  8.                 print(output.classLabel)
  9.                 print(output.classLabelProbs)
  10.             }
  11.         }
  12.     }
复制代码
Resnet50:

  1. /**
  2.      图像分类
  3.      一种残差神经网络,它能对相机取景框内或图像中的主要对象进行分类。
  4.      */
  5.     func resnet50(image: UIImage?) {
  6.         if let img = image?.cgImage, let resnet = try? Resnet50(contentsOf: Resnet50.urlOfModelInThisBundle, configuration: MLModelConfiguration()) {
  7.             if let input = try? Resnet50Input(imageWith: img), let output = try? resnet.prediction(input: input) {
  8.                 print(output.classLabel)
  9.                 print(output.classLabelProbs)
  10.             }
  11.         }
  12.     }
复制代码
SqueezeNet:

  1. /**
  2.      图像分类
  3.      一种小型深度神经网络架构,它能对相机取景框内或图像中的主要对象进行分类。
  4.      */
  5.     func squeezeNet(image: UIImage?) {
  6.         if let img = image?.cgImage, let net = try? SqueezeNet(contentsOf: SqueezeNet.urlOfModelInThisBundle, configuration: MLModelConfiguration()) {
  7.             if let input = try? SqueezeNetInput(imageWith: img), let output = try? net.prediction(input: input) {
  8.                 print(output.classLabel)
  9.                 print(output.classLabelProbs)
  10.             }
  11.         }
  12.     }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王海鱼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表