MXNet 深度学习实战 (11):全面认识 MXNet 1.3.1

阅读数:2 2019 年 12 月 28 日 22:57

MXNet深度学习实战(11):全面认识MXNet 1.3.1

(MXNet 的发展历程)

内容简介
本书分为四大部分:
第一部分为准备篇(第 1~2 章),简单介绍深度学习相关的基础背景知识、深度学习框架 MXNet 的发展过程和优缺点,同时介绍基础开发环境的构建和 docker 的使用,帮助读者构建必要的基础知识背景。
第二部分为基础篇(第 3~7 章),介绍 MXNet 的几个主要模块,介绍 MXNet 的数据读取、数据增强操作,同时介绍了常用网络层的含义及使用方法、常见网络结构的设计思想,以及介绍模型训练相关的参数配置。
第三部分为实战篇(第 8~10 章),以图像分类、目标检测和图像分割这三个常用领域为例介绍如何通过 MXNet 实现算法训练和模型测试,同时还将结合 MXNet 的接口详细介绍算法细节内容。
第四部分为扩展篇(第 11~12 章),主要介绍 Gluon 和 GluonCV。Gluon 接口是 MXNet 推出的用于动态构建网络结构的重要接口,GluonCV 则是一个专门为计算机视觉任务服务的深度学习库。

在 MXNet 诞生之前,已有一个深度学习框架 cxxnet,该框架比较成熟,不仅可扩展性强,而且拥有统一的并行计算接口;另外还有一个接口 Minerva,这是一个比较灵活的类似于 NumPy 的计算接口,当时还在 CMU 读博的李沐就和这两个项目的开发者一起将二者结合在一起,最终诞生了 MXNet,MXNet 这个名字也是前面两个项目名字的组合。

2015 年 9 月,cxxnet 正式迁移至 MXNet,这也标志着 MXNet 正式开源。作为 cxxnet 的优化版本,MXNet 在实现了 cxxnet 所有功能的基础上加入了更多新的功能,比如 NDArray 模块和 Symbol 模块,同时其速度更快,显存占用更少。另外 MXNet 提供了更加灵活且直观的接口,更加便于用户使用,详细内容可以参考 MXNet 官方文档。该文档中提供了详细的接口介绍和使用方法,文档地址: https://mxnet.incubator.apache.org/ ,同时 MXnet 官方开源了代码,感兴趣的读者可以访问: https://github.com/apache/incubator-mxnet 了解。

2016 年年底,Amazon 宣布正式将 MXNet 作为官方使用的深度学习框架。当时的背景是 TensorFlow 已经开源了一年左右,普及速度非常快;Caffe 作为深度学习框架的元老,积累了非常多的用户。这两种深度学习框架对处于快速发展中的 MXNet 施加了很大的压力,毕竟那段时间 MXNet 的开发者们的主要精力还放在开发上,框架推广上的力度还不够,因此此时加入 Amazon 这一事件给了 MXNet 很大的支持,进一步推动了 MXNet 后期的快速发展和推广。

2017 年 8 月,MXNet 发布了 0.11 版本,该版本最大的改进就是发布了动态图接口 Gluon。采用命令式编程的 Gluon 接口使得网络结构的设计更加灵活,同时也更便于代码调试。Gluon 和 PyTorch 拥有许多共同点,比如命令式编程的特点、主要的接口设计等,目前 Gluon 接口已经成为 MXNet 框架非常重要的一部分。为了方便读者交流学习,Gluon 官方推出了技术论坛,该技术论坛目前非常活跃,感兴趣的读者可以访问 Gluon 官方论坛: https://discuss.gluon.ai/

2018 年 5 月,MXNet 正式推出了专门为计算机视觉任务打造的深度学习工具库 GluonCV,该工具库提供了包括图像分类、目标检测、图像分割等领域的前沿算法复现模型。GluonCV 主要以 Gluon 接口为例进行实现,而且提供了详细的复现代码,从方便读者研究学习。目前 GluonCV 库的代码已经开源,代码地址: https://github.com/dmlc/gluon-cv ,GluonCV 库官方文档地址: https://gluon-cv.mxnet.io/ 。官方文档中还提供了预训练模型的下载链接、复现代码的下载链接、各种接口介绍和教学的例子,非常便于读者学习。

2018 年 10 月,MXNet 推出 GluonCV 0.3.0 版本,新版本不仅添加了图像分类、目标检测、图像分割等领域新的算法模型,而且对已有的复现模型也做了优化,使得算法模型在效果上有了进一步的提升。目前 GluonCV 还在快速发展中,内容也越来越丰富,强烈推荐读者使用和学习。

2018 年 11 月,MXNet 正式推出 1.3.1 版本,该版本提供了更加完善的接口,考虑到目前 GluonCV 库需要 1.3.0 以上版本的 MXNet 才能支持,因此本书代码将基于 MXNet 1.3.1 版本进行开发。

MXNet 主打小巧和灵活,版本更新速度快而且兼容性好,接口方面基本上紧跟前沿的算法,能够及时实现前沿算法中的自定义操作,并整合到 MXNet 框架的接口中。比如目标检测(object detection)算法中比较优秀的 SSD,其中关于 default boxes 的生成和检测层都有对应的实现,用户可以直接调用 MXNet 的指定接口。再比如图像分割领域的 Mask RCNN 算法中用到的 ROIAlign 层在 MXNet 也有对应的实现。这些都说明 MXNet 的开发者一直致力于开发和维护 MXNet,基本上两、三个月的时间就会发布新版本,如此活跃的社区必将推动 MXNet 的快速发展。虽然 MXNet 发布新版本的节奏较快,但有一个好处在于每次发布的新版本对原有接口的改动非常小,主要是修改 bug 和增加新的接口,因此这不仅大大降低了代码维护的成本,还提供了更加丰富的接口选择。

MXNet深度学习实战(11):全面认识MXNet 1.3.1

购书地址 https://item.jd.com/12620056.html?dist=jd

评论

发布