最佳 Pytorch 科研项目架构模板实践

此前,跨象乘云™ 发布了《最佳TensorFlow科研项目架构模板实践》,TensorFlow 是帮助深度学习新方法走向实现的强大工具。它为大多数深度学习领域中使用的常用语言提供了大量应用程序接口。对于开发者和研究人员来说,在开启新的项目前首先面临的问题是:如何构建一个简单明了的结构。所以,经过大量的实践和对 Tensorflow 项目贡献,整理了一个结合简洁,具备文件夹结构化组织,并且面向对象设计的 Tensorflow 项目模板最佳实践 —— 为高校深度学习与新一代人工智能科研实验室建设以及科研教学平台提供良好的基础支撑。

另一方面,自从 PyTorch 1.0 发布之后,越来越多的人选择使用 PyTorch,今天给大家介绍一个 Github 项目,作者通过自己使用 PyTorch 的实际工程经验,总结出了一套非常有用的使用 PyTorch 的最佳实践,涉及到使用 PyTorch 的方方面面。

本文总结了使用 PyTorch 框架进行深度学习的一年多经验中的最佳实践。请注意,我们分享的经验大多来自研究和创业的视角。这是一个开放的项目,欢迎其他合作者编辑和改进文档。该文档有三个主要部分。首先,简要回顾一下 Python 中的最佳实践,然后介绍一些使用 PyTorch 的技巧和建议。最后,我们分享了一些使用其他框架的见解和经验,这些框架通常对我们改进工作流有帮助。

GitHub地址项目 GitHub 地址

The Car Connection 汽车数据集

关于汽车的项目很多,比如拍照识车、汽车比价等等,尽管这些项目本身难度不大,但是往往受制于数据集的质量,模型的效果不能很好的发挥。Nicolas Gervais 近日发布了一个关于汽车的数据集,数据相当全质量也相当高,为面向汽车工程类的大数据分析机器学习自动驾驶等方向的科研实验室项目,提供有效的支撑帮助。数据集的来源是 The Car Connection 网站,该网站是全球最大的汽车评测网站之一,致力于让汽车研究更加容易。

The Car Connection
The Car Connection

数据集包括 297,000 张图片,但是其中许多是汽车的内部图像,关于汽车的外观大概有 60,000 张照片。所有的文件都对汽车的 15 个参数进行了标注:’Make’, ‘Model’, ‘Year’, ‘MSRP’, ‘Front Wheel Size (in)’, ‘SAE Net Horsepower @ RPM’, ‘Displacement’, ‘Engine Type’, ‘Width, Max w/o mirrors (in)’, ‘Height, Overall (in)’, ‘Length, Overall (in)’, ‘Gas Mileage’, ‘Drivetrain’, ‘Passenger Capacity’, ‘Passenger Doors’, ‘Body Style’

GitHub地址项目 GitHub 地址

2019 年机器学习/ 深度学习热门论文(含代码)

1. 《Contrastive Representation Distillation》

本文在模型蒸馏领域中利用了一系列对比目标来捕获相关性和高阶输出依存关系。在本文中对它们进行了修改,以将知识从一个神经网络提取到另一个。

Contrastive Representation Distillation
Contrastive Representation Distillation

本文考虑了三个蒸馏阶段:

  • 模型压缩
  • 将知识从一种方式(例如:RGB)转移到另一种方式(例如:深度)
  • 将一组网络精简为一个网络

对比学习的主要思想是学习在某个度量空间中对于正例对的表示尽可能接近,同时对于负例对的表示尽可能远。

GitHub地址项目 GitHub 地址

2. 《Network Pruning via Transformable Architecture Search》

这是网络修剪领域的论文。它建议直接将神经体系结构搜索应用于具有灵活通道和层大小的网络。使修剪过的网络的损失最小化有助于学习信道数量。

Nueral Architecture Search (NAS)
Nueral Architecture Search (NAS)

修剪后的网络的特征图由 K 个特征图片段组成,这些片段基于概率分布进行采样。损失反向传播到网络权重和参数化分布。

