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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Adobe Illustrator 2021免费版【Ai 2022】激活版下载+Ai2023安装教程
Adobe Illustrator 2021是Adobe出品的知识兔设计行业最流行的矢量绘图软件之一,已经成为行业标准之一的知识兔矢量图形软件,世界各地数以百万计的知识兔设计人员和艺术家都在使用Illustrator 2021进行设计和艺术创作。知识兔Illustrator 2021广泛应用于平面设计、logo设计、知识兔图标设计、书籍插图、包装设计、印刷、知识兔广告设计和插画设计等领域。
用户10122115
2022/11/06
3.2K0
enscape激活版下载 v3.2【支持SU2018-2022】附安装教程
Enscape3.2是一款多功能实时场景渲染器知识兔,专为Revit、Sketchup、Rhino和Arcad等一系列软件程序而设计知识兔。该软件使用了一个非常简单和直观的知识兔操作界面。相关用户可以在这里高度渲染一系列设计图纸,使作品更加真知识兔实和自然。此外,该软件还内置了大量知识兔渲染材料,用户可以随意将其应用到自己的作品中。知识兔
用户10122115
2022/11/07
6.3K0
犀牛Rhino 7.26激活版免费下载安装教程 支持VRay 6 渲染器
Rhino 7 是我们历史上最重要的升级。使用我们新的 SubD 工具您可以建立有机形状,您可以使用 Rhino.Inside.Revit做为 Revit® 附加组件运行 Rhino 和 Grasshopper,还可以使用强大的 QuadRemesh 算法从 NURBS 几何图形或网格建立美观的四边面网格。在此版本中,我们开启了全新的建模工作流程,并将许多稳定的功能进行了完善。这些都是亮点…
知识兔下载
2023/01/31
1.6K0
Adobe Character Animator 2021免费版下载及安装教程(Mac版)
Adobe Character Animator 2021 是Adobe公司旗下的一款2D动画制作软件(简称CH,角色动画师),主要用于制作富有表达力的高品质角色动画。由于其速度极快,甚至还可用在直播(Live)中。
用户10122115
2022/11/23
8910
office 2021完整版全套免费下载含安装教程
1.知识兔下载完office2021软件安装包,找到“Setup.exe”双击运行安装
知识兔
2023/01/03
1.4K0
Adobe Animate 2023 软件下载及安装教程
Animate 2023 v23.0.0.407是一款非常专业的动画制作软件,由原Adobe Flash更名得来,在维持原有的Flash开发工具基础上新增HTML 5创作工具,为网页开发者提供更适应现有网页应用的音频、图片、视频、动画等创作支持,为您带来全新的动画设计创作体验,这款软件的功能非常的齐全和强大,您将通过快速的步骤就能够创建各种类型的动画内容。
小兔
2022/11/21
1.1K0
Adobe Prelude 2021 软件下载及安装教程
Adobe Prelude CC 是一款视频剪切软件,它是Adobe出品的一款能够和Adobe Premiere或Final Cut Pro配合使用的一款视频编辑软件,可收录剪辑、转换素材代码、创建子剪辑标记和粗剪。
用户10122115
2022/11/23
7710
Adobe Media Encoder CC2021激活版下载 Me2022直装版安装教程 2023版
Adobe mediae ncoder 2021是Adob公司制作的强大视频和音频编码器,知识兔能够为 用户轻松快速地编码和渲染。
用户10122115
2022/11/07
8830
Adobe Prelude 2022 软件下载及安装教程
Prelude 2022是Adobe公司出品的一款专业的视频剪辑工具,拥有强大的视频剪辑、视频粗剪等功能,通过它可以帮助用户轻松完成视频的剪辑、粗剪等工作。这款剪辑工具主要用于视频的粗剪方面,在视频剪辑前还需要通过粗剪这一环节,而preludecc正是视频粗剪的专业工具,用在粗剪视频上再合适不过了。
用户10122115
2022/11/23
7680
PR 2023 v23.0 下载Adobe Premiere Pro 2023安装教程
Adobe Premiere Pro 2023 v23.0.0.63是一款由Adobe公司最新推出的视频编辑软件,该软件不仅仅是可以帮助用户提升自己的创作能力以及创作自由度,甚至还具有易学、高效以及精确的优点,知识兔这都可以为用户们提供采集、剪辑、调色、美化音频、字幕添加、语音识别、输出以及DVD刻录一整套的操作流程。
小兔
2022/11/21
3.3K0
全新PS2023软件下载安装-Photoshop2023激活安装包
ps迎来了2023的版本,知识兔这次的版本提升针对windows11做了特别优化,启动速度比win10快了很多。知识兔期盼已久的Win版 PS 2023 终于来了,知识兔小编也是通过特殊渠道搞来的,本期带来的WIN版本支持一键安装激活,一次安装永久免费使用众所周知,版本越高,需要的电脑配置也就越来越高。知识兔下面放一下2023版本的配置供大家参考。知识兔需要注意的是这些版本不再支持windows7系统,仅支持win10及以上的操作系统。
用户10122115
2022/10/24
1.8K0
Adobe Lightroom Classic 12.0 软件下载 LRC 2023安装教程
Lightroom Classic 12.0是Adobe公司开发的一款图片后期处理软件,也是史上首个专为专业摄影师和摄影爱好者提供了全套照片服务的应用程序,很适合摄影师拍摄照片的后期制作,面向数码摄影、图形设计等专业人士和高端用户,支持各种RAW图像,主要用于数码相片的浏览、编辑、整理、打印等。知识兔
小兔
2022/11/21
1.1K0
AI CC 2023 v27.0 软件下载一键安装Adobe illustrator 2023安装教程
illustrator 2023 v27.0.0.602是由Adobe公司设计的一款全球最为知名的矢量图形设计软件,该软件为用户们提供了大量的图形所需要的常用工具和强大的功能,如图标设计、徽标、字体、颜色、图标、壁纸、信息图设计等等,可以帮助设计师大大提高工作效率,并且操作也是非常的简单,现已广泛应用于广告设计、印刷出版、海报书籍、插画绘制、图像处理、PDF文档设计、WEB页面等领域,满足了各大设计行业的各种使用需求,非常的强大。
小兔
2022/11/21
1.5K0
顶级3D设计Rhino6.21软件下载安装教程+Rhino全版本安装包
Rhino 6.21是一款专业的3D建模软件,其特点是功能强大、易于使用,能够帮助用户快速、高效地创建出精美的3D模型。以下是Rhino 6.21的主要特色:
用户10521990
2023/04/25
4170
顶级3D设计Rhino6.21软件下载安装教程+Rhino全版本安装包
Origin Pro 9.1 - 2023 软件下载及Origin2022安装教程
Origin9.1是OriginLab公司出品的较为流行的专业函数绘图软件,其以操作简单、功能开放而深受国际上的用户喜爱,是公认的快速、灵活、易学的工程制图软件。Origin2023具有数据分析和绘图两大功能,数据分析主要包括统计、信号处理、图像处理、峰值分析和曲线拟合等各种完善的数学分析功能,而绘图则提供了几十种二维和三维绘图模板而且允许用户自己定制模板。
用户10122115
2022/11/28
7.4K0
Revit 2020建筑信息模型软件安装步骤-Revit软件下载方法
下载方法 软件提取地址:复制码 %77%77%77%2E%70%73%64%61%71%75%61%6E%37%2E%63%6F%6D/?%6A%6A%6C%6B%6C/ 粘贴浏览器访问或者鼠标
美丽之最
2023/04/13
9650
Revit 2020建筑信息模型软件安装步骤-Revit软件下载方法
Media Encoder 2019 For Mac软件介绍及2023安装教程(Mac版)
Adobe Media Encoder 2019 for mac版是一款适用于macOS的视频音频编码软件,可让用户针对不同播放器,以各种分发格式对音频和视频文件进行编码。该软件支持收录、转码、创建代理和输出多种格式,有利于用户能够在各种应用程序中以统一的方式处理媒体,并与 adobe premiere pro cc、after effects cc 和其他应用程序的紧密集成提供了无缝的工作流程。
知识兔
2022/10/17
1K0
T20天正建筑 7.0 中文版下载安装教程
T20天正建筑软件7.0是一款基于 AutoCAD的建筑设计辅助软件,旨在帮助用户提高设计效率,提供友好的界面,强大的命令,并可对常用的命令进行分类,支持更快的操作,而无需逐级点击打开各种菜单来浪费时间,从而有效提高工作效率,可说是从事建筑领域工作的人员必备的软件!本软件是 AutoCAD的辅助插件,功能增强十分丰富,让 CAD增加更多国标图库,更符合国内用户的使用习惯,无论是大家熟悉的操作流程,还是人性化的功能设计,都让建筑人员在视觉上更加直观地感受到建筑的魅力。崭新的T20天正建筑软件 V7.0带来了更多的新功能、全新的软件架构、全新的数据底层、全新的 UI用户交互界面,此外还新增了轴号组合、文字加框、文字互换、调字点、天正注释对象的视图显示等,并进行多项改进和优化,使用户使用流程更加流畅。为用户提供强大的三维造型创造能力和平台,支持32位AutoCAD2010-2016和64位AutoCAD2010-2020平台,还提供了丰富的建筑工具箱,让用户更加方便地对设计 dwg图像进行加工。
用户10122115
2022/12/28
1.6K0
Fuzor2020安装教程
1.先使用“百度网盘客户端”下载Fur20_CN_x64安装包到电脑磁盘里,并鼠标右击进行解压缩,安装前先断网电脑网络,然后找到“第1步:安装Fuzor-2020.msi”,鼠标右击选择【安装】
糯米导航
2022/10/06
1.2K0
Fuzor2020安装教程
三维BIM建筑信息模型构建软件 Revit安装教程附安装包下载
软件获取:复制箭头里面内容→%77%77%77%2e%70%6f%70%6f%31%2e%74%6f%70←粘贴到浏览器搜索即可
资源牛牛
2023/04/15
9710
三维BIM建筑信息模型构建软件 Revit安装教程附安装包下载
推荐阅读
相关推荐
Adobe Illustrator 2021免费版【Ai 2022】激活版下载+Ai2023安装教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验