Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS MachineLearning 系列(22)——将其他三方模型转换成CoreML模型

iOS MachineLearning 系列(22)——将其他三方模型转换成CoreML模型

作者头像
珲少
发布于 2023-07-27 12:36:18
发布于 2023-07-27 12:36:18
84900
代码可运行
举报
文章被收录于专栏:一“技”之长一“技”之长
运行总次数:0
代码可运行

iOS MachineLearning 系列(22)——将其他三方模型转换成CoreML模型

本篇文章将是本系列文章的最后一篇。本专题将iOS中有关Machine Learning的相关内容做了整体梳理。下面是专题中的其他文章地址,希望如果你有需要,本专题可以帮助到你。

专题中,从iOS中Machine Learning相关的API开始介绍,后续扩展到如何使用模型进行预测,如何自定义的训练模型。其实CoreML框架只是Machine Learning领域内的一个框架而已,市面上还有许多流行的用来训练模型的框架。如TensorFlow,PyTorch,LibSVM等。在iOS平台中直接使用这些框架训练完成的模型是比较困难的,但是Core ML Tools提供了一些工具可以方便的将这些模型转换成CoreML模型进行使用,大大降低了模型的训练成本。

此工具官网:

https://coremltools.readme.io/docs

首先需要有安装Python运行环境,从Core ML Tools4.1版本开始将不再支持Python2,因此建议直接使用Python3。安装Python会默认安装pip工具,使用如下命令来安装Core ML Tools:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install coremltools

coremltools模块并不包含三方库(如TensorFlow),因此安装会比加快。

要使用三方的模型,需要做如下几步操作:

  1. 下载三方模型。
  2. 将三方模型转换为CoreML格式。
  3. 设置CoreML模型的元数据。
  4. 进行测试验证。
  5. 存储模型,之后在Xcode中进行使用即可。

其中最核心的是模型的转换和元数据的写入。

以TensorFlow的MobileNetV2模型为例,我们下面尝试将其转换成CoreML模型。要转换TensorFlow格式的模型,首先需要安装对应的框架,使用pip来安装如下依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install tensorflow h5py pillow

第一步,下载三方模型,使用tensorflow框架提供的API可以将模型加载的到内存中去,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tensorflow as tf 

keras_model = tf.keras.applications.MobileNetV2(
    weights="imagenet", 
    input_shape=(224, 224, 3,),
    classes=1000,
)

其中applications.MobileNetV2是tensorflow框架中提供好的API,在此文档中可以查看这个API的更多用法:

https://www.tensorflow.org/api_docs/python/tf/keras/applications/mobilenet_v2/MobileNetV2

同时我们还需要下载一个索引文件,此文件定义了模型所能预测的标签数据,Python代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import urllib
# 模型对应的索引文件地址
label_url = 'https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt'
class_labels = urllib.request.urlopen(label_url).read().splitlines()
class_labels = class_labels[1:]
assert len(class_labels) == 1000
for i, label in enumerate(class_labels):
  if isinstance(label, bytes):
    class_labels[i] = label.decode("utf8")

下面进行模型的转换,直接使用coremltools模块提供的API即可,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import coremltools as ct

# 定义输入
image_input = ct.ImageType(shape=(1, 224, 224, 3,),
                           bias=[-1,-1,-1], scale=1/127)

# 设置可预测的标签
classifier_config = ct.ClassifierConfig(class_labels)

# 进行模型转换
model = ct.convert(
    keras_model, 
    inputs=[image_input], 
    classifier_config=classifier_config,
)

这一步做完成,实际上已经完整了核心的转换部分,我们还需要为model实例追加一些元数据,你应该还记得,将CoreML模型引入Xcode工程后,可以在Xcode中看到模型的简介和使用方法等信息,这些信息就是通过追加元数据写入的。上面实例代码中,默认将其转换成neuralnetwork(神经网络)模式的模型,转换模型时我们也可以选择了添加conver_to参数为mlprogram,这表示将模型转换成CoreML程序模式的。

写入元数据实例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 写入元数据
model.input_description["input_1"] = "输入要分类的图片"
model.output_description["classLabel"] = "最可靠的结果"

# 模型作者
model.author = "TensorFlow转换"

# 许可
model.license = "Please see https://github.com/tensorflow/tensorflow for license information, and https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet for the original source of the model."

# 描述
model.short_description = "图片识别模型"

