《MNN For Swift》移动端机器学习实战课程发布!

本文涉及的产品
票据凭证识别,票据凭证识别 200次/月
自定义KV模板,自定义KV模板 500次/账号
个人证照识别,个人证照识别 200次/月
简介: 5期系列课程教学,最新实践分享!

自 2019 年 4 月在 Github 开源以来,淘系技术部-端智能团队自研的 MNN 推理引擎,因为其高性能、易用性以及优秀兼容性受到不少开发者的支持和喜爱。我们也把这份支持化作不断前进的动力,仅最近半年就推出了包括但不限于如下的诸多亮眼特性:

  • 几何计算。通过 MNN 自研的“硬核”技术,将多后端算子实现这项枯燥但必要的工作成本大幅降低。正是基于这项技术,MNN 重写了目前所有的硬件后端。引入几何计算之后 GPU 后端算子的覆盖率大幅增加,在GPU 后端性能普遍获得约 20% 提升,并新支持了 TensorRT 和 CUDA 后端。
  • 基于 Transformer 结构的 ASR 模型的支持。为了应对这类大量涉及 Control Flow、Dynamic Shape和Zero Shape等特性的模型结构,MNN 在框架层面进行了大幅度重构从而对其进行支持和完善。

关于 MNN 的强大,能说的还有很多,但我们不想再一次通过秀肌肉来证明 MNN 的领先独到。相反,我们希望通过这篇文章来说明更重要的一件事:来自开发者的声音,我们听见了。

在 MNN 开源的这一年多里,随着 MNN 被越来越多的开发者、企业所了解并使用,我们与社区之间的交流也愈加紧密频繁。在这之中,有一类的呼声经常被提起:

  • “MNN 很强了,就是希望 iOS / Android Demo 更多一点。Python 还是有点不熟悉”
  • “教教我们这些小白怎么上手呗。MNN 能干些啥呀~”
  • “五子棋牛逼,支持五神!老板我也想搞端智能!”

没错,很多人对机器学习的陌生来自于未知,而正是因为这个未知让大家想象不到能用 MNN 实现什么。

所以我们在想,如果用一门更熟悉的语言,带大家走入端智能的大门,为自己的职业生涯开辟一道新的口子,这样是不是对大家更有帮助?

今天,对着广大的移动开发者,我们要大声的宣布:MNN for Swift 正式来啦!伴随着这个项目一同发布的,还有系列实践性教程 -《MNN x Swift 机器学习实战》。

通过这两个项目,希望能给各位带来清晰的端智能学习路径。

能从课程中收获什么

相信大家都对网上质量参差不齐、没有实际干货的课程感到深恶痛绝。所以在设计系列教程的时候,我们首要考虑的两个要素就是:

  • 免费
  • 硬核技术和动手实践结合

基于此,我们会以每两周一次的方式进行 5 次的系列课程教学,结合 MNN 工作台 AI For Everyone 的低实践门槛,带来值得期待的知识分享。

✿ 系列直播预告

lALPGpqNcheu_PjNB0TNAu4_750_1860.png_720x720g.jpg

插段广告,如果你还不知道 MNN 工作台是什么,那就赶快前往 MNN 官网 www.mnn.zone 去下载吧。MNN 工作台是淘系技术部 - 端智能团队在今年 10 月份对外公测的一站式端侧 AI 平台。它是集低门槛预训练模版、开箱即用算法集、多端一键部署于一体的机器学习工具箱,通过 MNN 工作台,每个人都可以在几分钟内完成模型训练并部署到手机上运行看到应用效果。

整体的课程大纲如下:

Introduce to MNN For Swift

  • 介绍移动端机器学习现状
  • MNN For Swift 整体概览

MNN For Swift 实现原理

  • C++ 至 C 到 Swift 开发流程的最佳实践
  • MNN For Swift API 设计思路
  • MNN For Swift 进阶 - 玩转 Swift 自定义操作符

