-
常规符号函数的梯度几乎处处为零,不能用于反向传播。为此,来自华为诺亚方舟实验室等机构的研究者提出一种在频域中估计原始符号函数梯度的新方法。二值神经网络(BNN)将原始全精度权重和激活用符号函数表征成 1-bit。但是由于常规符号函数的梯度几乎处处为零,不能用于反向传播,因此一些研究已经提出尝试使用近似梯度来减轻优化难度。然而,这些近似破坏了实际梯度的主要方向。 基于此,在一篇 NeurIPS 2021 论文中,来自华为诺亚方舟实验室等机构的研究者提出使用傅里叶级数的组合来估计频域中符号函数的梯度以训练 BNN,即频域逼近 (FDA)。所提方法不影响占整体能量大部分的原始符号函数的低频信息,并且将高频系数使用噪声拟合模块 (noise adaptation module) 进行估计以避免大量的计算开销。 论文地址:https://arxiv.org/pdf/2103.00841.pdf 在几个基准数据集和神经架构上的实验表明,使用该方法学习的二值网络实现了 SOTA 准确率。 数日前,在机器之心 2021 NeurIPS MeetUp China 上,论文一作许奕星为参会者解读了该论文。 方法 该研究提出的 FDA 方法,通过利用傅里叶级数 (FS) 来估计频域中的原始符号函数,FS 估计是使用无穷项时符号函数的无损表征。在实际应用中,能量相对较低的高频系数会被忽略,以避免巨大的计算开销,并将符号函数表征为固定数量的不同周期正弦函数的组合。与现有的逼近方法相比,该研究所提出的频域逼近方法不影响原始符号函数的低频域信息,即占用符号函数能量最多的部分。因此,原始符号函数相应梯度的主要方向能够被更准确地保持。 在论文中,该研究对所提方法做了详细的理论表述。 论文中用 f(·)和 f’(·)来表示原始函数及其对应的梯度函数。由于符号函数的梯度是一个无法反向传播的脉冲函数,需要应用进化算法(evolutionary algorithm)等零阶算法来达到最优解,但这是非常低效的。因此该研究提出找到一个代理函数,通过一阶优化算法(如 SGD)依靠实验求解,而理论上具有与符号函数相同的最优解。 已有研究证明,任何周期为 T 的周期信号都可以分解为傅里叶级数的组合: 然后该研究进一步证明了随着 n 的增加,估计值和 s(t)之间的均方误差会逐渐减小,并在 n → ∞ 时收敛到 0。 为了进一步补偿细微的逼近误差,该研究在训练阶段添加了一个噪声适应模块来细化梯度。 实验及结果 为了展示 FDA-BNN 优越的性能,该研究在 CIFAR-10 数据集上进行了评估实验,实验结果如下表所示。 消融实验 为了验证所提方法中每个组件的有效性、噪声适应模块和超参数的影响,该研究进行了一系列的消融实验。 首先,该研究使用 ResNet-20 架构在 CIFAR-10 上实验验证正弦模块和噪声适应模块的效果,结果如下表所示。 从上表的结果看,使用正弦模块可使训练过程受益,将准确率从 84.44% 提高到 85.83%。将正弦模块和噪声自适应模块组合在一起时得到了最佳性能,即 86.20% 的准确率。 为了进一步验证噪声适应模块的用途,研究者将该模块添加到其他梯度逼近方法中,例如 DSQ 和 BNN+,结果如下表所示。 然后该研究评估了不同 η(·) 对噪声适应模块的影响。结果如下表所示,使用 shortcut 时性能更好,并且 shortcut function η(x) = α sin(x) 在实验过程中表现最好。 在 ImageNet 上的实验 该研究进一步在大规模数据集 ImageNet ILSVRC 2012 上进行了实验,使用 ResNet-18 和 AlexNet 进行实验,结果如下表所示。 对于 ResNet-18,FDA-BNN 实现了 60.2% 的 top-1 准确率和 82.3% 的 top-5 的准确率,比基线方法(Bireal-Net + PReLU)高出 1.2% 和 1.0%,并超过所有其他方法。 当以 ReActNet 作为基线方法,并使用该研究所提方法计算符号函数的梯度, FDA-BNN 达到了 66.0% 的 top-1 准确率,86.4% 的 top-5 准确率,比基线方法分别高出 0.5% 和 0.3%。 对于 AlexNet,该研究使用 Dorefa-Net 中的量化方法作为基线方法,FDA-BNN 实现了 46.2% 的 top-1 准确率和 69.7% 的 top-5 准确率,并优于其他 SOTA 方法。
-
Fast-SCNN由4部分构成,Learning to Down-sample(学习下采样),Global Feature Extractor(全局特征提取), Feature Fusion(特征融合), Classifier(分类器)。Learning to Down-sample,一个普通的卷积层Conv2D,两个depthwise separable卷积层(DSConv)。Global Feature Extractor,用于抓取图像分割的全局特征。与普通multi-branch方法不同,该模块对于低分辨率图像进行处理。Feature Fusion,融合特征,并且是以相对简单方式融合两个分支的特征,确保效率。Classifier,两个depthwise separable卷积层(DSConv),一个pointwise卷积层(Conv2D),包含一个softmax操作。此外,在梯度下降计算中,用argmax将softmax替代,以提高计算效率。Fast-SCNN的创新点主要在以下两个方面:“学习下采样”(Learning to Down-sample)和encoder-decoder中的 skip connection类似,确保了低层次特征能被有效地共享和使用,共三层。Fast-SCNN还借鉴了MobileNet的depthwise separable convolution和 residual bottleneck block,来降低计算成本和内存消耗。
-
1.3 数据预处理数据预处理,其实就是对数据进行清理、数据整理或普通数据处理。指对数据进行各种检查和校正过程,以纠正缺失值、拼写错误、使数值正常化/标准化以使其具有可比性、转换数据(如对数转换)等问题。例如对图像进行resize成统一的大小或者分辨率。 数据的质量将对机器学习算法模型的质量好坏产生很大的影响。因此,为了达到最好的机器学习模型质量,传统的机器学习算法流程中,其实很大一部分工作就是在对数据进行分析和处理。一般来说,数据预处理可以轻松地占到机器学习项目流程中80%的时间,而实际的模型建立阶段和后续的模型分析大概仅占到剩余的20%。1.4 数据分割训练集 & 测试集在机器学习模型的开发流程中,希望训练好的模型能在新的、未见过的数据上表现良好。为了模拟新的、未见过的数据,对可用数据进行数据分割,从而将已经处理好的数据集分割成2部分:训练集合测试集。第一部分是较大的数据子集,用作训练集(如占原始数据的80%);第二部分通常是较小的子集,用作测试集(其余20%的数据)。接下来,利用训练集建立预测模型,然后将这种训练好的模型应用于测试集(即作为新的、未见过的数据)上进行预测。根据模型在测试集上的表现来选择最佳模型,为了获得最佳模型,还可以进行超参数优化。训练集 & 验证集 & 测试集另一种常见的数据分割方法是将数据分割成3部分:1)训练集,2)验证集和3)测试集。训练集用于建立预测模型,同时对验证集进行评估,据此进行预测,可以进行模型调优(如超参数优化),并根据验证集的结果选择性能最好的模型。验证集的操作方式跟训练集类似。不过值得注意的是,测试集不参与机器学习模型的建立和准备,是机器学习模型训练过程中单独留出的样本集,用于调整模型的超参数和对模型的能力进行初步评估。通常边训练边验证,这里的验证就是用验证集来检验模型的初步效果。交叉验证实际上数据是机器学习流程中最宝贵的,为了更加经济地利用现有数据,通常使用N倍交叉验证,将数据集分割成N个。在这样的N倍数据集中,其中一个被留作测试数据,而其余的则被用作建立模型的训练数据。通过反复交叉迭代的方式来对机器学习流程进行验证。这种交叉验证的方法在机器学习流程中被广泛的使用,但是深度学习中使用得比较少哈。1.5 机器学习算法建模下面是最有趣的部分啦,数据筛选和处理过程其实都是很枯燥乏味的,现在可以使用精心准备的数据来建模。根据taget变量(通常称为Y变量)的数据类型,可以建立一个分类或回归模型。机器学习算法机器学习算法可以大致分为以下三种类型之一:监督学习:是一种机器学习任务,建立输入X和输出Y变量之间的数学(映射)关系。这样的(X、Y)对构成了用于建立模型的标签数据,以便学习如何从输入中预测输出。 无监督学习:是一种只利用输入X变量的机器学习任务。X变量是未标记的数据,学习算法在建模时使用的是数据的固有结构。 强化学习:是一种决定下一步行动方案的机器学习任务,它通过试错学习(trial and error learning)来实现这一目标,努力使reward回报最大化。参数调优传说中的调参侠主要干的就是这个工作啦。超参数本质上是机器学习算法的参数,直接影响学习过程和预测性能。由于没有万能的超参数设置,可以普遍适用于所有数据集,因此需要进行超参数优化。以随机森林为例。在使用randomForest时,通常会对两个常见的超参数进行优化,其中包括mtry和ntree参数。mtry(maxfeatures)代表在每次分裂时作为候选变量随机采样的变量数量,而ntree(nestimators)代表要生长的树的数量。另一种在10年前仍然非常主流的机器学习算法是支持向量机SVM。需要优化的超参数是径向基函数(RBF)内核的C参数和gamma参数。C参数是一个限制过拟合的惩罚项,而gamma参数则控制RBF核的宽度。调优通常是为了得出超参数的较佳值集,很多时候不要去追求找到超参一个最优值,其实调参侠只是调侃调侃,真正需要理解掌握算法原理,找到适合数据和模型的参数就可以啦。特征选择特征选择从字面上看就是从最初的大量特征中选择一个特征子集的过程。除了实现高精度的模型外,机器学习模型构建最重要的一个方面是获得可操作的见解,为了实现这一目标,能够从大量的特征中选择出重要的特征子集非常重要。特征选择的任务本身就可以构成一个全新的研究领域,在这个领域中,大量的努力都是为了设计新颖的算法和方法。从众多可用的特征选择算法中,一些经典的方法是基于模拟退火和遗传算法。除此之外,还有大量基于进化算法(如粒子群优化、蚁群优化等)和随机方法(如蒙特卡洛)的方法。性能指标如何知道训练出来的机器学习模型表现好或坏?就是使用性能评价指标(metrics),一些常见的评估分类性能的指标包括准确率(AC)、灵敏度(SN)、特异性(SP)和马太相关系数(MCC)。回归最简单的回归模式,可以通过以下简单等式很好地总结:Y = f(X)。其中,Y对应量化输出变量,X指输入变量,f指计算输出值作为输入特征的映射函数(从机器学习模型中得到)。上面的回归例子公式的实质是,如果X已知,就可以推导出Y。一旦Y被计算(预测)出来,一个流行的可视化方式是将实际值与预测值做一个简单的散点图,如下图所示。对回归模型的性能进行评估,以评估拟合模型可以准确预测输入数据值的程度。评估回归模型性能的常用指标是确定系数(R²)。此外,均方误差(MSE)以及均方根误差(RMSE)也是衡量残差或预测误差的常用指标。下面是机器学习算法的主要流程:主要从1)数据集准备、2)数据预处理、3)数据分割、4)定义神经网络模型,5)训练网络。深度学习不需要我们自己去提取特征,而是通过神经网络自动对数据进行高维抽象学习,减少了特征工程的构成,在这方面节约了很多时间。但是同时因为引入了更加深、更复杂的网络模型结构,所以调参工作变得更加繁重啦。例如:定义神经网络模型结构、确认损失函数、确定优化器,最后就是反复调整模型参数的过程。MindSpore官方资料GitHub : https://github.com/mindspore-ai/mindsporeGitee : https : //gitee.com/mindspore/mindspore官方QQ群 : 486831414
-
配置运行信息MindSpore通过mindspore.context下的set_context方法来配置运行需要的信息,如运行模式、后端信息、硬件等信息。import argparse from mindspore import context # 配置脚本参数 parser = argparse.ArgumentParser(description='MindSpore LeNet Example') ## 配置运行环境参数,Mindspore支持的三种运行环境分别为'Ascend','GPU','CPU',默认运行环境是'CPU'。 parser.add_argument('--device_target', type=str, default="CPU", choices=['Ascend', 'GPU', 'CPU']) # 设置运行环境 args = parser.parse_known_args()[0] ##device_target根据脚本信息(--device_target)配置硬件信息;mode设置运行模式(动静态图模式) context.set_context(mode=context.GRAPH_MODE, device_target=args.device_target)配置数据MNIST数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。MNIST数据集下载页面,数据文件按下方目录结构放置:./datasets/MNIST_Data├── test│........├── t10k-images-idx3-ubyte│........└── t10k-labels-idx1-ubyte└── train|.........├── train-images-idx3-ubyte|.........└── train-labels-idx1-ubyte2 directories, 4 files数据处理mindspore.dataset是MindSpore提供的用于数据处理的API模块。它的主要功能是存储样本和标签,同时也集成了一些常见的数据处理方法。定义数据集mindspore.dataset.MnistDataset以特定格式(MnistDataset)对数据进行读取。定义map映射mindspore.dataset.vision.c_transforms(.Resize/ .Rescale/ .HWC2CWH)设置数据将要转换成的格式(改变尺寸,缩放,偏移)。mindspore.dataset.transforms.c_transform(.TypeCast)转换数据类型。map映射mindspore.dataset.MnistDataset下的map方法。根据上一步定义好的格式,将数据转换成mindspore.dataset.MnistDataset的格式。数据结构重组mindspore.dataset.MnistDataset下的shuffle方法打乱数据顺序。mindspore.dataset.MnistDataset下的batch方法设置批量。import mindspore.dataset as ds import mindspore.dataset.transforms.c_transforms as C import mindspore.dataset.vision.c_transforms as CV from mindspore.dataset.vision import Inter from mindspore import dtype as mstype def create_dataset(data_path, batch_size=32, repeat_size=1, num_parallel_workers=1): # 定义数据集 mnist_ds = ds.MnistDataset(data_path) resize_height, resize_width = 32, 32 rescale = 1.0 / 255.0 shift = 0.0 rescale_nml = 1 / 0.3081 shift_nml = -1 * 0.1307 / 0.3081 # 定义map映射 resize_op = CV.Resize((resize_height, resize_width), interpolation=Inter.LINEAR) rescale_nml_op = CV.Rescale(rescale_nml, shift_nml) rescale_op = CV.Rescale(rescale, shift) hwc2chw_op = CV.HWC2CHW() type_cast_op = C.TypeCast(mstype.int32) # map映射函数 mnist_ds = mnist_ds.map(operations=type_cast_op, input_columns="label", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=resize_op, input_columns="image", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=rescale_op, input_columns="image", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=rescale_nml_op, input_columns="image", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=hwc2chw_op, input_columns="image", num_parallel_workers=num_parallel_workers) # shuffle、batch操作 buffer_size = 10000 mnist_ds = mnist_ds.shuffle(buffer_size=buffer_size) ##batch_size为每组包含的数据个数(32)。 mnist_ds = mnist_ds.batch(batch_size, drop_remainder=True) return mnist_ds除了这些基本操作外,Mindspore还支持多种数据处理和数据增强的操作。另外,MindSpore还提供了处理自定义数据集的mindspore.dataset.GeneratorDataset,具体教程可参考链接内容.创建模型定义运算(_init_方法)mindspore.nn.Cell是所有神经网络的基类,所以定义神经网络时要继承mindspore.nn.Cell。mindspore.nn(.Conv2d/.Flatten/.Dense/.ReLU/.Maxpool2D)配置网络结构(卷积,压平,全连接,激活函数,最大池化)。mindspore.common.initializer下的Normal类配置初始权重(正态分布)。构建向前网络(construct方法)根据上一步定义的层来完成LeNet网络的前向构造,最后实例化网络(LeNet())。import mindspore.nn as nn from mindspore.common.initializer import Normal class LeNet5(nn.Cell): """ Lenet网络结构 """ def __init__(self, num_class=10, num_channel=1): super(LeNet5, self).__init__() # 定义所需要的运算 self.conv1 = nn.Conv2d(num_channel, 6, 5, pad_mode='valid') self.conv2 = nn.Conv2d(6, 16, 5, pad_mode='valid') self.fc1 = nn.Dense(16 * 5 * 5, 120, weight_init=Normal(0.02)) self.fc2 = nn.Dense(120, 84, weight_init=Normal(0.02)) self.fc3 = nn.Dense(84, num_class, weight_init=Normal(0.02)) self.relu = nn.ReLU() self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2) self.flatten = nn.Flatten() def construct(self, x): # 使用定义好的运算构建前向网络 x = self.conv1(x) x = self.relu(x) x = self.max_pool2d(x) x = self.conv2(x) x = self.relu(x) x = self.max_pool2d(x) x = self.flatten(x) x = self.fc1(x) x = self.relu(x) x = self.fc2(x) x = self.relu(x) x = self.fc3(x) return x #实例化网络 net = LeNet5()需要更多信息请参考构造神经网络优化模型参数定义损失函数mindspore.nn.SoftmaxCrossEntropyWithLogits,其他可选择的损失函数。定义优化器mindspore.nn.Momentum,其他可选择的优化器。# 定义损失函数 net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') # 定义优化器 net_opt = nn.Momentum(net.trainable_params(), learning_rate=0.01, momentum=0.9)需要更多信息请参考损失函数,优化器训练及保存模型Callback机制mindspore.train.callback下的CheckpointConfig类用来设置保存模型参数,ModelCheckpoint类用来应用模型保存参数,LossMoniter类可以监控Loss值的变化。Mindspore提供了Callback机制,可以在训练过程中执行自定义逻辑,更多信息请参考Callback机制,本例中使用了ModelCheckpoint类,ModelCheckpoint可以保存模型和参数,方便后续的Fine-tuning操作更加。from mindspore.train.callback import ModelCheckpoint, CheckpointConfig # 设置模型保存参数 config_ck = CheckpointConfig(save_checkpoint_steps=1875, keep_checkpoint_max=10) # 应用模型保存参数 ckpoint = ModelCheckpoint(prefix="checkpoint_lenet", config=config_ck)定义训练方法mindspore下的Model类的train方法是用于网络训练的接口,model是基于net(LeNet5()实例),net_loss(损失函数)以及net_opt(优化器)所创建的实例。mindspore还提供了自定义训练的API(TrainOneStepCell),更多信息参见教程链接。# 导入模型训练需要的库 from mindspore.nn import Accuracy from mindspore.train.callback import LossMonitor from mindspore import Model def train_net(args, model, epoch_size, data_path, repeat_size, ckpoint_cb, sink_mode): """定义训练的方法""" # 加载训练数据集 ds_train = create_dataset(os.path.join(data_path, "train"), 32, repeat_size) ##dataset_sink_mode用于控制数据时候下沉,数据下沉是指数据通过通道直接传到Device上, ##可以加快训练速度,True表示数据下沉。 model.train(epoch_size, ds_train, callbacks=[ckpoint_cb, LossMonitor()], dataset_sink_mode=sink_mode)定义验证方法mindspore下的Model类的eval方法读入测试数据集。#通过模型运行测试数据集得到的结果,验证模型的泛化能力。 def test_net(network, model, data_path): """定义验证的方法""" ds_eval = create_dataset(os.path.join(data_path, "test")) #使用model.eval接口读入测试数据集。使用保存后的模型参数进行推理。 acc = model.eval(ds_eval, dataset_sink_mode=False) print("{}".format(acc))训练和验证mindspore.nn.Accuracy计算模型预测的准确率。#对数据集进行1个迭代的训练 train_epoch = 1 #原始数据集路径 mnist_path = "./datasets/MNIST_Data" dataset_size = 1 model = Model(net, net_loss, net_opt, metrics={"Accuracy": Accuracy()}) train_net(args, model, train_epoch, mnist_path, dataset_size, ckpoint, False) test_net(net, model, mnist_path)命令行运行脚本运行信息#lenet.py:教程中编写的脚本文件。 #--device_target:指定运行硬件平台,参数为CPU、GPU或者Ascend。 python lenet.py --device_target=CPU#训练过程中会打印loss值,loss值会波动,但总体来说loss值会逐步减小,精度逐步提高。 #每个人运行的loss值有一定随机性,不一定完全相同。 epoch: 1 step: 1, loss is 2.3025916 epoch: 1 step: 2, loss is 2.302577 ... epoch: 1 step: 1871, loss is 0.048939988 epoch: 1 step: 1872, loss is 0.028885357 epoch: 1 step: 1873, loss is 0.09475248 epoch: 1 step: 1874, loss is 0.046067055 epoch: 1 step: 1875, loss is 0.12366105 {'Accuracy': 0.9663477564102564}可以在打印信息中看出模型精度数据,示例中模型的预测精度数据约为96.6%,模型质量良好。如果希望模型精度会进一步提高,可以增加网络迭代次数train_epoch或调整学习率变化策略。加载模型加载参数mindspore.load_checkpoint加载已经保存的用于测试的模型。参数载入网络mindspore.load_param_into_net加载参数到网络中。from mindspore import load_checkpoint, load_param_into_net # 加载已经保存的用于测试的模型 param_dict = load_checkpoint("checkpoint_lenet-1_1875.ckpt") # 加载参数到网络中 load_param_into_net(net, param_dict)需要更多信息详见保存及加载模型验证模型本例使用生成的模型对单个图片进行分类图片预测mindspore下的Model类的predict方法用来进行预测。classes = [ "Zero", "One", "Two", "Three", "Four", "Fives", "Six", "Seven", "Eight", "Nine", ] # image为测试图片,label为测试图片的实际分类 image, label = test_data[0][0], test_data[0][1] # 使用函数model.predict预测image对应分类 pred = model.predict(image) predicted, actual = classes[pred[0].argmax(0)], classes[label] # 输出预测分类与实际分类 print(f'Predicted: "{predicted}", Actual: "{actual}"')运行结果Predicted: "Eight", Actual: "Eight"-------------------------------------------------------------------------------------------------------------------------作者:0moonstar0原文链接:https://www.jianshu.com/p/5aa04d77c213
-
2021年10月21日晚上19:00,举行华为云AI论文精读会2021第二十期:轻量化神经网络MobileNet系列论文精读。本期邀请到的嘉宾是:张子豪,同济大学交通运输工程硕士研究生,研究方向为计算机视觉、深度学习、目标检测、计算教育学。华为云ModelArts、华为云DevCloud、网络人工智能引擎NAIE、华为昇腾AI开发者博主。B站UP主“同济子豪兄”。本次论文精读的领域是CV领域,感兴趣的小伙伴点击下方的链接一起观看学习吧~讲解内容:谷歌移动端轻量化卷积神经网络MobileNet V1、V2、V3的设计哲学、技术演进和前沿发展趋势。Notebook中使用Keras深度学习框架的MobileNet预训练模型,对图像和视频进行图像分类,并调用摄像头实时预测。华为云AI论文精读会致力于让更多人低门槛使用经典算法,助力AI开发者基于ModelArts,实现高效率论文复现和挑战!本期视频:https://bbs.huaweicloud.com/live/cloud_live/202110211900.html华为云AI论文精读会2021·论文算法实战赛报名地址:https://competition.huaweicloud.com/information/1000041393/introduction
-
前言大家好,我们团队名称是我要拿十万,很高兴跟大家交流“华为云杯”2020人工智能创新应用大赛的比赛心得,我们团队的三个成员都来自西安交通大学。本文将从解题思路、数据处理、模型结构三个方面进行介绍。解题思路充分使用所给数据使用模型提取图像高分辨率表示数据处理训练前,数据准备减小切割图片大小和步长,将baseline中图片切割步长由992变为256,切割大小由1024x1024变为512x512,剔除无效数据,去除只含有背景的训练数据对;最终有效数据增加至24000张,之后按照7:3的比例划分为训练集和验证集;训练过程中,数据增强随机对训练数据进行gamma变换、随机角度旋转、随机水平翻转、均值滤波、增加噪声,亮度、对比度、饱和度、颜色等随机变化;通过数据增强,提高了训练数据的丰富性,一定程度上抑制了过拟合现象;推理过程中,膨胀预测因为推理图像比较大,在推理过程中需要对图像进行切割和拼接,为了避免因为对切割图像边缘处特征提取出现问题,使用膨胀预测;首先对推理图像进行填充,每次推理步长为512,推理图片大小为1024,只保留中心512大小的部分,最终拼接得到推理结果。网络模型使用HRNetv2_w48作为分割网络,对于每张图片,使用一个主干网络对其提取特征,得到不同层级的特征之后,通过上采样,将这些不同层级不同大小的特征拼接到一起,之后经过一个卷积层,batchnorm层,relu激活层,得到最终用于分割的特征,最后将得到的特征经过卷积层,softmax,上采样等操作,得到最终的分割结果;因为我们的思路是使用模型提取图片的高分辨率表示,因此使用hrnet作为特征提取网络,hrnet在整个特征提取过程中并行链接高分辨率卷积到低分辨率卷积,从而在整个过程中保持高分辨率表示;同时通过在平行卷积上重复进行融合,产生强的高分辨率表示;通过使用hrnet,得到图片的强分辨率表示,我们最终得到良好的分割结果。参考资料:[1] Sun K, Zhao Y, Jiang B, et al. High-resolution representations for labeling pixels and regions[J]. arXiv preprint arXiv:1904.04514, 2019.[2] Long J, Shelhamer E, Darrell T. Fully convolutional networks for semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 3431-3440.[3] 王梦灵,姚宝敬.新基建浪潮下应用AI遥感技术实现城市管理创新[J].张江科技评论,2020(03):64-65.[4] 邢逸帆.AI养猪、遥感杀虫和卫星种粮 智慧农业中国新希望[J].农业工程技术,2019,39(27):63-66.[5] open-mmlab/mmsegmentation https://github.com/open-mmlab/mmsegmentation[6] wangye707/ICNet-paddlepaddle https://github.com/wangye707/ICNet-paddlepaddle[7] 深度学习入门之Pytorch——数据增强 https://blog.csdn.net/weixin_40793406/article/details/84867143[8] 【Keras】基于SegNet和U-Net的遥感图像语义分割 https://www.cnblogs.com/skyfsm/p/8330882.html[9]使用神经网络(ICNet)对航拍图片(遥感图像)进行图像语义分割(数据集+代码+最终训练模型)https://blog.csdn.net/qq_28626909/article/details/106489285本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=d2717986-bceb-4b83-a3ae-7305503b81d3本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
2022年新年伊始,畅想人工智能算法的未来,除了最主流的深度学习模型之外,还有哪些潜在的突破口呢?最近在Reddit 看到有人列举了10个方向。参见:https://www.reddit.com/r/MachineLearning/comments/rq6uih/d_other_ai_methodsalgorithms_except_deep_neural/有:千脑理论、自由能原理、Testlin机器、层级实时存储算法等等,笔者根据其列出的参考路径,并且补充了来自维基百科、集智百科等相关的介绍内容,将这10个方向做了一个摘要性的内容简介,分享给大家。希望能抛砖引玉,欢迎大家就文中的方向提出您的见解,或者补充文中为体积的新方向。千脑理论 The Thousand Brains Theory人类大脑如何工作?千脑智能理论是近年涌现的一个非常有影响力的理论。2021年11月,比尔盖茨公布了心目中的2021年度5本必读好书,排第一位的便是《A Thousand Brains: A New Theory of Intelligence》,作者是Jeff Hawkins 。支撑这本书的重要论文,是发表于2018年的A Framework for Intelligence and Cortical Function Based on Grid Cells in the Neocortex(基于新皮层网格细胞的智能和大脑皮层功能框架),论文地址:Frontiers | A Theory of How Columns in the Neocortex Enable Learning the Structure of the World | Frontiers in Neural Circuits千脑理论描述了一个通用的框架,用于理解新皮质的作用及其工作原理,该理论认为,新皮质并不是只学习了关于世界的一个模型,而是每一部分都学习了一份世界完整的物体与概念模型。 然后新皮层中的长程连接允许模型们协同工作,来构建你对世界的整体感知。该论文还预测了一种称为“移位细胞”(displacement cells)的新型神经元的出现,它与皮质网格细胞相互作用以表示物体相对于彼此的位置。2021年6月,Jeff Hawkins 曾经出席北京智源大会,发表了题为「The Thousand Brains Theory - A roadmap for creating machine intelligence」的演讲,这是关于演讲内容的详细介绍:真正实现与人更类似的智能!Jeff Hawkins:创造机器智能的路线图自由能原理 Free energy principle自由能原理 Free energy principle是一个正式的陈述,它解释了生物系统和非生物系统如何通过将自己限制在有限的几个状态而保持在非平衡稳态。它表明系统最小化了内部状态的自由能函数,而内部状态包含了对环境中隐藏状态的信任。自由能的内隐最小化在形式上与变分贝叶斯方法 Variational Bayesian methods有关,最初由Karl Friston引入,作为神经科学中对具身知觉的解释,在那里它也被称为“主动推理”。自由能原理解释了一个给定系统的存在,它通过一个马尔可夫毯 Markov blanket建模,试图最小化他们的世界模型和他们的感觉和相关知觉之间的差异。这种差异可以被描述为”出其不意” ,并通过不断修正系统的世界模型来减少这种差异。因此,这个原理是基于贝叶斯的观点,即大脑是一个“推理机”。弗里斯顿为最小化增加了第二条路线: 行动。通过积极地将世界改变为预期的状态,系统也可以使系统的自由能最小化。弗里斯顿认为这是所有生物反应的原理。弗里斯顿还认为,他的原则即适用于精神障碍也适用于人工智能。基于主动推理原则的人工智能实现比其他方法显示出优势。(摘自集智百科:什么是自由能原理 | 集智百科 | 集智俱乐部)自由能原理,是一个公认非常晦涩的概念,下面是基于自由能原理、进行“主动推理”的示例说明,非常细腻、翔实:Learn by example: Active Inference in the brain -1 | KaggleTstelin 机器 Tsetlin machine源自上世纪50年代,前苏联数学家Tsetlin提出了可进行学习的自动机,此种类型的自动机可以通过从学习数据中改变自身的状态转换函数的概率来对数据进行学习,并可以使用自身的状态来编码信息,不同于神经网络,这种自动机天然的具有对数据进行时序编码的特性,且具有良好的可解释性。(摘自:未来智能趋势:自动机与神经网络 - 知乎)但纽卡斯尔大学高级讲师Rishad Shafik认为:“学习自动机几乎不可能在硬件上实现,因为有大量的状态需要去适应”。挪威阿格德大学的AI教授Ole-Christoffer Granmo,通过将学习自动机与经典的博弈论和布尔代数相结合,找到了一种降低学习自动机复杂性的方法。他将简化版的学习自动机应用到软件中,并以该学科创始人的名字将其命名为“Tsetlin机器”(Tsetlin machine)。(摘自:Tsetlin机器和神经网络之间的功耗差别 - 人工智能 - 电子发烧友网)这是挪威阿哥德大学Ole-Christoffer Granmo建立的关于Tstelin机器的网站:Home - An Introduction to Tsetlin Machines上面刊登了他正在撰写的新书《An Introduction to Tsetlin Machines》,目前可以下载第1章:http://tsetlinmachine.org/wp-content/uploads/2021/09/Tsetlin_Machine_Book_Chapter_1-4.pdf层级实时存储算法 Hierarchical temporal memory层级实时存储算法(HTM)是一种由Numenta开发的生物约束机器智能技术。HTM最初在2004年 Jeff Hawkins 和 Sandra Blakeslee合著的《On Intelligence》一书中有所描述,目前主要用于流数据中的异常检测。该技术基于神经科学以及哺乳动物(特别是人类)大脑新皮层中锥体神经元的生理学和相互作用。HTM 的核心是学习算法,它可以存储、学习、推断和调用高阶序列。与大多数其他机器学习方法不同,HTM不断学习(在无监督过程中)未标记数据中基于时间的模式。HTM对噪声具有鲁棒性,并且具有高容量(它可以同时学习多种模式)。当应用于计算机时,HTM非常适合预测,异常检测,分类以及最终的感觉运动应用。HTM已经通过Numenta的示例应用程序和Numenta合作伙伴的一些商业应用程序在软件中进行了测试和实施。 (以上翻译自维基百科:https://en.wikipedia.org/wiki/Hierarchical_temporal_memory)这里是Numenta公司(Jeff Hawkins所创)关于HTM的相关研究论文、代码和数据:https://github.com/numenta/htmpapers脉冲神经网络 Spiking Neural Networks脉冲神经网络Spiking neuralnetworks (SNNs)是第三代神经网络模型,其模拟神经元更加接近实际,除此之外,把时间信息的影响也考虑其中。思路是这样的,动态神经网络中的神经元不是在每一次迭代传播中都被激活(而在典型的多层感知机网络中却是),而是在它的膜电位达到某一个特定值才被激活。当一个神经元被激活,它会产生一个信号传递给其他神经元,提高或降低其膜电位。在脉冲神经网络中,神经元的当前激活水平(被建模成某种微分方程)通常被认为是当前状态,一个输入脉冲会使当前这个值升高,持续一段时间,然后逐渐衰退。出现了很多编码方式把这些输出脉冲序列解释为一个实际的数字,这些编码方式会同时考虑到脉冲频率和脉冲间隔时间。(上文摘自:process-z.com,脉冲神经网络Spiking neural network_张竞成的博客-CSDN博客_spiking神经网络)这篇文章Spiking Neural Networks(Spiking Neural Networks | Simons Institute for the Theory of Computing),对脉冲神经网络的研究历史、主要贡献者、现状和问题、相关数据集等作了比较好的梳理。联想记忆 / 预测编码 Associative Memories via Predictive Coding思路来自这篇论文 Associative Memories via Predictive Coding:https://arxiv.org/abs/2109.08063联想记忆模型,是借鉴了人类大脑神经元存储、关联以及检索信息的模式。由于在人类智能中的重要性,联想记忆的计算模型已经发展了几十年,包括自动关联存储器,允许存储数据点和检索存储的数据点s当提供噪声或部分变体时s和异质关联记忆,能够存储和调用多模态数据。在上面的论文中,作者们提出了一种用于实现联想记忆的新型神经模型,该模型基于通过感觉神经元接收外部刺激的分层生成网络。该模型使用预测编码进行训练,预测编码是一种基于错误(error-based)的学习算法,其灵感来自皮层中的信息处理。分形人工智能 Ractal AI分形AI,通过使用类似细胞自动机的结构而不是平滑函数对信息进行建模,它可以衍生出新的数学工具,这些工具构成了一种新的随机演算基础。这篇论文(参见:https://github.com/Guillemdb/FractalAI),介绍了一种新代理(分形蒙特卡洛),它源自Ractal AI的第一原理(参见:https://github.com/Guillemdb/FractalAI/blob/master/introduction_to_fai.md),能够比其他类似技术(如蒙特卡罗树搜索)更有效地支持OpenAI Gym下的Atari-2600游戏;此外该论文还宣称提出了更先进的Swarm Wave实现,也来自分形AI原理,允许人们在环境的完美/信息模型下求解马尔可夫决策过程。超维计算 Hyperdimensional Computing超维计算(HDC)是一种新兴的计算方法,受到人脑神经活动模式的启发。这种独特的计算类型可以使人工智能系统根据以前遇到的数据或场景保留内存并处理新信息。为了对神经活动模式进行建模,HDC系统使用丰富的代数,该代数定义了一组规则来构建,绑定和捆绑不同的超向量。超向量是具有独立且分布相同的分量的全息10,000维(伪)随机向量。通过使用这些超向量,HDC可以创建功能强大的计算系统,该系统可用于完成复杂的认知任务,例如对象检测,语言识别,语音和视频分类,时间序列分析,文本分类和分析推理。(摘自:一种超维计算系统,可在内存中执行所有核心计算_腾讯新闻)这里是关于超维计算项目的资源集合:https://github.com/HyperdimensionalComputing/collection双曲机器学习 Hyperbolic Neural Networks详见这篇NeurIPS2018 论文 Hyperbolic Neural Networks(https://arxiv.org/abs/1805.09112)介绍,用构造双曲几何空间的形式,将深度神经模型泛化到非欧领域。双曲空间的优势,是其树形特性可被用于可视化大型的分类数据或者嵌入复杂网络,同时在分层、分类或者继承数据上的表现远远超过了欧式空间。在隐含的分层结构中,不相交的子树在嵌入空间中得到了很好的聚类。这篇论文的主要贡献是在神经网络和深度学习的背景下建立双曲空间和欧式空间之间的鸿沟,以规范的方式将基本的算子和多项式回归、前馈网络、RNN和GRU泛化到双曲几何中的庞加莱模型中。此外,推荐读者们还可以观摩一下这个hyperlib库,https://github.com/nalexai/hyperlib该库在双曲空间中实现常见的神经网络组件(使用Poincare模型)。该库的实现使用Tensorflow作为后端,据作者宣称可以很容易地与Keras一起使用,旨在帮助数据科学家,机器学习工程师,研究人员和其他人实现双曲神经网络。复值神经网络 Complex-Valued Neural Networks复值神经网络是在复平面上处理信息的一类神经网络,其状态变量、连接权值与激励函数都是复值的。复值神经网络可视为实值神经网络的一种推广,但与实值神经网络有很多不同,具有更多复杂的性质.复值神经网络既可以处理现实生活中的复值问题,也可以处理实值问题,比实值神经网络功能更强大与更具优势,有些问题无法用实值神经网络解决,如XOR问题,而用复值神经网络则迎刃而解。(摘自:谢东《几类复值神经网络的动力学行为研究》,几类复值神经网络的动力学行为研究--《湖南大学》2017年博士论文)这篇论文Deep Complex Networks(https://arxiv.org/abs/1705.09792),针对复杂神经网络设计了关键的原子组件,并应用于卷积前馈网络和卷积LSTM。
-
团队介绍我们来自广西友迪咨询科技有限公司,队长陆宇升,队员林景锋、赖沛成。下面介绍我们团队的解决方案。路线选择本赛题的任务是基于显微镜成像的金相图片评估定级,可以使用比较法、截线法和面积法。比较法将赛题视为图像分类问题,比较容易实现。我们同时在比较法和面积法两条路线上进行探索。在比较法的尝试汇中我们发现,数据增强中使用RandomResizedCrop(官方baseline中使用了这个方法),会比使用固定缩放比的Resize/CenterCrop方案获得更高的分数。按照晶粒度等级的定义,晶粒度等级是由晶粒度大小决定的,因此,尺度相关特征应该是卷积网络用来分类的主要特征。RandomResizedCrop会把图像进行随机缩放,会让神经网络在分类决策的时候,排除尺度相关特征,实现尺度无关性,这对普通的分类问题会有用,但理论上会降低金相评级的准确性。但事实正好相反,我们猜测,卷积神经网络主要根据尺度无关的特征进行分类,这样真实的泛化能力应该不强。因此,大赛中我们把大部分时间和精力放在面积法探索上,由于图像噪音和模糊晶粒边界难以区分等问题难以在短时间内解决,在面积法上我们没有取得理想结果,下面只介绍我们在比较法上的具体方案。网络选择和超参数我们尝试了ResNeXt101、EfficientNet b0/b4等网络,最高分是基于EfficientNet b4的方案。数据增强我们使用了随机缩放裁剪,垂直翻转,水平翻转,仿射变换,cutout,其中仿射变换和cutout效果明显,提升大约1%。优化器使用AdamW,提升大约0.5%。gradcam热力图我们使用gradcam热力图分析神经网络分类效果不理想的原因,以下分析基于ResNeXt101网络。可以看出,单模型神经网络resnext101-32*8d很多情况下仅依据图片局部区域特征进行分类决策,容易发生过拟合。关注区域平均化改进算法ResNeXt、EfficientNet等网络只是根据局部区域特征进行分类,大部分区域属于无用背景被忽略。这适用于通常的分类问题,但对于晶粒度定级,整个图没有无用背景,如果仅根据局部特征进行分类,容易发生过拟合。我们提出一种新的改进方法,强制神经网络分类时均衡考虑图片的所有区域的特征,而不是某个局部的特征。 ResNeXt、EfficientNet等网络的最顶层输出的feature map,会被avgpool池化为1*1*c的张量,然后送入全连接层fc分类。我们改造avgpool的output size为(d,d),然后拆分为d*d个1*1*c的张量,分别送入全连接层fc,分别计算softmax和交叉熵损失函数并求和,作为损失函数。这样,改进后的网络根据d*d个区域特征进行分类,使得网络不会根据范围很小的局部特征分类,另一个角度上看,相当于样本数量增加d*d倍,抑制过拟合问题。本地测试有很大提升,相同参数下,分数提高2~4个百分点。我们使用gradcam热力图分析比较原网络和改进后的网络的模型:可以看到,改进后的网络关注的区域分散到图片的四个角,而不是集中在某个小区域,我们认为这应该可以提高网络的泛化能力。
-
最近,图注意力网络一作 Petar Veličković 在母校剑桥大学做了一场讲座,介绍图神经网络的理论基础。图神经网络(GNN)是机器学习中最热门的研究方向之一,在提出后的十几年里被不断扩展,先后发展出了图卷积网络、 图注意力网络、图自编码器、图生成网络和图时空网络等多个子领域。 最近,图注意力网络的第一作者 Petar Veličković 回到母校剑桥大学计算机实验室做了一场主题为《图神经网络理论基础》的讲座。在演讲中,Petar 尝试从基本原理推导 GNN,介绍其在多个学科中的应用,并解释 GNN 如何在多个研究路线中并行出现。讲座幻灯片地址:https://petar-v.com/talks/GNN-Wednesday.pdf Petar 表示,这个演讲「浓缩」了他 4 年 GNN 研究的精华,「这些年我用多种方式讲授 GNN,现在我终于找到了最『自然』的讲解方式。」他表示,这个 70 分钟的讲座既可以帮助初学者,也可以为 GNN 实践者提供新的角度。 接下来,我们就来看 Petar 讲了什么。 Petar Veličković:我找到了最「自然」的 GNN 讲解方式 分子是图,交通地图是图,社交网络也是图。 Petar 首先介绍了现实世界中的图、图神经网络的实际应用,以及 GNN 的相关库和数据集等。紧接着他展示了该讲座的主要内容: 基于基本原理推导 GNN;介绍 GNN 的多个独立研究变体;回顾:类 GNN 模型在 ML 研究历史中的出现;当下:目前的一些研究方向;展望:GNN 如何泛化至图结构输入以外。Petar 表示,该讲座的内容基于其关于几何深度学习的研究、麦吉尔大学助理教授 William Hamilton 的著作《图表示学习》,以及 Yoshua Bengio、Marco Gori、Jürgen Schmidhuber 等多位研究者的工作。 基于基本原理推导 GNNPetar 首先从基本原理定义 GNN,然后介绍了对 GNN 处理图数据有用的特性,并列举了一些示例。 GNN 的过去、现在与未来Petar 介绍了 GNN 的发展过程与研究蓝图,及其在多个研究领域中的并行出现。例如,自然语言处理与 GNN。「Transformer 是图神经网络。」 完整视频参见:Petar Veličković简介 Petar Veličković现为 DeepMind 高级研究科学家。他于 2019 年从剑桥大学获得计算机科学博士学位,导师为 Pietro Liò。他的研究方向包括:设计在复杂结构数据上运行的神经网络架构(如图网络),及其在算法推理和计算生物学方面的应用。 Petar Veličković是图注意力网络的一作,他和 Guillem Cucurull、Yoshua Bengio 等人一起完成了图注意力网络的开山之作——《Graph Attention Networks》,这篇论文被 ICLR 2018 接收,目前被引量超过 3000。除了图注意力网络,他还是《Deep Graph Infomax》的一作。在这篇论文中,他和 William Fedus、Yoshua Bengio 等人提出了以无监督方式学习图结构数据中节点表示的通用方法,该论文被 ICLR 2019 接收。 去年,机器之心曾报道过他的博士论文,Petar 用 147 页篇幅详述了「结构在神经网络中的复兴」,涵盖他之前的研究工作和其他关于 GNN 的内容。而今天介绍的这个讲座更是融合了他「近 4 年 GNN 研究的精华」,对图神经网络领域感兴趣的读者可以一看。 个人主页地址:https://petar-v.com/
-
一年一度的计算机视觉顶会IEEE计算机视觉及模式识别大会CVPR录用结果最近公布。据悉,今年CVPR投稿量与论文接收量相对往年继续上升,有效投搞量达7015篇,接收论文1663篇,接收率23.7%,与往年相比略有上升。华为诺亚方舟实验室此次有30篇论文被接收,包括两篇Oral,其中主要由正式或者实习员工完成的工作有24篇,主要由高校合作方完成的工作有6篇。研究方向涵盖模型压缩和能耗高效、神经网络搜索、语义理解、底层视觉、自动驾驶、无损数据压缩、可解释AI等多个方面。诺亚方舟实验室的这些文章,体现出工业界需求与学术前沿的紧密结合,围绕业务中的迫切需求,结合最新学术进展提出创新性解决方案,也让学术研究能够有具体落地。如这些文章中包含了去年AdderNet算法的继续演进AdderSR,以及最近广为流传的IPT网络等。下面挑选一些本次CVPR接收的代表性论文进行介绍。CVPR 2021代表性工作介绍AdderSR: Towards Energy Efficient Image Super-Resolution本论文研究使用加法网络解决图像超分的问题,降低超分网络的能耗。由于任务的属性不同,直接将加法网络应用到超分任务上损失严重,本文对该问题进行了深入分析。首先,加法算子难以学到恒等映射;除此之外,加法算子难以学到有效的高通滤波器,但是这两个特性对于图像处理任务非常重要。在此基础上,本文继而提出自连接加法单元和可学习的幂激活函数来调整特征分布、增强细节,有效解决该问题。实验表明,本文提出的加法超分网络可以有效减少2.5x能耗,并达到与原模型非常接近的效果。ReNAS: Relativistic Evaluation of Neural Architecture Search (Oral)一个有效的神经网络结构性能评估方案是神经网络结构搜索(NAS)成功的关键。现有NAS算法通常在训练时间有限的小型数据集上训练和评估神经结构。但这样一种粗糙的评估方式很难对神经网络结构进行准确评估。本文提出一种新的神经网络结构评价方案,旨在确定哪个神经网络结构的性能更好,而不是精确地预测性能绝对值。因此,我们提出了一个结构相对性能预测NAS (ReNAS)。我们将神经结构编码为特征张量,并利用预测器进一步细化表示。本方法可用于离散搜索,无需额外评估。在NASBench101数据集上抽样424个(搜索空间的0.1%)神经架构及其标签已经足够学习一个准确的架构性能预测器。在NAS-Bench-101和NAS-Bench-201数据集上,我们搜索的神经结构的准确性高于最新的方法,显示了本方法的优先性。Transformation Invariant Few-Shot Object Detection不同于以往基于元学习的小样本物体检测框架,本文从样本扩增的角度解决这一问题。本文提出了一种简单而有效的变换不变原则,它可以灵活地应用于各种元学习模型,以提高新类物体的检测性能。该方法通过对变换后图像的预测结果引入一致性正则,增强小样本物体检测模型的泛化能力。重要的是,这一方法可以处理未标记数据,从而解决半监督小样本物体检测问题。实验表明,本文提出的方法在标准小样本物体检测和半监督小样本物体检测上均有效。Joint-DetNAS: Upgrade Your Detector with NAS,Pruning and Dynamic DistillationJoint-DetNAS是一个融合了NAS、剪枝以及蒸馏的目标检测模型优化算法,由两个主要部分组成:a) 构建弹性教师模型池:通过一次渐进式收缩训练获得大量高质量模型,用于支撑教师模型搜索b)学生-教师网络联合优化:通过交迭搜索,动态寻找最优蒸馏组合。学生网络采用Network Morphism策略, 有效融合模型结构演化和剪枝技术。算法直接输出学生模型作为结果,无需额外训练。Joint-DetNAS搜索高效且优化效果显著:如对于R101-FPN模型,在FPS及FLOPS优化 50%的情况下,仍能有2.5%的AP提升。TransNAS-Bench-101: Improving Transferrability and Generalizability of Cross-Task Neural Architecture Search神经网络架构搜索(NAS)的最新突破将该领域的研究范围扩展到了更广泛的视觉任务和更多样化的搜索空间。现有的NAS方法大多是在单个任务上进行搜索,而跨任务搜索的算法正在涌现。为了降低计算成本和实验复杂性对跨任务算法研究的阻碍,本论文提出了TransNAS-Bench-101基准测试数据集。该数据集涵盖了图像分类、语义分割、自编码器等七个不同的视觉任务,并探索了两类不同的搜索空间:Cell-based搜索空间和Macro-based搜索空间。通过7,352个backbone在七个任务上的训练,我们提供了51,464个模型的详细训练数据。我们希望借助TransNAS-Bench-101来鼓励跨任务的NAS算法的出现,从而将跨任务搜索的效率和通用性提高到新的水平。Pre-Trained Image Processing Transformer随着现代硬件计算能力的快速增强,在大规模数据集上预训练的Transformer模型(例如BERT,GPT-3)表现出了巨大的潜力和超越传统模型的效果。我们提出了一种可用于底层视觉任务(例如,去噪,超分辨率和去雨)的预训练Transformer模型(IPT)。为了最大程度地挖掘Transformer的能力,我们利用具有大量自然图像的ImageNet数据集生成大量降质图像对,并在这些图像上使用多头和多尾机制对IPT模型进行预训练。另外,我们还引入了对比学习以来提升模型的泛化性能。我们提出的IPT模型可以在迅速微调后有效地用于不同的底层视觉任务中,并在多项任务上取得了SOTA的结果。Efficient Multi-Stage Video Denoising with Recurrent Spatio-Temporal Fusion论文提出了极简的视频去噪网络EMVD,旨在通过结合传统图像处理和深度学习构造高能效的像素级视频处理框架。基于时序融合、空间去噪和时空精细化等多阶段设计,结合可逆可学习变换,既递归地利用视频中自然固有的时空相关性渐进改善视频质量,又大大降低模型的复杂度。通过业界公开数据集和真实数据集评测,计算量仅5.38GFLOPS的EMVD精度和视觉效果超过300多倍计算量的SOTA网络模型,在硬件资源有限的终端设备上处理1080P视频可达50FPS,业界首次在终端设备上实现实时的高分辨率视频AI降噪算法。深度学习领域的图像降噪方法往往需要噪声图像和相应的干净图像配对来训练,然而在真实场景中构造训练配对是十分困难的。我们提出Neighbor2Neighbor:通过近邻采样,从含噪图像采样出两张“相似但不相同”的子图以构成配对数据来训练降噪网络,其中两张子图每个位置对应的像素在原噪声图像中都是近邻像素;同时,在损失函数中引入正则项来修正两张近邻子图“相似但不相同”导致的过度平滑问题。本方法仅需噪声图像数据集即可训练任意降噪网络,在RGB域合成数据和RAW域真实含噪图像数据集上均表现出优秀的降噪效果,性能接近基于“噪声-干净”图像配对进行训练的模型。相比于现有的自监督图像降噪方法,本方法既不需要构造配对数据的采集过程,也不需要改造网络结构,同时无需额外的噪声模型信息,在暗光人脸拍照、夜间户外拍照、医学图像降噪等场景具有较高的应用潜力。Focus on Local: Detecting Lane Marker from Bottom Up via Key Point当前车道线检测的主流方向分为基于分割和基于检测的方法两大类。前者生成像素级的语义类别并通过聚类生成不同实例的曲线,后者由每个锚点预测整根曲线,这两种方法都直接建模全局信息,存在聚类容易产生误差以及远端预测不准的问题。受到人体位姿估计方法的启发,我们首次将车道线检测转化为局部关键点估计及其关联问题,用距离信息建模局部关联关系。车道线局部建模相对于全局建模更加简单,复杂度更低,泛化性能更好。我们采用两个轻量化的模型,在车道线检测公开数据集CULane和TuSimple上取得了新的SOTA结果,另外在跨数据集的泛化性能上也展现出了相当大的优越性。综上,我们的方法证明了位姿估计方法在车道线检测中的应用潜力,为解决这一问题开辟了新的方向。AF2-S3Net: Attentive Feature Fusion with Adaptive Feature Selection for Sparse Semantic Segmentation Network激光雷达点云的语义分割可视为自动驾驶的基石功能之一,精确的分割结果可以辅助物体检测、定位等核心感知任务。针对LiDAR语义分割问题,AF2S3Net以3D稀疏神经网络为框架,通过多分支、多层级主动特征融合实现了全局空间语义与局部细节的动态叠加,在单个网络中实现了单点网络与3D卷积网络的有机统一。同时为了降低特征融合后产生的梯度噪声,各分支原始特征被投票后送入特征选择模块,该模块通过压缩赋权过滤了部分噪声特征列向量,从而进一步提升了网络稳定性和泛化能力。在SemanticKITTI和nuScenes两大重量级LiDAR数据集语义分割竞赛排行榜上,AF2S3Net斩获双料冠军。QPP: Real-Time Quantization Parameter Prediction for Deep Neural Networks深度神经网络的权重和特征的量化可以降低能耗,提升计算效率,有助于促进其在手机等设备上的应用。量化感知训练的方法通常可以达到较好的效果,但是需要完整的数据集,但是这一点很多情况下难以满足。非训练量化的方法通常需要一个比较耗时的量化参数计算过程,否则量化精度损失比较严重。本文提出一种量化参数预测的算法,称为QPP。通过部分训练数据或者无标签数据的学习,QPP预测器在给定网络输入的情况下可以准确预测激活值的量化参数。预测器在避免复杂计算的同时有效保持了原始模型的精度。因此,本文的方法结合了动态量化和静态量化的优点。本文将QPP算法用在两个标准的动态量化算法上,并在分类、分割、超分等视觉任务上进行了广泛的验证。iVPF: Numerical Invertible Volume Preserving Flows for Lossless Compression在存储领域,高效无损压缩由于可以有效降低存储介质成本,故被广泛研究。AI算法通过学习数据分布规律并根据数据规律进行压缩,具有压缩率高等有点,具备良好的研究和应用前景。可逆流模型(Flow model)能准确拟合概率分布,理论压缩比高,但由于浮点误差问题,不能直接用于无损压缩任务。本方案第一次提出基于保体积流模型(volume preserving flow)的无损压缩方法吗,具有压缩率高,压缩吞吐率大的优点。首先,设计保体积流算子的数值计算方法,消除数据和待压缩隐变量的误差,保证无损压缩正确性;其次,设计基于保体积流模型的压缩和解压算法,它能达到最优的理论压缩率上界,压缩比高,压缩吞吐率高。本方法在图像数据集取得了最优的压缩率性能。CausalVAE: Disentangled Representation Learning via Neural Structural Causal Models解耦表征学习旨在寻找低维的、由多个可解释因子组成的观测数据的隐表征。常用的变分自动编码器(VAE)的框架假设因子是独立的。然而,在实际场景中,具有语义的因素并不是必然独立的。相反,可能有一个潜在的描述这些因素相互依赖的因果结构。因此,我们提出了一个新的基于VAE的框架,名为因果VAE,其中包括带有因果结构的神经层,以此找到数据中的因果相关概念。在华为解耦数据集和真实数据集CelebA的实验表明,因果VAE学习的是语义上可解释的隐表征。我们可以控制某些语义因子,他们之间的信息可以通过表征之间的因果关系正确传递,生成反事实图片。本文来源:https://mp.weixin.qq.com/s/HeQbRdb4N7UJbKqD70qIyw
-
一年一度的计算机视觉顶会IEEE计算机视觉及模式识别大会CVPR录用结果最近公布。据悉,今年CVPR投稿量与论文接收量相对往年继续上升,有效投搞量达7015篇,接收论文1663篇,接收率23.7%,与往年相比略有上升。华为诺亚方舟实验室此次有30篇论文被接收,包括两篇Oral,其中主要由正式或者实习员工完成的工作有24篇,主要由高校合作方完成的工作有6篇。研究方向涵盖模型压缩和能耗高效、神经网络搜索、语义理解、底层视觉、自动驾驶、无损数据压缩、可解释AI等多个方面。诺亚方舟实验室的这些文章,体现出工业界需求与学术前沿的紧密结合,围绕业务中的迫切需求,结合最新学术进展提出创新性解决方案,也让学术研究能够有具体落地。如这些文章中包含了去年AdderNet算法的继续演进AdderSR,以及最近广为流传的IPT网络等。下面挑选一些本次CVPR接收的代表性论文进行介绍。CVPR 2021代表性工作介绍AdderSR: Towards Energy Efficient Image Super-Resolution本论文研究使用加法网络解决图像超分的问题,降低超分网络的能耗。由于任务的属性不同,直接将加法网络应用到超分任务上损失严重,本文对该问题进行了深入分析。首先,加法算子难以学到恒等映射;除此之外,加法算子难以学到有效的高通滤波器,但是这两个特性对于图像处理任务非常重要。在此基础上,本文继而提出自连接加法单元和可学习的幂激活函数来调整特征分布、增强细节,有效解决该问题。实验表明,本文提出的加法超分网络可以有效减少2.5x能耗,并达到与原模型非常接近的效果。ReNAS: Relativistic Evaluation of Neural Architecture Search (Oral)一个有效的神经网络结构性能评估方案是神经网络结构搜索(NAS)成功的关键。现有NAS算法通常在训练时间有限的小型数据集上训练和评估神经结构。但这样一种粗糙的评估方式很难对神经网络结构进行准确评估。本文提出一种新的神经网络结构评价方案,旨在确定哪个神经网络结构的性能更好,而不是精确地预测性能绝对值。因此,我们提出了一个结构相对性能预测NAS (ReNAS)。我们将神经结构编码为特征张量,并利用预测器进一步细化表示。本方法可用于离散搜索,无需额外评估。在NASBench101数据集上抽样424个(搜索空间的0.1%)神经架构及其标签已经足够学习一个准确的架构性能预测器。在NAS-Bench-101和NAS-Bench-201数据集上,我们搜索的神经结构的准确性高于最新的方法,显示了本方法的优先性。Transformation Invariant Few-Shot Object Detection不同于以往基于元学习的小样本物体检测框架,本文从样本扩增的角度解决这一问题。本文提出了一种简单而有效的变换不变原则,它可以灵活地应用于各种元学习模型,以提高新类物体的检测性能。该方法通过对变换后图像的预测结果引入一致性正则,增强小样本物体检测模型的泛化能力。重要的是,这一方法可以处理未标记数据,从而解决半监督小样本物体检测问题。实验表明,本文提出的方法在标准小样本物体检测和半监督小样本物体检测上均有效。Joint-DetNAS: Upgrade Your Detector with NAS,Pruning and Dynamic DistillationJoint-DetNAS是一个融合了NAS、剪枝以及蒸馏的目标检测模型优化算法,由两个主要部分组成:a) 构建弹性教师模型池:通过一次渐进式收缩训练获得大量高质量模型,用于支撑教师模型搜索b)学生-教师网络联合优化:通过交迭搜索,动态寻找最优蒸馏组合。学生网络采用Network Morphism策略, 有效融合模型结构演化和剪枝技术。算法直接输出学生模型作为结果,无需额外训练。Joint-DetNAS搜索高效且优化效果显著:如对于R101-FPN模型,在FPS及FLOPS优化 50%的情况下,仍能有2.5%的AP提升。TransNAS-Bench-101: Improving Transferrability and Generalizability of Cross-Task Neural Architecture Search神经网络架构搜索(NAS)的最新突破将该领域的研究范围扩展到了更广泛的视觉任务和更多样化的搜索空间。现有的NAS方法大多是在单个任务上进行搜索,而跨任务搜索的算法正在涌现。为了降低计算成本和实验复杂性对跨任务算法研究的阻碍,本论文提出了TransNAS-Bench-101基准测试数据集。该数据集涵盖了图像分类、语义分割、自编码器等七个不同的视觉任务,并探索了两类不同的搜索空间:Cell-based搜索空间和Macro-based搜索空间。通过7,352个backbone在七个任务上的训练,我们提供了51,464个模型的详细训练数据。我们希望借助TransNAS-Bench-101来鼓励跨任务的NAS算法的出现,从而将跨任务搜索的效率和通用性提高到新的水平。Pre-Trained Image Processing Transformer随着现代硬件计算能力的快速增强,在大规模数据集上预训练的Transformer模型(例如BERT,GPT-3)表现出了巨大的潜力和超越传统模型的效果。我们提出了一种可用于底层视觉任务(例如,去噪,超分辨率和去雨)的预训练Transformer模型(IPT)。为了最大程度地挖掘Transformer的能力,我们利用具有大量自然图像的ImageNet数据集生成大量降质图像对,并在这些图像上使用多头和多尾机制对IPT模型进行预训练。另外,我们还引入了对比学习以来提升模型的泛化性能。我们提出的IPT模型可以在迅速微调后有效地用于不同的底层视觉任务中,并在多项任务上取得了SOTA的结果。Efficient Multi-Stage Video Denoising with Recurrent Spatio-Temporal Fusion论文提出了极简的视频去噪网络EMVD,旨在通过结合传统图像处理和深度学习构造高能效的像素级视频处理框架。基于时序融合、空间去噪和时空精细化等多阶段设计,结合可逆可学习变换,既递归地利用视频中自然固有的时空相关性渐进改善视频质量,又大大降低模型的复杂度。通过业界公开数据集和真实数据集评测,计算量仅5.38GFLOPS的EMVD精度和视觉效果超过300多倍计算量的SOTA网络模型,在硬件资源有限的终端设备上处理1080P视频可达50FPS,业界首次在终端设备上实现实时的高分辨率视频AI降噪算法。深度学习领域的图像降噪方法往往需要噪声图像和相应的干净图像配对来训练,然而在真实场景中构造训练配对是十分困难的。我们提出Neighbor2Neighbor:通过近邻采样,从含噪图像采样出两张“相似但不相同”的子图以构成配对数据来训练降噪网络,其中两张子图每个位置对应的像素在原噪声图像中都是近邻像素;同时,在损失函数中引入正则项来修正两张近邻子图“相似但不相同”导致的过度平滑问题。本方法仅需噪声图像数据集即可训练任意降噪网络,在RGB域合成数据和RAW域真实含噪图像数据集上均表现出优秀的降噪效果,性能接近基于“噪声-干净”图像配对进行训练的模型。相比于现有的自监督图像降噪方法,本方法既不需要构造配对数据的采集过程,也不需要改造网络结构,同时无需额外的噪声模型信息,在暗光人脸拍照、夜间户外拍照、医学图像降噪等场景具有较高的应用潜力。Focus on Local: Detecting Lane Marker from Bottom Up via Key Point当前车道线检测的主流方向分为基于分割和基于检测的方法两大类。前者生成像素级的语义类别并通过聚类生成不同实例的曲线,后者由每个锚点预测整根曲线,这两种方法都直接建模全局信息,存在聚类容易产生误差以及远端预测不准的问题。受到人体位姿估计方法的启发,我们首次将车道线检测转化为局部关键点估计及其关联问题,用距离信息建模局部关联关系。车道线局部建模相对于全局建模更加简单,复杂度更低,泛化性能更好。我们采用两个轻量化的模型,在车道线检测公开数据集CULane和TuSimple上取得了新的SOTA结果,另外在跨数据集的泛化性能上也展现出了相当大的优越性。综上,我们的方法证明了位姿估计方法在车道线检测中的应用潜力,为解决这一问题开辟了新的方向。AF2-S3Net: Attentive Feature Fusion with Adaptive Feature Selection for Sparse Semantic Segmentation Network激光雷达点云的语义分割可视为自动驾驶的基石功能之一,精确的分割结果可以辅助物体检测、定位等核心感知任务。针对LiDAR语义分割问题,AF2S3Net以3D稀疏神经网络为框架,通过多分支、多层级主动特征融合实现了全局空间语义与局部细节的动态叠加,在单个网络中实现了单点网络与3D卷积网络的有机统一。同时为了降低特征融合后产生的梯度噪声,各分支原始特征被投票后送入特征选择模块,该模块通过压缩赋权过滤了部分噪声特征列向量,从而进一步提升了网络稳定性和泛化能力。在SemanticKITTI和nuScenes两大重量级LiDAR数据集语义分割竞赛排行榜上,AF2S3Net斩获双料冠军。QPP: Real-Time Quantization Parameter Prediction for Deep Neural Networks深度神经网络的权重和特征的量化可以降低能耗,提升计算效率,有助于促进其在手机等设备上的应用。量化感知训练的方法通常可以达到较好的效果,但是需要完整的数据集,但是这一点很多情况下难以满足。非训练量化的方法通常需要一个比较耗时的量化参数计算过程,否则量化精度损失比较严重。本文提出一种量化参数预测的算法,称为QPP。通过部分训练数据或者无标签数据的学习,QPP预测器在给定网络输入的情况下可以准确预测激活值的量化参数。预测器在避免复杂计算的同时有效保持了原始模型的精度。因此,本文的方法结合了动态量化和静态量化的优点。本文将QPP算法用在两个标准的动态量化算法上,并在分类、分割、超分等视觉任务上进行了广泛的验证。iVPF: Numerical Invertible Volume Preserving Flows for Lossless Compression在存储领域,高效无损压缩由于可以有效降低存储介质成本,故被广泛研究。AI算法通过学习数据分布规律并根据数据规律进行压缩,具有压缩率高等有点,具备良好的研究和应用前景。可逆流模型(Flow model)能准确拟合概率分布,理论压缩比高,但由于浮点误差问题,不能直接用于无损压缩任务。本方案第一次提出基于保体积流模型(volume preserving flow)的无损压缩方法吗,具有压缩率高,压缩吞吐率大的优点。首先,设计保体积流算子的数值计算方法,消除数据和待压缩隐变量的误差,保证无损压缩正确性;其次,设计基于保体积流模型的压缩和解压算法,它能达到最优的理论压缩率上界,压缩比高,压缩吞吐率高。本方法在图像数据集取得了最优的压缩率性能。CausalVAE: Disentangled Representation Learning via Neural Structural Causal Models解耦表征学习旨在寻找低维的、由多个可解释因子组成的观测数据的隐表征。常用的变分自动编码器(VAE)的框架假设因子是独立的。然而,在实际场景中,具有语义的因素并不是必然独立的。相反,可能有一个潜在的描述这些因素相互依赖的因果结构。因此,我们提出了一个新的基于VAE的框架,名为因果VAE,其中包括带有因果结构的神经层,以此找到数据中的因果相关概念。在华为解耦数据集和真实数据集CelebA的实验表明,因果VAE学习的是语义上可解释的隐表征。我们可以控制某些语义因子,他们之间的信息可以通过表征之间的因果关系正确传递,生成反事实图片。本文来源:https://mp.weixin.qq.com/s/HeQbRdb4N7UJbKqD70qIyw
-
描述RetinaFace(人脸检测/Pytorch)注:本算法支持多卡训练、单卡混合精度训练,但在多卡情况下不支持混合精度1. 概述此模型基于RetinaFace: Single-stage Dense Face Localisation in the Wild中提出的模型结构实现,该算法会载入在WiderFace 上的预训练模型,在用户数据集上做迁移学习。我们提供了训练代码和可用于训练的模型,用于实际场景的微调训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。人脸检测的评估手段一般使用mAP指标,详细说明请参考:https://github.com/Cartucho/mAP本算法的其他信息如下表所示:项目说明参考论文RetinaFace: Single-stage Dense Face Localisation in the Wild使用框架Pytorch-1.4.0训练集WIDERFACE 中的 WIDER_train训练总epoch数100训练batch_size使用混合精度单卡训练,batch_size=16训练硬件及耗时单卡v100,O1混合精度,训练大约31小时测试集WIDERFACE 中的WIDER_val推理硬件及速度CPU 10.3s/pic ,GPU2080ti 0.5s/pic–1.5s/pic ,modelarts平台V100 GPU:3226张图片总共耗时24分钟(target_size = 1600,max_size = 2150)输入图像尺寸训练:1024*1024 推理:target_size = 1600,max_size = 2150(保证图片等比例缩放,使用最小一条边缩放到target_size的缩放比例;如果此时最大边超过了max_size,则使用最大边缩放到max_size的缩放比例)原论文准确率RetinaFace-R50 Easy 96.5, Medium 95.6, Hard 90.4本算法准确率RetinaFace-R50 Easy 95.52, Medium 94.43, Hard 90.062、训练2.1. 算法基本信息任务类型:人脸检测支持的框架引擎:PyTorch-1.4.0-python3.6算法输入:存储在OBS上的数据集,必须按照WIDERFACE 数据集的格式进行存储,详情请查看下文第4节案例指导WIDERFACE 预训练模型,在WIDERFACE 上的mAP是 Easy 95.52, Medium 94.43, Hard 90.06算法输出:用于Pytorch推理的pth模型,CPU推理速度:10.3s/pic GPU2080ti推理速度:0.5s/pic–1.5s/pic ,modelarts平台V100 GPU:3226张图片总共耗时24分钟(target_size = 1600,max_size = 2150)2.2. 训练参数说明名称默认值类型是否必填是否可修改描述data_urldata/WIDERFACE/WIDER_trainstring是是训练或者评估输入的数据集 (如果使用文件夹形式的数据,则填写该文件夹在OBS上的访问路径;如果使用zip压缩包形式的数据,则填写该压缩包的父目录在OBS上的访问路径)train_urloutput/string是是训练或者评估结果输出路径data_formatzipstring否是可选值zip(上传数据为zip压缩包)或者dir(上传数据为目录形式),压缩包和目录的具体格式请查看下面《ModelArts AI市场算法RetinaFace使用指导》所附连接networkresnet50string否是模型的backbone网络,可选值 mobile0.25 、resnet50 或者resnet152num_workers1int否是数据加载的worker数量lr0.001string否是训练的初始学习率momentum0.9string否是优化器的动量系数load_weightweight/best_model.pthstring否是可加载的预训练模型,当eval=True时,该参数为必填项 ;默认值是以resnet50为backbone在WiderFace数据集上的预训练模型,该预训练模型已经包含在本算法中weight_decay0.0005string否是优化器中的正则化权重衰减量gamma0.1string否是分段衰减学习率中每次学习率衰减的比例(new_lr=lr*gamma),仅当use_cosine_decay=False该参数有效img_size1024int否是训练数据的分辨率confidence_threshold0.02string否是nms时的置信度阈值nms_threshold0.4string否是nms时的IOU阈值num_gpu1int否是当num_gpu=1时,使用单个GPU训练;当num_gpu>1时,使用机器上所有的GPU进行训练batch_size16int否是训练时的batch_size,可根据GPU的显存进行调整epoch100int否是训练的epoch数量use_backboneTruestring否是训练时是否使用backbone网络在ImageNet数据集上的预训练参数use_mixedTruestring否是是否使用混合精度进行训练,使用混合精度一定程度上可以降低显存消耗,也可能提高训练速度amp_levelO1string否是混合精度的设置,可选值:O0,O1,O2,O3warmup_epoch10int否是训练开始时,使用warmup学习率的epoch数量,warmup_epoch=-1表示不使用warmupdecay150int否是分段衰减学习率的第一次学习率降低的epoch数,仅当use_cosine_decay=False时有效decay280int否是分段衰减学习率的第二次学习率降低的epoch数,仅当use_cosine_decay=False时有效use_cosine_decayTruestring否是是否使用余弦衰减学习率,设置为False则使用分段衰减学习率optimizersgdstring否是sgd 或者 adam优化器evalFalsestring否是eval=True,则进行评估;eval=False进行训练2.3. 训练输出文件训练完成后的输出文件如下:|- RetinaFace_Resnet50_Final.pth |- deploy_scripts |- model |- data |- layers |- models |- retinaface_utils |- config.json |- customize_service.py |- save_model.pth3. GPU/CPU推理元模型来源 选择 保存在OBS上的对应路径下的deploy_scripts文件夹。注意:推理配置文件model/config.json中的runtime字段为pytorch1.4-python3.6,表示该模型可同时在CPU或GPU运行。4. 案例指导本算法的详细使用方法,请查看《ModelArts AI Gallery算法RetinaFace使用指导》。交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
-
最近,CV 研究者对 transformer 产生了极大的兴趣并取得了不少突破。这表明,transformer 有可能成为计算机视觉任务(如分类、检测和分割)的强大通用模型。我们都很好奇:在计算机视觉领域,transformer 还能走多远?对于更加困难的视觉任务,比如生成对抗网络 (GAN),transformer 表现又如何?在这种好奇心的驱使下,德州大学奥斯汀分校的 Yifan Jiang、Zhangyang Wang,IBM Research 的 Shiyu Chang 等研究者进行了第一次试验性研究,构建了一个只使用纯 transformer 架构、完全没有卷积的 GAN,并将其命名为 TransGAN。与其它基于 transformer 的视觉模型相比,仅使用 transformer 构建 GAN 似乎更具挑战性,这是因为与分类等任务相比,真实图像生成的门槛更高,而且 GAN 训练本身具有较高的不稳定性。论文链接:https://arxiv.org/pdf/2102.07074.pdf代码链接:https://github.com/VITA-Group/TransGAN从结构上来看,TransGAN 包括两个部分:一个是内存友好的基于 transformer 的生成器,该生成器可以逐步提高特征分辨率,同时降低嵌入维数;另一个是基于 transformer 的 patch 级判别器。研究者还发现,TransGAN 显著受益于数据增强(超过标准的 GAN)、生成器的多任务协同训练策略和强调自然图像邻域平滑的局部初始化自注意力。这些发现表明,TransGAN 可以有效地扩展至更大的模型和具有更高分辨率的图像数据集。 实验结果表明,与当前基于卷积骨干的 SOTA GAN 相比,表现最佳的 TransGAN 实现了极具竞争力的性能。具体来说,TransGAN 在 STL-10 上的 IS 评分为 10.10,FID 为 25.32,实现了新的 SOTA。 该研究表明,对于卷积骨干以及许多专用模块的依赖可能不是 GAN 所必需的,纯 transformer 有足够的能力生成图像。 在该论文的相关讨论中,有读者调侃道,「attention is really becoming『all you need』.」不过,也有部分研究者表达了自己的担忧:在 transformer 席卷整个社区的大背景下,势单力薄的小实验室要怎么活下去?如果 transformer 真的成为社区「刚需」,如何提升这类架构的计算效率将成为一个棘手的研究问题。基于纯 Transformer 的 GAN作为基础块的 Transformer 编码器 研究者选择将 Transformer 编码器(Vaswani 等人,2017)作为基础块,并尽量进行最小程度的改变。编码器由两个部件组成,第一个部件由一个多头自注意力模块构造而成,第二个部件是具有 GELU 非线性的前馈 MLP(multiple-layer perceptron,多层感知器)。此外,研究者在两个部件之前均应用了层归一化(Ba 等人,2016)。两个部件也都使用了残差连接。内存友好的生成器NLP 中的 Transformer 将每个词作为输入(Devlin 等人,2018)。但是,如果以类似的方法通过堆叠 Transformer 编码器来逐像素地生成图像,则低分辨率图像(如 32×32)也可能导致长序列(1024)以及更高昂的自注意力开销。 所以,为了避免过高的开销,研究者受到了基于 CNN 的 GAN 中常见设计理念的启发,在多个阶段迭代地提升分辨率(Denton 等人,2015;Karras 等人,2017)。他们的策略是逐步增加输入序列,并降低嵌入维数。 如下图 1 左所示,研究者提出了包含多个阶段的内存友好、基于 Transformer 的生成器: 每个阶段堆叠了数个编码器块(默认为 5、2 和 2)。通过分段式设计,研究者逐步增加特征图分辨率,直到其达到目标分辨率 H_T×W_T。具体来说,该生成器以随机噪声作为其输入,并通过一个 MLP 将随机噪声传递给长度为 H×W×C 的向量。该向量又变形为分辨率为 H×W 的特征图(默认 H=W=8),每个点都是 C 维嵌入。然后,该特征图被视为长度为 64 的 C 维 token 序列,并与可学得的位置编码相结合。 与 BERT(Devlin 等人,2018)类似,该研究提出的 Transformer 编码器以嵌入 token 作为输入,并递归地计算每个 token 之间的匹配。为了合成分辨率更高的图像,研究者在每个阶段之后插入了一个由 reshaping 和 pixelshuffle 模块组成的上采样模块。 具体操作上,上采样模块首先将 1D 序列的 token 嵌入变形为 2D 特征图,然后采用 pixelshuffle 模块对 2D 特征图的分辨率进行上采样处理,并下采样嵌入维数,最终得到输出。然后,2D 特征图 X’_0 再次变形为嵌入 token 的 1D 序列,其中 token 数为 4HW,嵌入维数为 C/4。所以,在每个阶段,分辨率(H, W)提升到两倍,同时嵌入维数 C 减少至输入的四分之一。这一权衡(trade-off)策略缓和了内存和计算量需求的激增。研究者在多个阶段重复上述流程,直到分辨率达到(H_T , W_T )。然后,他们将嵌入维数投影到 3,并得到 RGB 图像。用于判别器的 tokenized 输入与那些需要准确合成每个像素的生成器不同,该研究提出的判别器只需要分辨真假图像即可。这使得研究者可以在语义上将输入图像 tokenize 为更粗糙的 patch level(Dosovitskiy 等人,2020)。 如上图 1 右所示,判别器以图像的 patch 作为输入。研究者将输入图像分解为 8 × 8 个 patch,其中每个 patch 可被视为一个「词」。然后,8 × 8 个 patch 通过一个线性 flatten 层转化为 token 嵌入的 1D 序列,其中 token 数 N = 8 × 8 = 64,嵌入维数为 C。再之后,研究者在 1D 序列的开头添加了可学得位置编码和一个 [cls] token。在通过 Transformer 编码器后,分类 head 只使用 [cls] token 来输出真假预测。 实验 CIFAR-10 上的结果 研究者在 CIFAR-10 数据集上对比了 TransGAN 和近来基于卷积的 GAN 的研究,结果如下表 5 所示: 如上表 5 所示,TransGAN 优于 AutoGAN (Gong 等人,2019) ,在 IS 评分方面也优于许多竞争者,如 SN-GAN (Miyato 等人, 2018)、improving MMDGAN (Wang 等人,2018a)、MGAN (Hoang 等人,2018)。TransGAN 仅次于 Progressive GAN 和 StyleGAN v2。对比 FID 结果,研究发现,TransGAN 甚至优于 Progressive GAN,而略低于 StyleGANv2 (Karras 等人,2020b)。在 CIFAR-10 上生成的可视化示例如下图 4 所示:STL-10 上的结果研究者将 TransGAN 应用于另一个流行的 48×48 分辨率的基准 STL-10。为了适应目标分辨率,该研究将第一阶段的输入特征图从(8×8)=64 增加到(12×12)=144,然后将提出的 TransGAN-XL 与自动搜索的 ConvNets 和手工制作的 ConvNets 进行了比较,结果下表 6 所示:与 CIFAR-10 上的结果不同,该研究发现,TransGAN 优于所有当前的模型,并在 IS 和 FID 得分方面达到新的 SOTA 性能。高分辨率生成由于 TransGAN 在标准基准 CIFAR-10 和 STL-10 上取得不错的性能,研究者将 TransGAN 用于更具挑战性的数据集 CelebA 64 × 64。 TransGAN-XL 的 FID 评分为 12.23,这表明 TransGAN-XL 可适用于高分辨率任务。可视化结果如图 4 所示。局限性虽然 TransGAN 已经取得了不错的成绩,但与最好的手工设计的 GAN 相比,它还有很大的改进空间。在论文的最后,作者指出了以下几个具体的改进方向:对 G 和 D 进行更加复杂的 tokenize 操作,如利用一些语义分组 (Wu et al., 2020)。使用代理任务(pretext task)预训练 Transformer,这样可能会改进该研究中现有的 MT-CT。更加强大的注意力形式,如 (Zhu 等人,2020)。更有效的自注意力形式 (Wang 等人,2020;Choromanski 等人,2020),这不仅有助于提升模型效率,还能节省内存开销,从而有助于生成分辨率更高的图像。作者简介本文一作 Yifan Jiang 是德州大学奥斯汀分校电子与计算机工程系的一年级博士生(此前在德克萨斯 A&M 大学学习过一年),本科毕业于华中科技大学,研究兴趣集中在计算机视觉、深度学习等方向。目前,Yifan Jiang 主要从事神经架构搜索、视频理解和高级表征学习领域的研究,师从德州大学奥斯汀分校电子与计算机工程系助理教授 Zhangyang Wang。 在本科期间,Yifan Jiang 曾在字节跳动 AI Lab 实习。今年夏天,他将进入 Google Research 实习。 一作主页:https://yifanjiang.net/ 参考链接:https://www.reddit.com/r/MachineLearning/comments/ll30kf/r_transgan_two_transformers_can_make_one_strong/ 本文转自: https://www.jiqizhixin.com/articles/2021-02-17
-
涵盖 2D 和 3D 特征点、语义分割、3D 眼球注释以及注视向量和眼动类型等因素,德国图宾根大学的研究者创建了全球最大的人眼图像公开数据集——TEyeD。在当今世界,基于图像的眼动追踪(eye tracking)变得越来越重要,这是因为人眼运动有可能变革我们与周围计算机系统交互的方式。此外,眼动的方式可以识别甚至在某种程度上预测我们的行动和意图,所以眼动分析可以赋能新的应用,特别是与 VR 或 AR 等现代显示技术结合时。例如,人眼注视(gaze)信号连同人机交互的可能性,使得残疾人能够借助专门为其疾症设计的特殊设备来与环境进行交互。在手术显微镜的应用场景中,外科医生必须进行多种控制行为,这时视觉信号可以用于自动对焦。人眼注视行为还可用于诊断精神分裂症、自闭症、阿尔茨海默症、青光眼等多种疾病。在 VR 或 AR 游戏中,人眼注视信号可用于减少渲染资源的计算。除了人眼注视信息以外,对人眼的观察还可以带来更多信息源。例如人眼闭合的频率可用于衡量人的疲劳程度,这是汽车驾驶和航空飞行场景中的一种有效安全特征。另一个重要的信息源是瞳孔大小,它可以作为估计指定任务中人们认知负荷的基础,然后调整内容(如基于媒介的学习)以更好地适应人的精神状态。最后,借助虹膜特征以及个人的人眼注视行为,人眼相关的信息可以在生物识别过程中得到应用。近日,来自德国图宾根大学的研究者创建了世界上最大的、统一人眼图像公开数据集 TEyeD,这些图像均通过头戴式设备拍摄获取。具体而言,TEyeD 的创建过程中使用了七种不同的头戴式眼动追踪器,其中两个还结合了 VR 或 AR 设备。TEyeD 中的图像在不同的任务场景中获得,包括乘车、模拟飞行、户外体育运动以及日常室内活动。此外,数据集中的人眼图像包括 2D 和 3D 特征点、语义分割、3D 眼球注释以及注视向量(gaze vector, GV)和眼动类型。对瞳孔、虹膜和眼睑均提供了特征点和语义分割,视频长度从几分钟到几小时不等。TEyeD 数据集拥有 2000 多万张精心注释的人眼图像,为推动现代 VR 和 AR 应用中计算机视觉、眼动追踪和注视估计领域的研究提供了独特且一致的资源和良好的基础。论文地址:https://arxiv.org/pdf/2102.02115.pdf与现有数据集的对比下表 1 列出了包含人眼特写图像的现有数据集。每个数据集处理特定的问题,例如 Casia 和 Ubiris 数据集借助虹膜识别个人。在 NNVEC 中,对光学向量和眼球位置的直接估计可以补偿头戴式眼动追踪器的位移。TEyeD 通过使用 7 种分辨率不同的眼动追踪器结合并扩展了以前发布的数据集,合并了现有数据集提供的所有可用注释,并通过 3D 分割和特征点扩展了这些数据集。更具体地说,TEyeD 集成的数据集包括 NNGaze、LPW、GIW、ElSe、ExCuSe 和 PNET。此外,来自研究 [69] 的完整数据也得到了精心注释。TEyeD 一共包含 2000 多万张图像,是全球最大、利用头戴式眼动追踪器拍摄的图像数据集。数据集详情下图 1 展示了 TEyeD 数据集中的示例图像。具体而言,第 1 和第 5 列包含输入图像;第 2 和第 6 列的人眼图像展示了巩膜、虹膜和瞳孔的叠加分割(overlaid segmentation);第 3 和第 7 列展示了输入图像的特征点,其中红色表示眼睑、绿色表示虹膜、白色表示瞳孔;第 4 和第 8 列展示了计算出的眼球以及眼球中心和注视向量。下图 2 展示了瞳孔(左)、虹膜(中)和眼睑(右)特征点的对数分布:下图 3 展示了瞳孔、虹膜和巩膜的区域分布箱形图(左),以及注视向量的对数分布(右):下图 4 展示了眼球位置 (x,y) 的分布,以及映射到固定分辨率 192×144 的眼球半径(以像素为单位)箱形图:注释过程对于 TEyeD 数据集中的特征点注释和语义分割,研究者同时使用了半监督方法和多注释 maturation (MAM) 算法。与原始算法不同,他们没有用 SVM,而是将卷积神经网络(CNN)与 HOG 特征相结合。此外,研究者还将迭代次数限制在了 5 次,并使用两个竞争模型。其中一个模型包含 ResNet50,并使用 [36] 中的验证损失函数进行特征点回归训练;对于另一个模型,他们将语义分割与 U-Net 和残差块一起训练。最初,研究者对 2 万张具有特征点的图像进行了注释,并将它们转化成语义分割。然后,他们训练 CNN 并利用 MAM 算法不断进行改进。在 5 次迭代后,ResNet50 特征点转化成了语义分割并与 U-Net 结果进行对比。具体而言,研究者基于 [30] 中的方法对 3D 眼球和光学向量进行了注释。但是,他们没有使用椭圆形瞳孔,而是使用了椭圆形虹膜,这是因为后者仅受角膜曲率(corneal refraction)的部分影响。通过结合 2D 特征点、分割和 3D 眼球模型,研究者对 3D 特征点和分割进行了几何计算。由于瞳孔总是位于虹膜的中心,他们考虑了两种不同的 3D 分割和 3D 特征点。眼动注释则分为了注视(眼球静止不动)、扫视(两次注视之间的快速眼动)、平滑跟随(缓慢眼动)和眨眼。基准评估在实验中,研究者将数据分成训练集和验证集。为了避免训练和验证集中出现相同的实验对象,他们将整个记录分配给训练集和验证集的其中一个。对于评估环境,研究者将基于 C ++ 的 CuDNN 框架用于神经网络模型。测试环境硬件包括一个 4 核心、16GB DDR4 内存的 Intel i5-4570 CPU 和一个 4 GB 内存的 NVIDIA 1050ti。下表 3 显示了特征点回归的结果。结果表明,如预期一样,较大模型在回归任务上更加有效。下表 4 得出了同样的结论,其中显示了眼球参数估计的结果:如上表 3 和 4 所示,与现有规模较小的数据集相比,我们可以看到 TEyeD 数据集具有明显优势。这些结果还表明,如预期的那样,对现实世界场景中拍摄的图像进行跨眼球追踪(cross-eye-tracker)泛化是一项具有挑战性的任务,但通过结合使用 TEyeD 与更复杂的架构可以处理这项任务。因此,无论何时使用一种新的眼动追踪设备都可以轻松解决跨眼球追踪泛化任务,并且无需创建和注释新数据。下图 5 显示了语义分割的结果:下表 6 显示了眼动识别的结果。可以看到,注视向量在眼动分类中更加有效,因为它对眼动追踪器的位移做出了补偿。
-
华为诺亚方舟实验室联合北京大学、悉尼大学发布论文《SCOP: Scientific Control for Reliable Neural Network Pruning》提出基于科学控制法的神经网络剪枝方法。在精度几乎无损情况下,网络计算量减小60%以上,论文已经发表在NeurIPS 2020。开源链接:https://github.com/huawei-noah/Pruning/tree/master/SCOP_NeurIPS2020论文链接:https://proceedings.neurips.cc/paper/2020/file/7bcdf75ad237b8e02e301f4091fb6bc8-Paper.pdf研究背景卷积神经网络(CNN)已在大规模计算机视觉应用中得到了广泛的使用并取得了巨大的成功,但是由于对计算能力和内存要求很高,很难将这些CNN部署在移动电话、可穿戴设备等边缘设备上。卷积核修剪方法会删除整个卷积核,无需特定的软件和硬件设计即可实现实际的加速。传统的卷积核修剪方法可以主要分为两类。第一类方法不需要训练数据,通过定义一些卷积核重要性的假设,来判定不同卷积核的重要性。比如,一个典型的假设是范数小的卷积核不重要,砍掉一些范数小的卷积核不会太多地影响网络的表现。还有一类方法是数据驱动的方法,引入训练数据来学习不同卷积核的重要性。比如通过给每个卷积核引入额外的控制系数,通过学习这些控制系数来度量不同卷积核的重要性,小的控制系数对应的卷积核被认为不重要。但是,在基于特定假设以衡量过滤器重要性时,不可避免地会引入大量潜在因素,这可能会干扰剪枝过程。例如,不同通道之间的依赖性可能会误导那些基于范数的方法,因为某些特征或者过滤器不包含有用的信息,但具有较大的范数。对于一些数据驱动的方法,卷积核的重要性可能对输入数据的细微变化非常敏感,从而导致不稳定的结果结果。实际上,更多的潜在因素伴随着特定的修剪方法,并且还取决于不同的场景,在设计修剪方法时单独枚举和分析它们是不太现实的。因此,本文提出了一个基于科学控制法(Scientific Control)的神经网络剪枝方法,通过设置对照实验,同时减少各种无关因素的对剪枝过程的干扰,提高剪枝结果的可靠性。高仿特征高仿特征是一些生成的特征,它们和真实特征在分布上相似,但几乎不包含与目标相关的信息,定义如下:定义1 给定真实特征, 它们的高仿版本是和有相同形状的随机特征,它们满足以下(1)可交换性和(2)独立性两个条件:对于所有的,都成立。(1)式表明高仿特征和真实特征十分相似,(2)式表明高仿特征独立于样本标签的预测过程。直观地,高仿特征和真实特征的唯一不同在于是否和样本标签有关,因此可以把高仿特征作为真实特征的对照,通过比较这两种特征,挖掘卷积核的冗余性。基于科学控制法的网络剪枝在生成高仿数据之后,将真实数据和高仿数据同时输入到一个预训练的网络中,分别生成真实特征和高仿特征。我们将高仿特征和真实特征放到一起,作为第(l+1)层的输入,然后设计一个选择策略来从他们之中选择和目标相关的特征。这里E表示损失函数,Y是真实数据的标签。真实特征和其高仿副本分别是网络对真实数据和高仿数据的响应,但高仿副本不包含有关标签的信息。在这里,真实特征被视为实验组,它与网络输出的关系需要被挖掘;而高仿特征则作为控制组,用来最大程度地减少潜在无关因素的影响。为了在一个预训练的深度神经网络有效的卷积核,我们在网络中的每个卷积层之后插入一个选择层,这里是真实特征和高仿特征的控制系数,他们满足约束条件是激活函数,表示卷积操作,是按元素的乘法。除了真实特征之外,高仿特征也有机会参与到之后特征图的计算,它参与的程度取决于取决于控制系数。在实际应用中,我们可以通过同时将真实数据同时输入到网络来获得真实特征因此,可以通过将真实数据及其仿射实验和SOTA方法的比较我们在基准数据集CIFAR-10和大规模ImageNet(ILSVRC-2012)数据集进行大量实验,验证提出方法的有效性。CIFAR-10数据集包含来自10类的60kRGB图像,用于训练的50k图像和用于测试的10k。Imagenet(ILSVRC-2012)是一个大型数据集,包含128万个训练图像和来自1000个类别的50k验证图像。表1和表2的结果显示,我们的方法均取得了超越传统方法的性能。高仿数据可视化下图直观地显示了真实数据和它们相应的高仿数据。真实数据包含和真实标签有关(比如鱼类)的信息,这些信息可以被神经网络充分利用来识别目标。生成的高仿数据与真实图像十分相似,但是不包含目标信息,因此它们几乎不能提供有效的信息。真实特征和高仿特征的频率分布直方图如(c)所示,可以看出真实特征和高仿特征在分布上十分相似。本文来源:https://mp.weixin.qq.com/s/j2GHtGHr3aDBHV4riJ-yyw
上滑加载中