本文提出的修剪方法分为三个阶段:

  • 使用标准分类训练程序训练未修剪的大型网络。
  • 通过可转换体系结构搜索(TAS)搜索小型网络的深度和宽度。TAS 旨在寻求最佳的网络规模。
  • 使用简单知识提炼(KD)方法将信息从未修剪的网络传输到搜索的小型网络。

GitHub地址项目 GitHub 地址

3. 《Learning Data Augmentation Strategies for Object Detection》

尽管这本身不是模型体系结构,但本文提出了可用于对象检测数据集的转换的创建方法,这些转换可以转移到其他对象检测数据集。转换通常在训练时应用。以下是使用学习到的策略进行训练的代码:

在此模型中,扩充策略定义为在训练过程中随机选择的一组 n 个策略。在此模型中已应用的一些操作包括:扭曲颜色通道,几何扭曲图像以及仅扭曲在边界框注释中找到的像素内容。

GitHub地址项目 GitHub 地址

4. 《XLNet: Generalized Autoregressive Pretraining for Language Understanding》

XLNet 是 Transformer 领域的一篇令人振奋的论文。XLNet 是一种通用的自回归预训练方法,通过最大化在所有因式分解阶数排列上的预期似然性,可以学习双向上下文。它不使用固定的正向或反向分解顺序。取而代之的是,它针对分解阶数的所有可能排列最大化序列的预期对数似然性。这些排列的结果是,每个位置的上下文都可以由左右两个标记组成。由于每个位置都学会了利用所有位置的上下文信息,因此捕获了双向上下文。

GitHub地址项目 GitHub 地址

5. 《Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context (ACL 2019)》

Transformer-XL(意味着超长)可用于学习超出固定长度的依赖性,而不会破坏时间相干性。它引入了段级递归机制和位置编码方案。TransformerXL 学习的依赖关系比 RNN 长 80%,比朴素 Transformers 长 450%。TensorFlowPyTorch 均可用。

作者将递归引入其深层的自注意力网络。他们重用了先前分段中获得的隐藏状态,而不是从头开始为每个新段计算隐藏状态。重用的隐藏状态充当循环段的内存。

这在段之间建立了循环连接。建模长期依赖关系成为可能,因为信息是通过循环连接传递的。作者还介绍了一种更有效的相对位置编码方式,该方式可以将注意力集中到比训练过程中观察到的注意长度更长的位置。

GitHub地址项目 GitHub 地址

6. 《Depth Prediction Without the Sensors: Leveraging Structure for Unsupervised Learning from Monocular Videos (AAAI 2019)》

本文涉及场景深度和机器人自我运动的无监督学习任务,其中监督由单目视频提供。这是通过将几何结构引入学习过程来完成的。它涉及对场景和单个对象,相机的自我运动以及从单眼视频输入中获悉的对象运动进行建模。作者还介绍了一种在线优化方法。

Depth Prediction Without the Sensors: Leveraging Structure for Unsupervised Learning from Monocular Videos
Depth Prediction Without the Sensors: Leveraging Structure for Unsupervised Learning from Monocular Videos

作者介绍了一种对象运动模型,该模型与自我运动网络共享相同的体系结构。但是,它专门用于预测 3D 中单个对象的运动。

它以 RGB 图像序列作为输入。预先计算的实例分段掩码对此进行了补充。运动模型的工作是学习预测 3D 空间中每个对象的变换矢量。这将在各个目标框中创建观察到的对象外观。

GitHub地址项目 GitHub 地址

7. 《Auto-Keras: An Efficient Neural Architecture Search System》

本文提出了一个框架,使贝叶斯优化能够为有效的 NAS 引导网络形态。基于他们的方法,作者构建了一个称为 Auto-Keras 的开源 AutoML 系统。

该方法的主要组成部分是在贝叶斯优化(BO)算法的指导下,通过变形神经网络结构来探索搜索空间。由于 NAS 空间不是欧几里德空间,因此作者通过设计神经网络核函数来解决这一难题。核函数是用于将一种神经体系结构变形为另一种神经体系结构的编辑距离。

GitHub地址项目 GitHub 地址

8. 《Depth-Aware Video Frame Interpolation (CVPR 2019)》