玩转 MNN 工作台 For Swit (一)- 模型预测

  • MNN For Swift 推理 API 使用介绍
  • 手把手玩转 MNIST 手写数字预测
  • 高级进阶 - 从 MNN 工作台获取更多高级模型

玩转 MNN 工作台 For Swift(二)- 模型训练

  • MNN For Swift 训练 API 使用介绍
  • 用 MNN Swift 构建 MINST 数字识别模型
  • 高级进阶 - 通过 MNN 工作台训练更多模型

MNN For Swift 应用实战

  • OCR - 光学字符识别简介
  • MNN 工作台 OCR 开箱即用模型简介
  • 使用 MNN For Swift 部署 OCR 模型
  • 完整应用案例展示

怎么样?看完大纲后是不是对使用 MNN For Swift 进行机器学习充满了好奇?那就敬请期待我们后续的课程吧!

当然有人会问:“付出那么多,你们想从这个课程中收获什么?”

很简单,我们希望通过这个课程让大家了解端智能是什么、如何把端智能和自身的日常工作进行结合。对那些积极参与《MNN x Swift》系列课程的朋友,如果您对 MNN 和 Swift 有什么独到的见解或者建议,也会邀请您参与到我们的直播中,共同打造 MNN For Swift 的社区生态!

只有更多人一起来玩端智能,这个新兴的领域才能受到更多的关注、获得更长足的发展。

Why Swift

最后我们还想来谈谈为什么 MNN 会选择在这个时间点支持 Swift。

一直以来,因为其强大的社区活力和易用的特性,Python 始终把控着机器学习社区语言的头把交椅(虽然 Julia 也发展的很迅猛)。Tensorflow、PyTorch 以及最新推出的 MNN 工作台等主流的机器学习框架或工具更是和 Python 这门语言紧紧的交织在一起。

但是将 Python 搬到移动端上却不是一件非常容易的事,引用 Tensorflow 对于移动端应用 Python 的观点来看:

  • 部署麻烦,运行时依赖太多。
  • 没有编译期类型检查。这导致很多错误要到运行时才能发现,在移动端,这些不可忽视的错误常常导致严重的应用崩溃等重大用户体验问题。
  • 性能太差,并发困难。而机器学习模型对算力的贪婪需求,迫切需要靠并发缓解。

而自 2014 年 WWDC 正式发布之后,Swift 已经逐渐成为了苹果开发者生态中的主流开发语言。作为一门比 Objective-C 更加现代化、更加安全的编程语言,Swift 已经获得了国内外广大开发者的喜爱。同时,应用 Swift 可以让我们“免费”享受到苹果工程师持续不断的性能、稳定性优化成果。

更重要的一点是,当我们基于 Swift 实践了部分机器学习开发工作后,我们惊讶的发现,Swift 竟然在机器学习领域有着与 Python 相媲美的表达特性。

用如下一段 Python 和 Swift 的 MNN 编程片段进行简单对比:

Python 代码:

# F = MNN.expr
input_data = F.placeholder([1, 3, image_height, image_width], F.NCHW, F.float)
input_data.write(image_data)
input_data = F.convert(input_data, F.NC4HW4)
outputs = ocr_det_net.forward([input_data])[0]
outputs = F.convert(outputs, F.NCHW)
data = outputs.read()

同样的代码在 Swift 中:

var input_data = Expr.placeholder(shape: [1, 3, image_height, image_width],
                                  dataFormat: .NCHW,
                                  dtype: Float.self)
input_data.write(data: image_data)
input_data = Expr.convert(input: input_data, format: .NC4HW4)
var output = ocr_det_net.onForward(inputs: [input_data])[0]
output = Expr.convert(input: output, format: .NCHW)
let data = output.read()

毫不夸张的说,如果不加以提示,可能根本不会感受到二者的异同,可见二者在语法表达上十分接近。

除了同样充分的表达性以外,Swift 在移动开发领域天然的优势(苹果大力支持)以及语言自身的安全特性都让 Swift 比起 Python 而言更适合移动端机器学习。