# 版本号
model.version = "1.0"

最后,就可以进行模型的导出了,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 存储模型
model.save("MobileNetV2.mlmodel")

需要注意,此时导出的模型格式,与前面转换成设置的模型类型有关,转换为mlprogram模式的模型需要导出mlpackage格式的,转换为neuralnetwork的模型需要导出为mlmodel格式的。

完整的Python文件代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tensorflow as tf 
# 加载模型
keras_model = tf.keras.applications.MobileNetV2(
    weights="imagenet", 
    input_shape=(224, 224, 3,),
    classes=1000,
)


import urllib
# 模型对应的索引文件地址
label_url = 'https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt'
class_labels = urllib.request.urlopen(label_url).read().splitlines()
class_labels = class_labels[1:]
assert len(class_labels) == 1000
for i, label in enumerate(class_labels):
  if isinstance(label, bytes):
    class_labels[i] = label.decode("utf8")


import coremltools as ct

# 定义输入
image_input = ct.ImageType(shape=(1, 224, 224, 3,),
                           bias=[-1,-1,-1], scale=1/127)

# 设置可预测的标签
classifier_config = ct.ClassifierConfig(class_labels)

# 进行模型转换
model = ct.convert(
    keras_model, 
    inputs=[image_input], 
    classifier_config=classifier_config,
)

# 写入元数据
model.input_description["input_1"] = "输入要分类的图片"
model.output_description["classLabel"] = "最可靠的结果"

# 模型作者
model.author = "TensorFlow转换"

# 许可
model.license = "Please see https://github.com/tensorflow/tensorflow for license information, and https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet for the original source of the model."

# 描述
model.short_description = "图片识别模型"

# 版本号
model.version = "1.0"

# 存储模型
model.save("XMobileNetV2.mlmodel")

运行此Python脚本,如果没有报错,则会在当前脚本的同级目录下生成模型文件,下面我们可以将此模型文件引入到Xcode中,如下:

下面可以尝试下此模型的预测效果,如下:

