全新升级四大特性,
可视化工具还能做到极致?
低门槛有多小白?易操作有多简单?光说不练假把式,下面就上实操图!
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界面轻松体验
图2 Web端可视化推理结果展示
3、丰富模型库:主流高阶模型均为开发者贡献、覆盖CV、NLP和推荐领域
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官方资料
GitHub : https://github.com/mindspore-ai/mindspore
Gitee : https : //gitee.com/mindspore/mindspore
官方QQ群 : 486831414
戳阅读原文可跳转保姆级教程
我知道你在看哦!