这也是我们为什么下定决心要开展 MNN For Swift 的重要原因。

在内部项目中,我们已经用 MNN For Swift 与 SwiftUI 完成了机器学习应用的编写,91% 的代码均为 Swift。由此可见 Swift 在移动端机器学习领域是能让开发者快速上手,降低开发者的开发门槛的一门优秀语言。所以不要犹豫,赶紧把 MNN For Swift 学起来。

结语

纸上得来终觉浅,绝知此事要躬行。不要再为自己每天还在糊 UI、画 Label 、组装 TableView 而感到焦虑。通过《MNN x Swift 机器学习实战》,我们希望让大家感受到深度学习不止是从事算法专业人员的“独门武器”、也不是大厂宣传秀肌肉的利器,而是让所有爱好技术的人都能参与实践的自我提升手段。

也希望借助 MNN For Swift 项目及系列课程,让大家感受到 MNN 积极拥抱社区、响应开发者呼声的热情与决心,给开发者们缓解一丝冬季的焦虑。

关注「淘系技术」微信公众号,一个有温度有内容的技术社区~

公众号二维码.jpg

相关文章
|
4月前
|
JSON 算法 数据可视化
5.3 目标检测YOLOv3实战:叶病虫害检测——损失函数、模型训练
这篇文章详细介绍了使用YOLOv3模型进行叶病虫害检测时的损失函数配置、模型训练过程、评估方法以及模型预测步骤,并提供了相应的代码实现和可能的改进方案。
|
25天前
|
机器学习/深度学习 TensorFlow API
机器学习实战:TensorFlow在图像识别中的应用探索
【10月更文挑战第28天】随着深度学习技术的发展,图像识别取得了显著进步。TensorFlow作为Google开源的机器学习框架,凭借其强大的功能和灵活的API,在图像识别任务中广泛应用。本文通过实战案例,探讨TensorFlow在图像识别中的优势与挑战,展示如何使用TensorFlow构建和训练卷积神经网络(CNN),并评估模型的性能。尽管面临学习曲线和资源消耗等挑战,TensorFlow仍展现出广阔的应用前景。
55 5
|
2月前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
73 2
|
2月前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
78 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧1
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
51 5
|
2月前
|
机器学习/深度学习 数据采集 分布式计算
【Python篇】深入机器学习核心:XGBoost 从入门到实战
【Python篇】深入机器学习核心:XGBoost 从入门到实战
118 3
|
2月前
|
机器学习/深度学习 算法 数据可视化
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧2
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
42 1
|
2月前
|
数据采集 机器学习/深度学习 TensorFlow
声纹识别实战:从数据采集到模型训练
【10月更文挑战第16天】声纹识别技术通过分析个人的语音特征来验证其身份,具有无接触、便捷的特点。本文将带你从零开始,一步步完成声纹识别系统的构建,包括数据采集、音频预处理、特征提取、模型训练及评估等关键步骤。我们将使用Python语言和相关的科学计算库来进行实践。
191 0
|
3月前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【9月更文挑战第13天】在数据科学与机器学习领域,Scikit-learn是不可或缺的工具。本文通过问答形式,指导初学者从零开始使用Scikit-learn进行模型训练、评估与选择。首先介绍了如何安装库、预处理数据并训练模型;接着展示了如何利用多种评估指标确保模型性能;最后通过GridSearchCV演示了系统化的参数调优方法。通过这些实战技巧,帮助读者逐步成长为熟练的数据科学家。
115 3
|
3月前
|
机器学习/深度学习 人工智能 算法
利用机器学习预测股市趋势:一个实战案例
【9月更文挑战第5天】在这篇文章中,我们将探索如何使用机器学习技术来预测股市趋势。我们将通过一个简单的Python代码示例来演示如何实现这一目标。请注意,这只是一个入门级的示例,实际应用中可能需要更复杂的模型和更多的数据。