可以看到,将三方模型转成成CoreML模型非常简单,同理对于PyTroch,LibSVM等模型也类似,安装对应的三方模块,读取模型后进行转换即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CoreML尝鲜:将自己训练的 caffe 模型移植到 IOS 上
本文介绍了如何使用Core ML在iOS平台上进行模型前向推理,并使用UIImage进行加载和输入,支持多线程和GPU加速。同时,还针对SqueezeNet进行了实例演示。
姜媚
2017/10/16
3.6K0
CoreML尝鲜:将自己训练的 caffe 模型移植到 IOS 上
2020 年,苹果的 AI 还有创新吗?
2020 年,移动设备上的机器学习将不再是什么热门的新事物。在移动应用中添加某种智能已经成为一种标准做法。
深度学习与Python
2020/08/07
1.2K0
人工智能的 "hello world":在 iOS 实现 MNIST 数学识别MNIST: http://yann.lecun.com/exdb/mnist/ 目标步骤
图片发自简书App MNIST: http://yann.lecun.com/exdb/mnist/ MNIST机器学习入门:http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html iOS MNIST: https://academy.realm.io/posts/brett-koonce-cnns-swift-metal-swift-language-user-group-2017/ 如果你是机器学习领域的新手, 我们推荐你从这里开始,通
iOSDevLog
2018/05/17
1.9K0
深度学习图像识别项目(下):如何将训练好的Kreas模型布置到手机中
今天,我们将这种经过训练的Keras模型部署到iPhone手机或者说iOS的APP中,在这里我们使用CoreML,这 是一种易于使用的Apple应用程序机器的学习框架。
AiTechYun
2018/07/27
5.6K0
深度学习图像识别项目(下):如何将训练好的Kreas模型布置到手机中
Core ML Tools初学者指南:如何将Caffe模型转换为Core ML格式
欢迎来到Core ML教程系列的第二部分。在本教程中,将学习如何设置Python虚拟环境,获取不在Core ML格式裡的数据模型,并将该模型转换为Core ML格式,最后将其集成到应用程式中。强烈建议
iOSDevLog
2018/06/21
1.8K0
Core ML简介及实时目标检测及Caffe TensorFlow coremltools模型转换
Core ML简介及实时目标检测,Caffe、Tensorflow与Core ML模型转换、Vision库的使用 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本篇文章首先会简要介绍iOS 11推出的Core ML机器学习框架,接着会以实际的已经训练好的Caffe、Tensorflow模型为例,讲解coremltools转换工具的使用,以及如何在iOS端运行相关模型。 当今是人工智能元年,随着深度学习的火热,人工智能又一次出现在大众视野中,
WWWWDotPNG
2018/04/10
3.2K0
Core ML简介及实时目标检测及Caffe TensorFlow coremltools模型转换
TensorFlow 智能移动项目:11~12
在前九章中,我们使用 TensorFlow Mobile 在移动设备上运行各种由 TensorFlow 和 Keras 构建的强大的深度学习模型。 正如我们在第 1 章,“移动 TensorFlow 入门”中提到的那样,Google 还提供了 TensorFlow Lite(可替代 TensorFlow Mobile 的版本)在移动设备上运行模型。 尽管自 Google I/O 2018 起它仍在开发人员预览中,但 Google 打算“大大简化开发人员针对小型设备的模型定位的体验。” 因此,值得详细研究 TensorFlow Lite 并为未来做好准备。
ApacheCN_飞龙
2023/04/24
4.5K0
TensorFlow 智能移动项目:11~12
手把手 | 如何在你的iPhone上建立第一个机器学习模型(Apple最新CoreML框架入门)
大数据文摘作品 作者:MOHD SANAD ZAKI RIZVI 编译:Happen,Chloe,笪洁琼,魏子敏 引言 作为一名数据科学家,我一直有一个梦想——顶级科技公司在与我相关的领域不断推出新产品。 如果你观看了Apple公司最新的iPhone X发布会,你会发现iPhone X具有非常酷的特性,比如FaceID、动态表情、增强现实,这些特性都使用了机器学习。作为一名骇客,我决定亲自上手探索一下如何建立那样的系统。 进一步调查后我发现了一个很有趣的工具,那就是Apple官方面向开发者推出的机器学习框
大数据文摘
2018/05/24
2.7K2
YOLOV5 v6.1更新 | TensorRT+TPU+OpenVINO+TFJS+TFLite等平台一键导出和部署
yolov5 release 6.1版本增加了TensorRT、Edge TPU和OpenVINO的支持,并提供了新的默认单周期线性LR调度器,以128批处理大小的再训练模型。YOLOv5现在正式支持11种不同的权重,不仅可以直接导出,还可以用于推理(detect.py和PyTorch Hub),以及在导出后对mAP配置文件和速度结果进行验证。
集智书童公众号
2022/04/07
1.4K0
YOLOV5 v6.1更新 | TensorRT+TPU+OpenVINO+TFJS+TFLite等平台一键导出和部署
iOS 图片风格转换(CoreML)
前言 图片风格转换最早进入人们的视野,估计就是Prisma这款来自俄罗斯的网红App。他利用神经网络(多层卷积神经网络)将图片转换成为特定风格艺术照片。利用图片风格转换算法,我们可以将一个图片放入以及
用户1332428
2018/03/08
2K0
iOS 图片风格转换(CoreML)
【实践操作】 在iOS11中使用Core ML 和TensorFlow对手势进行智能识别
在计算机科学中,手势识别是通过数学算法来识别人类手势的一个议题。用户可以使用简单的手势来控制或与设备交互,让计算机理解人类的行为。 这篇文章将带领你实现在你自己的应用中使用深度学习来识别复杂的手势,比
AiTechYun
2018/03/05
2.8K0
【实践操作】 在iOS11中使用Core ML 和TensorFlow对手势进行智能识别
实战 | 手把手教你用苹果CoreML实现iPhone的目标识别
在WWDC 2017上,苹果首次公布了机器学习方面的动作。iOS系统早已支持Machine Learning 和 Computer Vision ,但这次苹果提供了更合理,容易上手的API,让那些对基础理论知识一窍不通的门外汉也能玩转高大上的前沿科技。 这篇文章介绍了通过苹果最新的API把YOLO模型集成到APP中的两种方法。此前,AI100(rgznai100)介绍过YOLO这个项目,它是一个用于摄像头的实时目标检测系统,详情请参阅:《YOLO一眼就能认出你:看一个神经网络如何全视野实时检测目标》
AI科技大本营
2018/04/26
4.8K0
实战 | 手把手教你用苹果CoreML实现iPhone的目标识别
深度学习及AR在移动端打车场景下的应用
作为美团点评技术团队的传统节目,每年两次的Hackathon已经举办多年,产出很多富于创意的产品和专利,成为工程师文化的重要组成部分。本文就是2017年冬季Hackathon 4.0一个获奖项目的实践总结。 前言 2017年在移动端直接应用AI算法成为一种主流方向。Apple也在WWDC 2017上重磅推出Core ML框架。准备Hackathon的过程中,我们就想能否基于Core ML的深度学习能力,结合AR,做酷一点的产品。我们观察到在晚上下班时间,是公司的打车高峰时段,这时候经常会有一堆车在黑暗中打
美团技术团队
2018/03/13
1.6K0
深度学习及AR在移动端打车场景下的应用
【实践操作】在iPhone上创建你的第一个机器学习模型
最近的苹果iPhone X发布会,你会看到iPhone X有一些很酷的功能,比如FaceID,Animoji和AR。我们需要弄明白建立这样一个系统需要什么。 当进一步研究时,得到的答案是苹果的官方机器学习工具CoreML。它适用于iPhone、Macbook、Apple TV、Apple watch,以及每一个苹果设备。 另一个有趣的信息是,苹果公司在最新的iphon上设计了一个定制的GPU和一个带有神经引擎(neural engine)深度加工的A11 Bionic(仿生)芯片,该芯片用于深度学习的优化。
AiTechYun
2018/03/05
1.9K0
【实践操作】在iPhone上创建你的第一个机器学习模型
pytorch模型部署在MacOS或者IOS
onnx是一种针对机器学习设计的开放式文件格式,用来存储训练好的模型,并进行多种框架模型间的转换。
一棹烟波
2019/05/25
2.2K0
【深度学习】图片风格转换应用程序:使用CoreML创建Prisma
WWDC 2017让我们了解了苹果公司对机器学习的看法以及它在移动设备上的应用。CoreML框架使得将ML模型引入iOS应用程序变得非常容易。 大约一年前,我们在iOS和Android上实现了自己的神
AiTechYun
2018/03/05
1.9K0
【深度学习】图片风格转换应用程序:使用CoreML创建Prisma
如何使用 TensorFlow mobile 将 PyTorch 和 Keras 模型部署到移动设备
截止到今年,已经有超过 20 亿活跃的安卓设备。安卓手机的迅速普及很大程度上是因为各式各样的智能 app,从地图到图片编辑器应有尽有。随着深度学习的出现,我们的手机 app 将变得更加智能。下一代由深度学习驱动的手机 app 将可以学习并为你定制功能。一个很显著的例子是「Microsoft Swiftkey」,这是一个键盘 app, 能通过学习你常用的单词和词组来帮助你快速打字。
AI研习社
2018/07/26
3.7K0
如何使用 TensorFlow mobile 将 PyTorch 和 Keras 模型部署到移动设备
打造第一个自训练模型的Core ML应用
苹果人工智能生态系统正逐渐形成,今天我们就借着一个简单的Core ML应用简单窥探一下。
forrestlin
2018/08/20
1.4K0
打造第一个自训练模型的Core ML应用
转载:【AI系统】模型转换流程
用户在使用 AI 框架时,可能会遇到训练环境和部署环境不匹配的情况,比如用户用 Caffe 训练好了一个图像识别的模型,但是生产环境是使用 TensorFlow 做预测。
聊月夜以予星辰
2024/12/13
1930
转载:【AI系统】模型转换流程
深度学习模型在图像识别中的应用:CIFAR-10数据集实践与准确率分析
深度学习模型在图像识别领域的应用越来越广泛。通过对图像数据进行学习和训练,这些模型可以自动识别和分类图像,帮助我们解决各种实际问题。其中,CIFAR-10数据集是一个广泛使用的基准数据集,包含了10个不同类别的彩色图像。本文将介绍如何使用深度学习模型构建一个图像识别系统,并以CIFAR-10数据集为例进行实践和分析。文章中会详细解释代码的每一步,并展示模型在测试集上的准确率。此外,还将通过一张图片的识别示例展示模型的实际效果。通过阅读本文,您将了解深度学习模型在图像识别中的应用原理和实践方法,为您在相关领域的研究和应用提供有价值的参考。
全栈若城
2024/02/29
9750
深度学习模型在图像识别中的应用:CIFAR-10数据集实践与准确率分析
推荐阅读
相关推荐
CoreML尝鲜:将自己训练的 caffe 模型移植到 IOS 上
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验