对于程序员来说,拥有一款低门槛、易操作的深度学习开发工具包,可以说赢在了起跑线!来自华为的全场景 AI 框架昇思 MindSpore 在历经短短一年多时间的迭代,为专业 AI 从业者提供了这样一个前所未有的开发神器,不过还是有很多非 AI 专业的小小白们,需要更加保姆一些的好帮手。由昇思 MindSpore 社区运作团队开发的 MindSpore 开发者高阶 API 套件 TinyMS 由此应运而生,在 2021 年 3 月 31 日正式开源后,历经几个版本迭代,今天又给大家带来了一个全新升级的版本,让更多人可以通过国产开源框架昇思 MindSpore 快速入门 AI。
全新升级四大特性,可视化工具还能做到极致?
低门槛有多小白?易操作有多简单?光说不练假把式,下面就上实操图!
1、极简可视化:支持基于 OpenCV 静态图片检测和动态摄像头视频检测
TinyMS 新版本的可视化特性的设计初衷来源于我们与山水自然保护中心的合作项目——基于 MindSpore 实现三江源自然保护区红外相机 AI 物种识别(点击标题可查看项目详情)。通常,在训练完模型后,大多数模型开发人员会采用模型验证工具来计算精度,召回率等指标展现模型效果,但对于非深度学习开发人员来说这些指标并不直观。我们希望让用户通过 TinyMS 可视化工具直接看到模型推理生成的图片结果。传统的可视化工具依然需要开发人员具备一定的深度学习开发经验,比如数据处理、构建网络、加载模型、执行推理等一系列流程,如果想直观看到图片进行推理后的结果,还需要掌握 OpenCV 的使用,这些步骤对于非 AI 开发者用户来说仍较困难,因此,TinyMS 提供了一键式可视化推理工具,封装了模型构建等大部分技术细节,用户仅需几个简单的步骤即可实现 OpenCV 静态图片检测和动态摄像头视频检测,下面展示如何使用静态图像进行检测的可视化推理结果。
import cv2
from tinyms.app.object_detection.utils.config_util import load_and_parse_config
from tinyms.app.object_detection.object_detector import ObjectDetector, object_detection_predict
from tinyms.app.object_detection.utils.view_util import visualize_boxes_on_image
# 1.加载和解析模型配置JSON文件
config_path = '**/tinyms/app/object_detection/configs/tinyms/0.3/ssd300_shanshui.json'
config = load_and_parse_config(config_path=config_path)
# 2.创建ObjectDetector类的实例
detector = ObjectDetector(config=config)
# 3.使用OpenCV读取静态图像
img_path = ('./pic/test.jpeg)
image_np = cv2.imread(img_path)
input = image_np.copy()
# 4.对图像进行检测
detection_bbox_data = object_detection_predict(input, detector, is_training=False)
# 5.调用OpenCV库为图像画检测框并显示检测图像检测效果图
detection_image_np = visualize_boxes_on_image(image_np, detection_bbox_data, box_color=(0, 255, 0), box_thickness=3, text_font=cv2.FONT_HERSHEY_PLAIN,
font_scale=2, text_color=(0, 0, 255), font_size=3, show_scores=True)
cv2.imshow('object detection image', cv2.resize(detection_image_np, (600, 1000)))
cv2.waitKey(0)
图 1 静态图片检测展示
2、WEB 端部署:支持容器化快速部署可视化推理,无需 coding 即可在 web 界面轻松体验
针对小白用户,TinyMS 还提供了 WEB UI 项目容器化快速部署,用户无需 coding 即可在 web 界面轻松体验图像识别,在浏览器页面上传待推理的图片即可返回模型推理结果,目前支持 LeNet5 数字识别、CycleGan 风格迁移和 SSD300 目标检测等多种 AI 任务。
图 2 Web 端可视化推理结果展示
3、丰富模型库:主流高阶模型均为开发者贡献、覆盖 CV、NLP 和推荐领域
TinyMS 开源至今收到非常多开发者的肯定,吸引了不少开发者自发贡献模型,尤其在今年第七届互联网 + 大学生创新创业大赛中华南理工大学的团队选择了 TinyMS 赛题获得金奖。在刚结束的 MindCon 第三届点亮 SIG 的开发者活动中,开发者积极贡献了 DeepFM 模型,目前 TinyMS 一共支持 11 个主流模型,0.1 版本发布后,开发者贡献了 6 个模型,包括 DeepFM, AlexNet, DenseNet100, VGG16, SentimentNet, Bert 等多个主流模型,覆盖 CV、NLP、推荐领域,欢迎更多的开发者加入 TinyMS 开源项目中,成为 contributor 贡献力量!
4、多平台支持:基于 MindSpore1.6.0 新版本,支持在 Win、Mac OS、Ubuntu、Linux 等多平台运行与部署
破解无人驾驶智能化核心任务,开发者是如何依靠昇思生态做到的?
在 2021 年举办的第七届中国国际 “ 互联网 + ” 大学生创新创业大赛中,由华南理工大学陈天一同学带领的城联智图项目团队,在全国 1024 所高校的 10466 支队伍中脱颖而出,勇夺产业赛道的金奖。获奖赛题便是基于 MindSpore 高阶 API 套件 TinyMS 实现城市风格迁移模型。陈天一带领的”城联智图“团队对风格迁移领域的经典模型 CycleGAN 魔改后,将一个城市的图像街景转化为另一个城市的图像街景,为无人驾驶图像数据获取提供新途径,破解了无人驾驶智能化的核心任务。为此 TinyMS 核心团队特地对他们进行了采访,来看看他们是如何做到的吧!
视频中获奖者:
陈天一:华南理工大学计算机科学与工程学院,城联智图项目组负责人。
郑咏佳:华南理工大学工商管理学院,城联智图项目组核心工程师。
无人驾驶数据集难获取?“城智互联”来搞定
咏佳:无人驾驶它有一个核心的问题是它必须要实地去采集很多图片,并且很难采集到我们一些经常发生到的道路异常情况。我们刚好看到了 MindSpore 开源了,并且配套的 TinyMS 工具也进行了开源。于是开展了 “城联智图” 项目,可以不用进行实地采集,便可以直接生成很大量的数据;并且还可以直接生成大量的异常道路街景。
这个项目有两个核心创新点,第一点就是我们的城市图像转换技术,通过先研发一个深度网络,并且我们首创了一个球面空间约束模型,加入到我们的网络之中,保证我们图像质量的同时,直接生成大量的城市街景。第二个是城市图像生成技术,这一项技术主要是针对我们的异常道路情况来进行采集。通过这项技术,内部包含了我们的卷积神经网络,还有生成对抗网络,可以直接生成大量的异常道路街景,然后解决了这个无人驾驶的核心挑战。
TinyMS 初体验?无痛上手极好用
天一:我平时的科研研究方向是图像生成以及图像迁移。当我看到这个赛题之后,很感兴趣,就把它发展成一个创新创业大赛项目。喊了一群志同道合的朋友们一起来做这个项目。这个项目在源码上,是依据 MindSpore CycleGAN 的开发者高阶 API 模型。我们在对这个代码进行上手,发现这个代码上手非常简单,并且在模型的训练以及模型的迭代更新中,我们也发现了 MindSpore 一些独有的特性。例如动静态图交替更新网络,我们利用这个特性来发展我们自己的一些特有的方法,例如球面空间约束或者一些语义规约,我们把它应用到 MindSpore 高阶 API 模型上,最终得到一个独特的 CycleGAN 网络模型,最终发展成我们现有的方法,用来解决我们的核心项目挑战。
难点痛点如何解决?开源社区帮助你
天一:遇到的主要困难,就是网络更新的参数怎么办?我们在观察网络参数之后,我们发现里面一些具体参数,我们不知道其含义是什么。后面我们经过一个 MindSpore CycleGAN 的高阶 API 模型源码的拆包和解包,最终重构它的一个网络更新代码,现在已经将这个代码开源至 MindSpore 社区。解决了这项问题之后,也对我们整个项目的第一步有了很大的推动作用,也是我们现在目前遇到的最大的问题。
最后,陈天一说,获奖只是开始,接下来希望把项目成果进一步完善,并落地应用到更多领域。这个项目不仅用在无人驾驶上,在未来还可以继续针对机器人交警、智慧医疗,以及测绘等等相关行业上应用。此外。团队目前有 4~5 位博士,3~4 位硕士生,都会一起贡献 MindSpore 生态。另外,我们也会在后期逐渐发表一些论文,以及其他平台,例如今年的 ICCV 或者去年的 CVPR,我们都会将一些源码,进行跨平台的拓展和延伸、移植到 MindSpore 和 TinyMS 的平台上。
注:开源文档地址:
https://tinyms.readthedocs.io/en/latest/tutorials/ipynb/TinyMS_CycleGAN_tutorial.html
昇思版本快速升级也能保持 API 后向兼容? 没问题!
昇思 MindSpore 从开源以来,虽然处于快速迭代中,但社区秉承业界优秀开源项目的传统,在 API 后向兼容性上,引入了一系列机制,确保核心 API 的稳定性,让用户用的更安心、更放心。一些非核心的 API 接口因为业务场景需求,会按照 API 管理规则进行调整。由于 TinyMS 高度继承和扩展了 MindSpore 原生 API(如下图),很好地验证 MindSpore 每个版本的接口兼容性,开发者可以快速客观的获悉版本迭代的易用性信息。
图 3 MindSpore 和 TinyMS 核心架构图
举一个简单的例子:在 TinyMS 新版本中,由于 MindSpore 主线版本将 lstm 接口模块,更新到了新的 rnns 模块和 rnn_cells 模块中,并且依据接口更新规范,所更新的模块同属一个父目录模块 layer,因此需要我们修改的代码量非常小(可以看 TinyMS 官方仓 126 号 pr),说明 MindSpore 的接口目前大体算是比较稳定的。
其次,在 TinyMS 从 0.2.0 到 0.3.0 的版本演进中,我们之所以可以快速实现对 MindSpore 从 1.2 版本连升四个版本到对主线的支持,正是因为 MindSpore 核心 API 保持足够的稳定和兼容性。
保姆级教程持续更新,一分钟即可上手体验
过年期间,TinyMS 保姆级教学视频还会持续更新,依然由我们集美貌与才华于一身的 Charlotte 老师(TinyMS 项目负责人)亲自操刀,大家前往 B 站搜索【MindSpore 官方】即可观看教程,或直接戳下方图片进入,为了下次不迷路,可以直接关注我们哦~
图 4 TinyMS 保姆级教程
(点击图片可直接跳转)
虎虎生风,昇思新版本值得期待
在虎年春节前后,昇思 MindSpore 社区会陆续发布一系列全新特性,值得所有开发者的期待!这些特性不仅包括高性能可扩展的强化学习计算能力、更好的支持第三方框架模型迁移的工具、还有能让用户即时体验的开发套件、升级的自定义算子功能、更丰富且易上手的的量子模块,持续提升框架的训练与推理性能等等。欢迎更多对 AI 框架前沿发展感兴趣的开发者,关注昇思 MindSpore 社区的码云代码仓库、公众号、官网等渠道,掌握最新信息。
而作为昇思 MindSpore 入门级开发者最佳伙伴的 TinyMS,也会通过 0.3 版本后一系列的小版本更新,依靠昇思 MindSpore 核心 API 的极佳稳定性,及时的将昇思 MindSpore 的最新特性支持起来,更好的服务广大初学及非 AI 专业的有志开发者!
快来加入我们吧!
(加群可以与更多技术大咖交流学习)
(官方微信交流群)
(MindSpore 官方微信)
长按下方二维码加入 MindSpore 项目↓
MindSpore 官方资料
GitHub : https://github.com/mindspore-ai/mindspore
Gitee : https : //gitee.com/mindspore/mindspore
官方 QQ 群 : 486831414
© THE END
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com