雷锋网 AI 科技评论按:本文作者 Pranav Dar 是 Analytics Vidhya 的编辑,对数据科学和机器学习有较深入的研究和简介,致力于为使用机器学习和人工智能推动人类进步找到新途径。2018 这一年中,作者在每个月都会发布一份开源项目月度推荐榜单,而本文则是对全年开源项目的盘点和总结。雷锋网 AI 科技评论编译如下。
前沿
关于托管代码、与团队成员合作以及充当展示个人写代码技能的「在线简历」,最好的平台是哪个?问及任何一位数据科学家,他们都会让你去 GitHub。近年来,GitHub 作为一个真正具有变革性的平台,已经改变了我们托管甚至写代码的方式。
但这还不是全部。此外,它还是一个学习平台。如果你问怎么学习的话,我可以给你一个暗示——开源项目!
世界领先的科技公司通过在 GitHub 上发布其热门算法的代码,对项目进行开源。2018 年,在 Google 和 Facebook 等公司的带领下,这类开源项目大幅增加。其中最好的那部分开源项目,写代码的研究者还提供了预训练模型,从而让你我这些人不必再浪费时间从头开始创建高难度的模型。
同时,针对编码者和开发者的热门开源项目也很多——包括备忘单、视频链接、电子书、研究论文链接以及其他等资源。无论你在你的专业领域处于哪个等级(初学者、中级以及高级),你总可以在 GitHub 上找到可以学习的新东西。
对于数据科学的很多子领域来说,2018 年是不同凡响的一年,这个我下面马上就会讲到。随着 ULMFiT、BERT 等项目在 GitHub 上进行开源,自然语言处理(NLP)迅速成为社区中谈论最多的领域。我致力于将自己最大的努力贡献给这么棒的 GitHub 社区,在这一年中,我精心挑选了每位数据科学家都应该了解的 TOP 5 开源项目,并整理成了月度榜单系列。你可以点击下面的链接,前往查看完整榜单:
一月份:https://www.analyticsvidhya.com/blog/2018/02/top-5-github-repositories-january-2018/二月份:https://www.analyticsvidhya.com/blog/2018/03/top-5-github-repositories-february-2018/三月份:https://www.analyticsvidhya.com/blog/2018/04/top-7-github-repositories-march-2018/四月份:https://www.analyticsvidhya.com/blog/2018/05/top-5-github-reddit-data-science-machine-learning-april-2018/五月份:https://www.analyticsvidhya.com/blog/2018/06/top-5-github-reddit-data-science-machine-learning-may-2018/六月份:https://www.analyticsvidhya.com/blog/2018/07/top-github-reddit-data-science-machine-learning-june-2018/七月份:https://www.analyticsvidhya.com/blog/2018/08/best-machine-learning-github-repositories-reddit-threads-july-2018/八月份:https://www.analyticsvidhya.com/blog/2018/09/best-machine-learning-github-repositories-reddit-threads-august-2018/九月份:https://www.analyticsvidhya.com/blog/2018/10/best-machine-learning-github-repositories-reddit-threads-september-2018/十月份:https://www.analyticsvidhya.com/blog/2018/11/best-machine-learning-github-repositories-reddit-threads-october-2018/十一月份:https://www.analyticsvidhya.com/blog/2018/12/best-machine-learning-github-repositories-reddit-threads-november-2018/
这些文章的部分内容会和我盘点的 2018 年 AI 和 ML 领域最大突破文章有所重合,大家也可以前往以下地址阅读这篇文章——它从根本上来说是一份盘点了该领域主要进展的榜单,我认为该领域的每个人都应该有所了解。作为额外福利,文中还有来自专家们的预测——大家应该都不想错过吧。
https://www.analyticsvidhya.com/blog/2018/12/key-breakthroughs-ai-ml-2018-trends-2019/
现在,准备好去探索新的项目,并努力成为 2019 年的数据科学之星吧。继续向下滚动,大家点击每个项目后面的链接就可以前往 GitHub 的代码库了。
本文将覆盖到的话题工具和框架计算机视觉生成式对抗网络(GANs)其他深度学习项目自然语言处理(NLP)自动的机器学习(AutoML)强化学习
工具和框架
让我们开始来看看工具、开发库和框架方面的最佳开源项目。由于我们在讨论的是一个软件仓库平台,先讲这部分似乎才是正确的打开方式。
科技正在快速发展,同时计算成本也比之前更低了,所以现在有一个接一个大量的开源项目可供我们使用。现在,可以被称作机器学习编码的黄金时代吗?这是一个开放的问题,但是我们都认同的一件事是,现在是做一个数据科学领域的编程员的好时期。在这个部分(以及整篇文章),我都在尝试让编程语言尽可能地多样化些,不过 Python 无法避免地占据主导地位。
ML.NET
开源地址:https://github.com/dotnet/machinelearning
打开百度App,看更多图片
如果你们这些.NET 开发者们想要学一点机器学习知识来补充现有的技能,你会怎么做?现在就有一个完美的开源项目可以助你开始实施这一想法!这个完美的开源项目就是微软的一个项目——ML.NET,它是一个开源的机器学习框架,让你用 .NET 就可以设计和开发模型。
你甚至可以将现有的机器学习模型集成到你的应用程序中,而完全不要求你切确地知道怎样开发机器学习模型。ML.NET 实际上已被应用于多个微软产品中,例如 Windows、 Bing 搜索、 MS Office 等等。
ML.NET 可以在 Windows、Linux 以及 MacOS 上运行。
TensorFlow.js
开源地址:https://github.com/tensorflow/tfjs
在浏览器中实现机器学习!几年前,这还只是一个幻想,而现在成为了一个震撼人心的现实。这一领域的大多数人都与我们最爱的 IDEs 牢不可分,而 TensorFlow.js 则有可能改变我们的习惯。自今年早些时候发布以来,它就成为一个非常受欢迎的开源项目,并且它的灵活性还在继续给人带来惊喜。
正如开源项目所介绍的,TensorFlow.js 主要有三个重要特征:
浏览器自身可以开发机器学习和深度学习模型;可以在浏览器中运行现有的 TensorFlow 模型;同时可以对这些现有的模型进行重新训练或者微调。
如果你熟悉 Keras,那你也会对它的高级层 API 非常熟悉。目前在 GitHub 的开源项目中,有大量对外开放的示例,你可前往社区查看,来活跃一下你的学习曲线。
PyTorch 1.0
开源地址:https://github.com/pytorch/pytorch
对于 PyTorch 来说,2018 年是非常精彩的一年。它赢得了全球数据科学家和机器学习研究者们的心,现在他们则不断为 PyTorch 贡献项目。PyTorch 易于理解、灵活且被应用于众多高知名度的研究中(本文接下来会讲到)。PyTorch 最新版本(PyTorch 1.0)已经规模化地赋能了大量 Facebook 产品和服务,包括每天进行 6 百亿次文本翻译。如果你想知道什么时候开始涉足 PyTorch,那就是现在。
如果你是这一领域的初学者,可以先去看看 Faizan Shaikh 写的 PyTorch 入门指南:https://www.analyticsvidhya.com/blog/2018/02/pytorch-tutorial/
Papers with Code
开源地址:https://github.com/zziz/pwc
严格来说,Papers with Code 这个开源项目并不是一个工具或框架,但是对于数据科学家来说,它就是一个「金矿」。我们大多数人都在努力阅读论文,然后对论文提出的方法进行实操(至少我是这样做的)。大量的活动部件似乎无法在我们的机器上工作。
这就是需要用到「Papers with Code」的地方。如名称所示,它们对于在最近 6 年左右发布的重要论文都有代码实现。这一论文集网站令人兴奋,你会发现自己都忍不住赞叹它。它们甚至将在 NIPS (NeurIPS) 2018 中展示的论文代码也增加上去了。现在就去使用 Papers with Code 吧。
计算机视觉
得益于计算成本的下降和顶级研究者们所带来的突破的激增(一些事件显示这两者可能是互相关联的),现在越来越多人可以使用深度学习进行研究了。而在深度学习这一领域,计算机视觉项目是最普遍——在这一章节中所提到的大部分开源项目都包含了一种计算机视觉技术或另一种计算机视觉技术。
现在,计算机视觉可以说是深度学习最热门的领域,并且在可见的未来依旧会这么热门。无论是目标检测,还是姿态估计,几乎所有的计算机视觉任务都有相对应的开源项目。现在是了解这些进展的最佳时期—不久后,你或许就可以获得大量的工作机会。
Facebook 的 Detectron
开源地址:https://github.com/facebookresearch/Detectron
在 2018 年初被发布时,Detectron 就曾掀起千层浪。它由 Facebook 人工智能研究院(FAIR)开发,实现了最先进的目标检测框架。Detectron 采用(惊喜,惊喜!)Python 语言编写代码,已经帮助实现了多个项目,包括 DensePose(之后我们也会在文中提到)。
这个开源项目包括了代码以及 70+个预训练模型。与这么好的机会失之交臂,就问你同不同意?
英伟达的 vid2vid 技术
开源地址:https://github.com/NVIDIA/vid2vid
图像的目标检测现在做得很不错,那在视频中进行目标检测呢?不仅如此,我们能否能延展这一概念以及将某个视频的样式转换为另一种呢?是的,我们可以!这是一个非常酷的概念并且英伟达已经非常慷慨地发布了 PyTorch 实现,让大家尽情尝试。
这个开源项目包括介绍这一技术的视频、完整的研究论文以及代码。英伟达的示例中,应用了可公开注册下载的 Cityscapes dataset(下载地址:https://www.cityscapes-dataset.com/)。这是我自 2018 年以来个人最喜欢的开源项目。
用 18 秒在 ImageNet 数据集上训练出一个模型
开源地址:https://github.com/diux-dev/imagenet18
用 18 秒时间训练一个深度学习模型?与此同时还不使用高端的计算资源?相信我,现在可以实现了。Fast.ai 公司的 Jeremy Howard 和他的学生团队在热门的 ImageNet 数据集上创建了一个模型,表现甚至超过了 Google 的方法。
我建议你至少过一下这个开源项目,了解一下这些研究者是怎样构建代码的。并非每个人都拥有多个 GPU(有的人甚至一个也没有),因此对于「小虾米」来说,这个开源项目意义重大。
目标检测论文的完整集
开源地址:https://github.com/hoya012/deep_learning_object_detection
这是另一个研究论文集开源项目,它往往能帮助你了解所选择的研究课题在多年时间跨度里发生了怎样的演变,同时这个一站式历史记录正好可以帮助你了解目标检测在多年时间里经历的变化。它完整地收集了 2014 年至今的论文,甚至也尽可能地收集了每篇论文对应的代码。
上图表明了目标检测框架在过去五年时间里经历了怎样的演变和转变。很神奇,不是吗?图中甚至包括了 2019 年的工作,所以你有的忙了。
Facebook 的 DensePose
开源地址:https://github.com/facebookresearch/DensePose
让我们将注意力转向姿态检测领域。我在今年了解到这一概念本身,并且从此以后深为着迷。上面的图像抓住了这个开源项目的精华——户外场景下的密集人体姿势评估。
该开源项目包含了训练和评估 DensePose-RCNN 模型的代码,以及可用于可视化 DensePose COCO 数据集的笔记。这是一个开启姿态评估学习的好地方。
Everybody Dance Now—姿态评估
开源地址:https://github.com/nyoki-mtl/pytorch-EverybodyDanceNow
上图(截取自视频)实在是激起了我的兴趣。我在八月份的盘点文章中就写到了该研究论文的开源项目,并继续佩服这项技术。这项技术将不同视频中人体目标间的动作进行转移。我提到的这个视频也可以在开源项目中看到——它的效果超越你的想象!
这个开源项目进一步包含了这一方法的 PyTorch 实现。这一方法能够获取和复制的复杂细节的数量是惊人的。
生成式对抗网络(GANs)
我确定你们大多数人一定接触过 GAN 的应用(即使你们当时可能并没有意识到是它)。GAN,或者说生成式对抗网络由 Ian Goodfellow 于 2014 年提出,从那以后就变得热门。它们专用于执行创造性的任务,尤其是艺术性的任务。大家可前往 https://www.analyticsvidhya.com/blog/2017/06/introductory-generative-adversarial-networks-gans/ 查看 Faizan Shaikh 所写的介绍指南,文中还包括了使用 Python 语言的实现方法。
在 2018 年,我们看到了太多基于 GAN 的项目,因此我也想用一个独立章节来介绍 GAN 相关的开源项目。
Deep Painterly Harmonization
开源地址:https://github.com/luanfujun/deep-painterly-harmonization
首先从我最喜爱的一个开源项目讲起。我希望你花点时间仅仅来欣赏一下上面的图像。你能分辨出哪张是由人类做的,哪张是由机器生成的吗?我确定你不能。这里,第一个画面是输入图像(原始的),而第三个画面是由这项技术所生成的。
很惊讶,是吗?这个算法将你选择的外部物体添加到了任意一张图像上,并成功让它看上去好像本来就应该在那里一样。你不妨查看这个代码,然后尝试亲自到一系列不同的图像上去操作这项技术。
Image Outpainting
开源地址:https://github.com/bendangnuksung/Image-OutPainting
如果我给你一张图像,并让你通过想象图像在图中完整场景呈现时的样子,来扩展它的画面边界,你会怎么办?正常来说,你可能会把这个图导入到某个图像编辑软件里进行操作。但是现在有了一个非常棒的新软件——你可以用几行代码就实现这项操作。
这个项目是斯坦福大学「Image Outpainting」论文(论文地址:https://cs230.stanford.edu/projects_spring_2018/posters/8265861.pdf,这是一篇无比惊艳并配有示例说明的论文——这就是大多数研究论文所应有的样子!)的 Keras 实现。你或者可以从头开始创建模型,或者也可以使用这个开源项目作者所提供的模型。深度学习从来不会停止给人们带来惊喜。
可视化和理解 GANs
开源地址:https://github.com/CSAILVision/gandissect
如果你至今还没有掌握 GANs,不妨尝试一下这个开源项目。这个项目由麻省理工人工智能实验室(MIT CSAIL)提出,可以帮助研究者可视化和理解 GANs。你可以通过观察或者操作 GAN 模型的神经,来探究它学到了什么。
我建议你可以去查看一下 MIT 项目的官方主页(https://gandissect.csail.mit.edu/),上面有大量的资源(包括视频 demo),可以让你对这个概念更加熟悉。
GANimation
开源地址:https://github.com/albertpumarola/GANimation
这个算法可以让你改变图像中任何一个人的面部表情,让人欢喜也让人愁。上面在绿框中的图像是原始图像,其余的都是由 GANimation 生成的图像。
开源项目链接中包含了入门指南、数据准备资源、预备知识以及 Python 代码。正如论文作者所提到的,不要将它用于不道德的目的。
英伟达的 FastPhotoStyle
开源地址:https://github.com/NVIDIA/FastPhotoStyle
FastPhotoStyle 这个开源项目跟前面提到的 Deep Painterly Harmonization 非常像。但值得一提的是,它来源于英伟达本身。正如你在上图中所看到的,FastPhotoStyle 算法需要两项输入——一个样式图片和一个内容图片。这个算法之后会在这两项输入的其中一条路径上运行,来产生输出——它或者使用逼真的图像格式化代码,或者使用语义标记地图(semantic label maps)。
其他深度学习开源项目
计算机视觉领域可能让深度学习的其他工作都黯然失色,但是我还是想列出计算机视觉之外的几个有代表性的开源项目。
英伟达的 WaveGlow
开源地址:https://github.com/NVIDIA/waveglow
音频处理是深度学习开始做出成绩的另一领域。不局限于生成音乐,你也可以完成音频分类、指纹识别、分割、标注等任务。现在该领域还有很多可以探索的空间,谁知道呢,也许你可以使用这些开源项目来走上人生巅峰。
这里有两篇非常直观的文章,可以帮助你熟悉这项开源工作:
《使用深度学习开始进行音频数据分析(附案例研究)》,Getting Started with Audio Data Analysis using Deep Learning (with case study):https://www.analyticsvidhya.com/blog/2017/08/audio-voice-processing-deep-learning/《10 个音频处理任务让你开始深度学习应用(附案例研究)》,10 Audio Processing Tasks to get you started with Deep Learning Applications (with Case Studies):https://www.analyticsvidhya.com/blog/2018/01/10-audio-processing-projects-applications/
重新回到英伟达这里。WaveGlow 是一个基于流的网络,能够生成高质量的音频。本质上,它是一个面向语音合成的单网络。
这个开源项目包括 WaveGlow 的 PyTorch 实现,以及可供下载的预训练模型。同时,研究者也在上面了列下了使用步骤。如果你想从头开始训练自己的模型,可以遵照使用步骤。
AstroNet
开源地址:https://github.com/google-research/exoplanet-ml
想要发现你自己的行星?AstroNet 这个开源项目也许被高估了些,但是确实能让你离梦想更近。2017 年 12 月,「谷歌大脑」团队就通过应用 AstroNet 发现了两个新的行星。AstroNet 是一个专门用来处理天文数据的深度神经网络,它体现了深度学习更广泛的应用,同时也是一个真正的里程碑式的进展。
现在,这项技术的研发团队已经对运行 AstroNet 的整个代码进行了开源(提示:这个模型基于 CNNs!)。
VisualDL – 可视化深度学习模型
开源地址:https://github.com/PaddlePaddle/VisualDL
谁不喜欢可视化?但是想象深度学习模型怎么运行,倒是有点吓人。不过 VisualDL 通过设计特定的深度学习任务,可以较好地减轻这些挑战。
针对可视化任务,VisualDL 目前支持以下几个部分:
数量柱状图图像音频图表高维的
自然语言处理(NLP)
很惊讶看到 NLP 排在榜单这么后的位置?这主要是因为我想在本文对几乎所有重要的开源项目盘点一番。在 NLP 之前的那些开源项目,我都大力推荐大家前往查看。在 NLP 部分,我提到的框架包括 ULMFiT、谷歌的 BERT、 ELMo 以及 Facebook 的 PyText。我会简要提一下 BERT 以及几个其他的开源项目,因为我发现它们非常有用。
谷歌的 BERT
开源地址:https://github.com/google-research/bert
NLP 这部分,我就不得不提 BERT 了。谷歌 AI 的这个开源项目为 NLP 领域带来了突破,赢得了 NLP 爱好者以及专家等人的强烈关注。继 ULMFiT 和 ELMo 之后,BERT 以它的性能战胜了比赛,在 11 项 NLP 任务中获得最佳成绩。
除了我在上面附上的谷歌开源项目的官方链接,BERT 的 PyTorch 实现(查看地址:https://github.com/huggingface/pytorch-pretrained-BERT)也值得前往一看。至于它是否让 NLP 步入了一个新时代,我们不久后就会知晓了。
MatchZoo
开源项目:https://github.com/NTMC-Community/MatchZoo
MatchZoo 能帮助你知道模型在某个基准上表现得怎么样。对于 NLP,尤其是深度文本匹配模型,我发现 MatchZoo 工具包非常靠谱。MatchZoo 可应用的其他相关任务包括:
对话问答文本蕴涵信息检索释义识别
MatchZoo 2,0 版本目前还在开发中,因此不妨期待一下这个已经很有用的工具箱再增加更多新的功能。
NLP Progress
开源地址:https://github.com/sebastianruder/NLP-progress
这个开源项目是由 Sebastian Ruder 一人开发的,其目标是追踪 NLP 领域的最新进展,它包含了数据集和最先进的模型。
任何一项你曾经想进行更过了解的 NLP 技术——现在就有一个摆在你面前的好机会。这个开源项目涵盖了阅读理解以及词性标注等传统和核心的 NLP 任务。即使你只是隐约对这个领域感兴趣,也一定要标星/标记好这个开源项目。
自动的机器学习(AutoML)
2018 年,也是 AutoML 辉煌的一年。随着工业界将机器学习集成到它们的核心工作中,其对数据科学专家的需求也在持续上升。目前,供给和需求间也存在着较大的差距,而 AutoML 工具则有可能填补这个差距。
这些工具为那些缺乏数据科学专业知识的人所设计。虽然这些工具之外还有一些其他很好的工具,但是它们大部分的价格都要高得多——大多数个人负担不起。因此,2018 年,我们这个很棒的开源社区前来支援大家,同时还带来了两个热门的开源项目。
Auto Keras
开源地址:https://github.com/jhfjhfj1/autokeras
几个月前,Auto Keras 一经发布就引起了轰动。并且它必然会引起轰动。长期以来,深度学习被视为一个专业性非常强的领域,所以一个能够自动完成大部分任务的开发库自然颇受欢迎。引用他们官网上的话:「Auto Keras 的最终目标是为仅拥有一定数据科学知识或机器学习背景的行业专家提供可轻松应用的深度学习工具」。
你可以通过下方的种子来安装这个开发库:
这个开源项目还包含了一些简单的示例,可以让你了解 Auto Keras 的整个工作流程。
谷歌的 AdaNet
开源地址:https://github.com/tensorflow/adanet
AdaNet 是一个自动学习高质量模型的框架,对编程专业知识没有要求。由于 AdaNet 由谷歌开发,因此这一框架基于 TensorFlow。你可以使用 AdaNet 创建所有的模型,同时可以扩展它的应用去训练神经网络。
强化学习
因为我在 2018 年的综述文章中盘点过一些强化学习开源项目,因此这一章节的介绍会相当简单。我希望在包括 RL 在内的这些章节中,能够促进大家对我们这个社区的讨论,也希望能过加速这一领域的研究进程。
首先,你可以先去看一下 OpenAI 的 Spinning Up 开源项目(项目地址:https://github.com/openai/spinningup),它是一个针对初学者的完全教育型的开源项目。然后可以去看看谷歌的 dopamine 开源项目(项目地址:https://github.com/google/dopamine),它是一个研究框架,用来加速这一仍旧处于初步发展阶段的领域的研究。接下来,让我们也了解一下其他的开源项目。
DeepMimic
开源地址:https://github.com/xbpeng/DeepMimic
如果你在社交媒体上关注了一些研究者,你一定在视频中看到过上面的图像。一个棍形人在地面上奔跑,或者尝试站起来,或者其他一些动作。亲爱的读者,这些就是(人体)动作中的强化学习。
这里有一个强化学习的标志性示例——训练仿真人形来模仿多个动作技能。上面开源项目的链接页面包括代码、示例以及循序渐进的练习指南。
Reinforcement Learning Notebooks
开源地址:https://github.com/Pulkit-Khandelwal/Reinforcement-Learning-Notebooks
这个开源项目是一个强化学习算法集,这些算法来自 Richard Sutton 和 Andrew Barto 所写的书以及其他研究论文,它们在开源项目中以 Python notebooks 的格式呈现。
正如该开源项目的开发者所提到的,如果你在学习的过程中同时进行实操练习,你就能真正学会它。这个项目比较复杂,如果不进行实操或者仅仅像读小说一样去阅读资源内容,你将一无所获。
via:https://www.analyticsvidhya.com/blog/2018/12/best-data-science-machine-learning-projects-github/ 雷锋网 AI 科技评论编译