本文提出了一种视频帧插值方法,该方法通过探索深度信息来检测遮挡。作者开发了一个深度感知流投影层,该层可以合成对较近的对象进行采样的即时流,而不是对较远的对象进行采样。

DAIN (Depth-Aware Video Frame Interpolation)
DAIN (Depth-Aware Video Frame Interpolation)

层次特征的学习是通过从相邻像素收集上下文信息来完成的。然后通过基于光流和局部插值核对输入帧,深度图和上下文特征进行综合来生成输出帧。

作者提出了一种深度感知视频帧内插(DAIN)模型,该模型可有效利用光流,局部插值核,深度图和上下文特征来生成高质量的视频帧。

GitHub地址项目 GitHub 地址

9. 《OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields》

OpenPose 是用于多人 2D 姿势估计的开源实时系统,包括身体,脚,手和面部关键点。本文提出了一种用于检测图像和视频中的 2D 人体姿势的实时方法。

OpenPose represents the first real-time multi-person system to jointly detect human body, hand, facial, and foot keypoints (in total 135 keypoints) on single images.
OpenPose represents the first real-time multi-person system to jointly detect human body, hand, facial, and foot keypoints (in total 135 keypoints) on single images.

本文提出的方法使用了一种称为Part Affinity Fields(PAF)的非参数表示。本文的一些作者来自 IEEE。此方法将图像作为 CNN 的输入,并预测用于检测身体部位的置信度图和用于部位关联的 PAF。本文还开源了带有 15K 人脚实例的带注释脚数据集

GitHub地址项目 GitHub 地址

10. 《FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation》

本文提出了一种称为联合金字塔上采样(JPU)的联合上采样模块,以取代消耗大量时间和内存的膨胀卷积。它通过将提取高分辨率图的过程公式化为联合上采样问题而起作用。

联合金字塔上采样(JPU)
联合金字塔上采样(JPU)

该方法以全连接网络(FCN)为骨干,同时应用 JPU 对低分辨率的最终特征图进行上采样,从而得到高分辨率的特征图。用 JPU 取代膨胀的卷积不会导致性能损失。

GitHub地址项目 GitHub 地址

新一代 MNIST 数据集 – QMNIST

在机器学习研究中,MNIST 手写数字图像数据集已经作为基准使用了二十余年。该数据集虽然经典,但也存在测试集过小等问题。近日,来自 Facebook 和纽约大学的研究者重建并扩展了该数据集,在测试集中新增了 50,000 个样本。MNIST 作者之一的 Yann LeCun 在推特中表示

如果多次使用原版的 MNIST 测试集,你的模型可能在测试集上已经过拟合了。是时候在新增的样本上试一下了。

MNIST 数据集
MNIST 数据集

MNIST 是一个由 Yann Lecun 等人创建的手写数字图像数据集,是研究者研究机器学习、模式识别等任务的高质量数据库。它包含训练集和测试集,训练集包含 60,000 个样本,测试集包含 10,000 个样本。

MNIST 数据集抽取自 NIST 数据库。NIST 手写字符集第一个分区的发布要早一年,其训练集是由 2,000 名人口普查局雇员手写的,而测试集更加有挑战性,是由 500 名在校生手写的。

LeCun、Cortes 和 Burges 的其中一个目的是创建一个分布相似的训练集和测试集。据他们描述,这个过程产生了两个 60,000 个样本的集合。然后通过下采样将测试集样本数降低到 10,000 个,可能是因为用当时的电脑处理这样一个数据集会非常慢。剩余的 50,000 个样本从此就丢失了。

20 多年来,MNIST 数据集都被认为是标准的机器学习基准。在过去的十年来,许多研究者都表达过这个数据集已经被过度使用的观点。尤其是其测试集过小,只有 10,000 样本,这引起了很多担忧。数以百计的论文都依据这同一个测试集,得到的性能越来越高。那么模型是否已经在测试集上过拟合?我们还能否相信在该数据集上取得的新结论?机器学习数据集到底能用多久?

为了解决原版 MNIST 测试集过小等问题,来自 Facebook 和研究者决定重建该数据集。QMNIST 的 GitHub 页上提供了 Pytorch 平台的 QMNIST 数据加载器,需要将数据集下载至与 pytorch.py 相同的文件夹下将网络下载选项设置为 download=’True’。

from qmnist import QMNIST

# the qmnist training set, download from the web if not found
qtrain = QMNIST('_qmnist', train=True, download=True)

# the qmnist testing set, do not download.
qtest = QMNIST('_qmnist', train=False)

# the first 10k of the qmnist testing set with extended labels
# (targets are a torch vector of 8 integers)
qtest10k = QMNIST('_qmnist', what='test10k', compat=False, download='True')

# all the NIST digits with extended labels
qall = QMNIST('_qmnist', what='nist', compat=False)

它与标准的 Pytorch MNIST 数据加载器兼容。

GitHub地址项目 GitHub 地址

NLP 科研现状更新

一、资源简介

自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。

中科院自动化研究所自然语言处理团队负责人宗成庆研究员的报告从学科产生与发展、技术挑战、基本方法、应用举例、技术现状等多个视角对自然语言处理领域进行了全面梳理,以及对该学科未来发展方向的分析和展望。我们希望这份报告能够帮助读者了解学科发展的脉络,激发研究兴趣,思考核心问题,领悟未来走向。

作者团队主要研究方向包括自然语言处理基础任务、机器翻译、知识图谱、信息抽取、问答系统、情感分类、基于多模态信息融合的自然语言处理、类脑启发的自然语言处理方法研究等,在上述各方向上都进行了深入研究和探索,产出了一批优秀成果,包括三部专著:《统计自然语言处理》、《文本数据挖掘》和《知识图谱》。对该学科未来发展的趋势和方向进行了简要分析和展望。

二、主要内容目录

PPT 的提纲为:

  1. 学科产生与发展
  2. 技术挑战
  3. 基本方法
  4. 应用举例
  5. 技术现状
  6. 我们团队

三、资源分享

同时为了方便大家,我们把最新 《自然语言处理方法与应用》PDF 打包好了,可以直接下载。

开源 Python 爬虫网站秒搜所有豆瓣好书

程序员在提升自己的道路,大多还是会选择阅读编程书籍这一途径,但找到一本好书就没那么容易了。

通过查看各大销售网站的销量数据和评价,以及豆瓣评分和评价人数,可以帮助我们更快的挖掘出经典的计算机书籍,还有那些被人们忽视的好书。

为什么说它很好用呢?演示一遍你就知道了:

好书一下
好书一下

可以看出这网站的界面非常简洁,没有花里花哨的内容,只有干货,你可以直接通过关键字、分数、和评价人数这三个选项进行搜索,比如我们可以搜索关键字:编程;分数:9.0;评价人数:100 人以上

查找结果的显示方式有按照分数排序和人数排序两种,按照分数排序的截图如下:

分数排序
分数排序

按照评价人数排序的截图如下:

人数排序
人数排序

除了以上演示的操作,这个网站并实现了以下功能:

  • 可以爬下豆瓣读书标签下的所有图书
  • 按评分排名依次存储
  • 存储到 Excel 中,可方便大家筛选搜罗,比如筛选评价人数 >1000 的高分书籍;可依据不同的主题存储到 Excel 不同的 Sheet
  • 采用 User Agent 伪装为浏览器进行爬取,并加入随机延时来更好的模仿浏览器行为,避免爬虫被封

也就是说你不仅可以在网站上搜索,还能通过下载各类目下的 Excel 书单文件,直接在 Excel 中搜索

Excel书单文件
Excel书单文件

效果截图如下:

效果截图
效果截图

GitHub地址项目 GitHub 地址

旷视发布最大物体检测数据集

在 4 月 16 日的智源学者计划启动暨联合实验室发布会上,旷视科技发布了通用物体检测数据集Objects365,包含 63 万张图像,远超 ImageNet、COCO 等数据集。另外,还开办了针对此数据集的 CVPR Workshop 竞赛。数据集包括人、衣物、居室、浴室、厨房、办公、电器、交通、食物、水果、蔬菜、动物、运动、乐器 14 个大类,每一类都有数十个小类。

局部渐进稀疏技术自动驾驶新数据集

NuScenes 最新研究发布了一个大型自动驾驶数据集,该数据集是首个包括 5 个雷达,1 个激光雷达,6 个摄像头,IMU 和 GPS 在内的完整传感器套件的数据集。 NuTonomy场景(NuScenes)比 KITTI 数据集多出 7 倍和 100 倍的图像,涵盖 23 个类别,包括不同类型的车辆,行人,移动设备及其他对象。

研究人员还发明了一种新的 3D 方法来整合各种物体检测的类别和任务,包括对物体大小,分类,方向,本地化,速度和属性的检测和估计。针对激光雷达和图像检测方法的数据集分析和基线测试证明,尽管仅基于激光雷达和仅基于图像的物体检测都能达到物体识别的要求,但仅激光雷达的网络性能更为优越。

NuScenes 能够加速自动驾驶方面的研究和技术,从而推进物体识别技术,并使相关技术更加实用化。我们希望研究人员鼓励对于 NuScenes 的进一步探索,以使其能够运用所有传感器数据并利用语义地图来获得更好的性能。因为每个传感器模态都提供用于训练 3D 对象检测的补充特征。

清华 + 美图开源大规模视频分析数据集

互联网上有大量的教学视频,可以帮助我们完成各种各样的挑战,然而,大多数现有的教学视频分析数据集在多样性和规模上都存在局限性,而实际应用程序更加多样化,这使得这些数据集显得匮乏,此外,组织利用这些数据集仍然存在巨大挑战。

为了解决以上问题,清华大学和美图开源了教程类行为视频数据集 COINCOmprehensive INstructional video analysis)。COIN 数据集采用分层结构组织,包含 11,827 个视频,包含与我们日常生活相关的 12 个领域(如车辆、小玩意等) 180 个任务的视频内容。这些视频均来自 YouTube。视频的平均长度为 2.36 分钟。每个视频都标有 3.91 个片段,每个片段平均持续 14.91 秒。总的来说,数据集包含 476 小时的视频,带有 46,354 个带注释的段。

COmprehensive INstructional video analysis
COmprehensive INstructional video analysis

为了构建具有高度多样性的大型基准,我们提出了一种组织数据集的层次结构,分别为领域层、任务层、步骤层。

  • 领域层:对于第一级 COIN,共分为 12 个领域:护理和护工,车辆,休闲,小机械,电器,家居用品,科学与工艺、植物与水果、零食与饮料、运动与家务。
  • 任务层:链接到领域层,精细到具体的目的。比如“更换灯泡”与“安装吊扇”的二级分类都归属“电器”领域下。
  • 步骤层:第三级是完成不同任务的一系列不同步骤,例如,“拆卸灯罩”、“取出旧灯泡”、“安装新灯泡”、“安装灯罩”等步骤与“更换灯泡”任务相关联。

GitHub地址项目 GitHub 地址

大规模中文自然语言处理语料

中文的信息无处不在,但如果想要获得大量的中文语料,却是不太容易,有时甚至非常困难。在 2019 年初这个时点上 —— 普通的从业者、研究人员或学生,并没有一个比较好的渠道获得极大量的中文语料。笔者想要训练一个中文的词向量,在百度和 Github 上上搜索了好久,收获却很少:要么语料的量级太小,要么数据过于成旧,或需要的处理太复杂。

为此,徐亮创建了一个中文自然语言处理语料库项目:nlp_chinese_corpus ,初步贡献了几个已经预处理好的中文语料,包括维基、新闻和百科语料。包括 ——

  1. 维基百科(wiki2019zh),100万个结构良好的中文词条;
  2. 新闻语料(news2016zh),250万篇新闻,含关键词、描述;
  3. 百科问答(baike2018qa),150万个带问题类型的问答;
  4. 社区问答json版(webtext2019zh),410万个高质量社区问答,适合训练超大模型;
  5. 翻译语料(translation2019zh),520万个中英文句子对;

GitHub地址项目 GitHub 地址