• [精彩回顾] 人工智能十年回顾:CNN、AlphaGo、GAN……它们曾这样改变世界
    盘点 AI 十年来取得的重要突破。过去十年间,人工智能技术突飞猛进,最疯狂的科幻小说场景现在已经成为我们生活中不可或缺的一部分。十年前,人们在谈论 AI 的理论化和实验,但这些年来,AI 变得更加切实了,也变成了主流。无论是国际标准课程、平台、库、框架、硬件,一切都顺理成章。就算说这十年里取得的成绩奠定了未来的基础,也不为过。这篇文章将盘点 AI 十年来取得的重要突破。卷积2012 年是深度学习历史上重要的一年。那一年,卷积神经网络(CNN)在著名的 ImageNet 挑战赛中大放异彩。由 Alex Krizhevsky 等人设计的卷积神经网络「Alexnet」以远超第二名的成绩夺冠,在 ImageNet 数据集上的视觉识别错误率为 15.3%,降低了一半。该神经网络对猫的检测准确度达到了 74.8%,在 YouTube 视频中检测人脸的准确率为 81.7%。现在,手机和商场中的人脸识别应用都应该归功于 2012 年的这项工作,识别准确率的提升使研究者能够进行医学成像模型的部署,这些模型具备高置信度。与 AI 对话Vaswani 等人 2017 年发表的《Attention Is All You Need》带来了级联效应,使得机器能够以前所未有的方式去理解语言。得益于 Transformer 架构,AI 现在能够撰写假的新闻、推文,甚至可能引起政治动荡。继 Transformer 之后,谷歌又推出了 BERT 模型,将其用于关键字预测和 SEO 排名等。BERT 如今已经变成了自然语言处理领域的实际标准,诸如 Microsoft 和 NVIDIA 之类的公司开始堆积更多参数来追赶该模型。NVIDIA 的 Megatron 具有 80 亿个参数,而 Microsoft 的 Turing NLG 模型具有 170 亿个参数。OpenAI 的 GPT 模型后来居上,1750 亿参数的 GPT-3 目前是历史记录的保持者。GPT-3 也是 Transformer 的扩展,是目前最大的模型,它可以编码、写散文、生成商业创意,只有人类想不到,没有它做不到。将人类一军AI 早已在国际象棋中击败了人类。而更加复杂的人类游戏,如 Jeopardy! 游戏、围棋、德州扑克等,也没有挡住算法的脚步。人工智能近几年来最广为人知的事件就是 AlphaGo 在最复杂棋类游戏——「围棋」上击败了人类顶级选手。与此同时,在这个十年中,IBM 的 Watson 也在 Jeopardy! 决赛中击败了两位人类,最终 Watson 获得了 77147 美元奖金,而两位人类分别获得了 24000 和 21600 美元。Facebook 和卡耐基梅隆大学共同开发的德扑 AI Pluribus 战胜了五名专家级人类玩家,实现了前辈 Libratus(冷扑大师)未能完成的任务,该研究还登上了 2019 年的《科学》杂志。2020 年 12 月,DeepMind 提出的 MuZero 让一种人工智能模型掌握多种游戏,包括将棋、国际象棋和围棋。每一个生物体的行为都可以在其蛋白质中寻踪溯源。蛋白质承载着秘密,**蛋白质或许有助于击败新冠大流行。但蛋白质结构非常复杂,需要不断地运行模拟。DeepMind 尝试解决这一难题,其开发的深度学习算法「Alphafold」**了出现五十年之久的蛋白质分子折叠问题。计算机视觉被证明可以帮助诊断,而解决蛋白质折叠问题甚至能够帮助研发人员开发新药。AI:是艺术家,也是骗子去年,在一则视频中,比利时首相谈论着解决经济和气候危机的紧急需求,后来人们发现这其实是 Deepfake 视频。在机器学习和 AI 对比利时首相声音和表达方式的操纵下,这则假视频让首相发表了一场关于全球变暖影响的演讲。这些伪造内容的背后是精心设计的算法——生成对抗网络(GAN)。该算法在 2014 年提出,并得到广泛应用,甚至已经侵入了人类工作的最后一道壁垒:创作。这种网络可以生成从未存在的人脸、互换人脸,让一国总统胡言乱语。GAN 生成的一幅画甚至在佳士得拍卖会上以破纪录的价格——40 万美元成交了。GAN 的另一面是被用于恶意目的,以致于像 Adobe 这种公司不得不研究新技术来鉴别伪造内容。GAN 在下一个十年里仍将是被广泛讨论的对象。秘密武器——硅神经网络的概念诞生了半个世纪,今天流行的反向传播方法也出现三十年了。但是,我们仍然缺少能够运行这些计算的硬件。过去十年,我们见证了十多家公司研究专门的机器学习芯片。这些年来,芯片技术得到了极**展,我们可以在手掌大小的设备上执行百万次运算。这些芯片被用到数据中心,用户可以观看自己喜欢的 Netflix 电影、使用智能手机等。接下来,专为边缘设备定制的 AI 芯片蕴含着价值数十亿美元的商机。苹果等公司已经开发了定制化机器学习芯片(如 A14 Bionic)来提供智能服务。即使是依赖英伟达和英特尔的 AWS,也正在慢慢进入芯片行业。随着芯片变得越来越小,这一趋势只会更加明显:例如使用英伟达 Jetson AGX Xavier 开发者套件,你可以轻松创建和部署端到端 AI 机器人应用,用于制造、零售、智能城市等等。谷歌的 Coral 工具包可将机器学习带到边缘设备上。安全、实时输出是目前的主题。开源文化逐渐成熟2015 年,TensorFlow 开源。一年后,Facebook AI 又开源了基于 Python 的深度学习框架 PyTorch。今天,TensorFlow 和 PyTorch 已经成为使用最广泛的框架。通过不断的版本更新,谷歌和 Facebook 为机器学习社区带来了极大便利。自定义库、软件包、框架和工具的爆发式增长,使得更多人进入了 AI 领域,也为 AI 研究带来了更多人才。开源是近几年的一个主要特性。开源工具和越来越多的可用资源(如 arxiv 或 Coursera)促进了 AI 变革。另一个催化剂是流行的竞赛平台——Kaggle。Kaggle 和 GitHub 滋养了一批高质量 AI 开发者。更多学习,更少规则Schmidhuber 教授上世纪 90 年代初提出的元学习概念,最近才逐渐得到关注。元学习指在有限训练示例的基础上,使机器学习模型学习新技能并适应不断变化的环境。通过操纵超参数对特定任务优化机器学习模型需要大量用户输入的话,过程会较为繁琐,而使用元学习后,这一负担将得到极大缓解,因为元学习将优化部分自动化了。自动优化带来了一个新的行业 MLaaS(机器学习即服务)。未来方向关于一些专家预测以下领域或许将发挥主要作用:可复现性差分隐私几何深度学习神经形态计算强化学习尽管 AI 已经进入许多我们未曾想象的领域,但它仍需应用到更流行的应用中,如自动驾驶汽车。然而,挑战更多地在于数学层面:目前已有能够做出准确决策的算法,也有能够处理这些算法的处理器,但何时能够部署到应用上仍未可知。不管是医疗还是自动驾驶汽车,AI 仍需要继续进展,而这只有在透明性和可复现性得到建立时才会发生。原文链接:https://**yticsindiamag.com/ai-top-decade-2010-2020-breakthroughs/本文来源:https://www.jiqizhixin.com/articles/2021-01-11-3作者:RAM SAGAR编译:蛋酱 魔王
  • [其他] 基于同态加密的横向联邦学习
    除了 Secure Aggregation 方法外,我们亦可使用同态加密技术对参与者的梯度信息进行保护。同态加密是密码学研究中的「明珠」,其特殊性质在于,可以直接在密文上进行计算而无需解密。根据同态加密算法在密文上支持算子的不同,可以将其分为:加法同态、乘法同态和全同态算法。 在横向联邦学习中一般使用支持加法的同态加密算法,即参与者在上传模型数据前,首先对其进行加密,然后中心服务器收到密文后,在密文上进行加法聚合,再将密文结果返回给参与者,假设使用的同态加密为部分同态,则参与者需要先解密、再完成模型更新;如果使用的同态加密为全同态加密,则参与者无需进行解密,可以在密文的模型上进行更新。 下图  展示了一个标准的基于加法同态加密的横向联邦学习框架,该框架的运算流程可以概括为以下三个步骤:Map:中心服务器将当前加密模型分发给参与者,收到模型的参与者先对模型进行加密,再在本地数据上进行参数的有偏估计;Aggregate:中心服务器收集参与者的加密参数估计,进行聚合,得到新的、密态下的模型参数;Reduce:中心服务器使用聚合后的新加密参数最为当前模型。图 :基于加法同态加密的横向联邦学习 [3]。 基于全同态的横向联邦框架:除了使用加法同态算法之外,还可以使用全同态对横向联邦里的参数信息进行保护。在使用了全同态加密后,不止中心服务器上的参数聚合在密文下,参与者本地的模型更新也是在密文下,多方需要预先规定训练次数,在达到指定数量后停止训练。 安全性分析(密钥管理):在对基于同态加密的联邦学习系统进行安全性分析之前,还有一点需要我们额外注意的,那就是同态加密算法在使用中如何管理密钥。大部分同态加密算法仅有一个私钥,即在使用中,所有的参与者持有同一组公私钥、然后将公钥分享给中心服务器。但这种模型安全性较低,一旦有一个参与者与中心服务器共谋,系统的安全性就下降到了 vanilla 联邦学习。以上问题目前有一个较好的解决方案,即使用阈值同态加密算法 [10,11],该类型的同态加密算法支持多个私钥存在,并且当一定数量以上的私钥参与,才能将密文成功解密,近期阈值同态加密研究火热 [7,8,9],受到了广泛关注。 安全性分析(总结):在使用了同态加密之后,中心服务器无法获取任何有效的明文信息,所以也无法进行梯度攻击。并且借助阈值同态加密,多个参与者可以各自持有一个私钥,可以大大提升了系统的安全性,可以说参与者的数据十分安全。 转发自https://www.jiqizhixin.com/
  • [其他] 应用迭代-基于数据的应用迭代优化
    应用迭代优化主要包含两个方面,1,从数据上提升应用迭代效果 2,从算法和模型角度提升应用迭代效果1,从数据上提升应用迭代效果当推理态数据经过采集,筛选之后,可以进一步做处理和分析。ModelArts支持针对难例数据的推荐和数据增强,最终对用户的数据集进行补充,从而进一步提升模型精度。2,从算法和模型角度提升应用迭代效果模型训练过程和评估调优过程涉及的内容非常多,可以根据实际场景从模型迁移(修正模型,扩展模型),模型替换,多模型集成等多个角度综合提升模型性能,最终将模型打包为应用以增强迭代后的效果。基于数据的应用迭代优化最简单的模型维护方式是添加数据,或者在此基础上做进一步数据增强,进一步提升模型迭代的精度。基于数据的应用迭代优化流程       输入数据集->合并->重训练->部署推理数据集->新数据集->合并->重训练->部署推理数据集->难例挖掘->新数据集->合并->重训练->部署为了避免模型在新数据上发生拟合,通常需要将新老数据集合并在一起增量训练。1,简单重训练在实际业务场景中,应用维护是一个长期的过程,伴随着不断的数据采集和模型重复训练。如,按每周,每月进行重训练,或累计数据到一定数量时进行定期的重训练。另外,针对一些对时间比较敏感的场景,可以对新数据做一些加权。2,难例增强为了进一步提升应用迭代的效果,需要在数据采集和难例筛选的基础上做进一步的难例数据增强。如数据特征分析方法,可以利用数据特征统计分析工具对难例数据和训练做出统计对比,从而在某些特征维度上使得训练数据的特征统计分布向难例数据靠近。
  • [其他] 在自定义的数据集上训练YOLOv5(4)
    评估定制YOLOv5检测器的性能 现在我们已经完成了训练,我们可以通过查看验证指标来评估训练过程的执行情况。训练脚本将删除tensorboard日志,我们将其可视化: 在我们的自定义数据集上可视化tensorboard结果 如果你因为一些原因不能把张量可视化,可以用utils.plot_result来绘制并保存为result.png。 你需要在验证评估分数达到其最高点处获取训练好的模型权重。 可视化YOLOv5训练数据 在训练过程中,我们可以可视化真实训练数据和增强后的训练数据。 我们的真实训练数据 我们的训练数据采用自动YOLOv5增强 对象测试图像运行YOLOv5推断 现在我们利用我们训练好的模型,对测试图像进行推理。训练完成后,模型权重将保存到 weights/。推理过程,我们调用这些权重和一个指定模型置信度的conf(要求的置信度越高,预测越少)、以及一个推理源。源可以接受一个包含图像、单个图像、视频文件以及设备的网络摄像头端口的目录。对于源代码,我将test/*jpg移到test-infer/。 !python detect.py --weights weights/last_yolov5s_custom.pt --img 416 --conf 0.4 --source ../test_infer推理时间非常快,在我们的 Tesla P100 上,YOLOv5s 达到了每秒142帧!!以142 FPS(0.007s/图像)的速度推断YOLOv5s 最后,我们在测试图像上可视化我们的检测器推断结果。 测试图像的YOLOv5推理 导出并保存YOLOv5权重以将来推断 既然我们定制的YOLOv5物体检测器已经通过验证,我们需要从Colab中取出权重,用于实时计算机视觉任务,为此我们导入一个Google驱动器模块并将其发送出去。 from google.colab import drive drive.mount('/content/gdrive') %cp /content/yolov5/weights/last_yolov5s_custom.pt /content/gdrive/My\ Drive结论 我们希望你可以训练属于你自己的定制YOLOv5检测器!使用 YOLOv5 非常方便,而且训练迅速,推理迅速,表现出色。让我们把它弄出来!
  • [其他] 在自定义的数据集上训练YOLOv5(3)
    定义YOLOv5模型配置和架构 接下来,我们为我们的定制对象检测器编写一个模型配置文件。在本教程中,我们选择了最小、最快的YOLOv5基本模型,你也可以从其他YOLOv5模型中选择,包括:YOLOv5sYOLOv5mYOLOv5lYOLOv5x你也可以在此步骤中编辑网络结构,但一般不需要这样做。以下是YOLOv5模型配置文件,我们将其命名为custom_yolov5s.yaml: nc: 3 depth_multiple: 0.33 width_multiple: 0.50 anchors: - [10,13, 16,30, 33,23] - [30,61, 62,45, 59,119] - [116,90, 156,198, 373,326] backbone: [[-1, 1, Focus, [64, 3]], [-1, 1, Conv, [128, 3, 2]], [-1, 3, Bottleneck, [128]], [-1, 1, Conv, [256, 3, 2]], [-1, 9, BottleneckCSP, [256]], [-1, 1, Conv, [512, 3, 2]], [-1, 9, BottleneckCSP, [512]], [-1, 1, Conv, [1024, 3, 2]], [-1, 1, SPP, [1024, [5, 9, 13]]], [-1, 6, BottleneckCSP, [1024]], ] head: [[-1, 3, BottleneckCSP, [1024, False]], [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1, 0]], [-2, 1, nn.Upsample, [None, 2, "nearest"]], [[-1, 6], 1, Concat, [1]], [-1, 1, Conv, [512, 1, 1]], [-1, 3, BottleneckCSP, [512, False]], [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1, 0]], [-2, 1, nn.Upsample, [None, 2, "nearest"]], [[-1, 4], 1, Concat, [1]], [-1, 1, Conv, [256, 1, 1]], [-1, 3, BottleneckCSP, [256, False]], [-1, 1, nn.Conv2d, [na * (nc + 5), 1, 1, 0]], [[], 1, Detect, [nc, anchors]], ]训练定制YOLOv5探测器我们的data.yaml和custom_yolov5s.yaml文件已经准备好了,我们库开始训练了! 为了开始训练,我们使用以下选项运行训练命令:img:定义输入图像大小 batch:确定batch大小 epochs:定义epochs。(注:通常,3000+很常见!) data:设置yaml文件的路径 cfg:指定我们的模型配置 weights:指定权重的自定义路径。(注意:你可以从Ultralytics Google Drive文件夹下载权重) name:结果名称 nosave:只保存最后的检查点 cache:缓存图像以加快训练速度 运行训练命令: 训练定制的YOLOv5探测器。它训练得很快! 在训练期间,你可以看 mAP@0.5 来了解你的探测器是如何运行的,请参阅这篇文章。https://blog.roboflow.ai/what-is-mean-average-precision-object-detection/
  • [其他] 在自定义的数据集上训练YOLOv5(2)
    安装YOLOv5环境!git clone https://github.com/ultralytics/yolov5 # clone repo !pip install -U -r yolov5/requirements.txt # install dependencies %cd /content/yolov5然后,我们可以看看谷歌Colab免费提供给我们的训练环境。import torch from IPython.display import Image # for displaying images from utils.google_utils import gdrive_download # for downloading models/datasets print('torch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))你会从谷歌Colab收到一个 Tesla P100 GPU。以下是我收到的:torch 1.5.0+cu101 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', major=6, minor=0, total_memory=16280MB, multi_processor_count=56)GPU可以让我们加快训练时间,Colab预装了torch和cuda。如果你尝试在本地使用本教程,可能需要执行其他步骤来设置YOLOv5。 下载自定义YOLOv5对象检测数据 在本教程中,我们将从Roboflow下载YOLOv5格式的自定义对象检测数据。在本教程中,我们使用公共血细胞检测数据集训练YOLOv5检测血流中的细胞,你可以使用公共血细胞数据集或上传你自己的数据集。Roboflow:https://roboflow.ai/公共血细胞数据集:https://public.roboflow.ai/object-detection/bccd 关于标记工具的说明 如果你有未标记的图像,则首先需要标记它们。对于免费的开源标签工具,我们推荐你阅读 LabelImg入门 或 CVAT注释工具入门 的教程指南。尝试标记约50幅图像再继续本教程,因为在以后提高模型的性能的过程中,你将需要添加更多标签。https://blog.roboflow.ai/getting-started-with-labelimg-for-labeling-object-detection-data/https://blog.roboflow.ai/getting-started-with-cvat/一旦你标记了数据,要将数据移动到Roboflow中,请创建一个免费帐户,然后你可以以任何格式拖动数据集:(VOC XML、COCO JSON、TensorFlow对象检测CSV等)。 上传后,你可以选择预处理和增强步骤: 为BCCD示例数据集选择设置 然后,单击 Generate 和 Download,你将可以选择YOLOv5 Pythorch格式了。 选择“YOLO v5 Pythorch” 当出现提示时,一定要选择“Show Code Snippet”,这将输出一个下载curl脚本,这样你就可以轻松地将数据以正确的格式移植到Colab中。 curl -L "https://public.roboflow.ai/ds/YOUR-LINK-HERE" > roboflow.zip; unzip roboflow.zip; rm roboflow.zip正在Colab中下载…下载YOLOv5格式的自定义对象数据集 导出将会创建一个名为data.yaml的YOLOv5.yaml文件,指定YOLOv5 images文件夹、YOLOv5 labels文件夹的位置以及自定义类的信息。
  • [其他] 在自定义的数据集上训练YOLOv5(1)
    YOLO系列的目标检测模型随着YOLOv5的引入变得越来越强大了。在这篇文章中,我们将介绍如何训练YOLOv5为你识别自己定制的对象。本文我们使用公共血细胞检测数据集,你可以自己导出,也可以在自己自定义数据上使用本教程。公共血细胞检测数据集:https://public.roboflow.ai/object-detection/bccd为了训练检测器,我们采取以下步骤:安装YOLOv5依赖项 下载自定义YOLOv5对象检测数据 定义YOLOv5模型配置和架构 训练一个定制的YOLOv5检测器 评估YOLOv5性能 可视化YOLOv5训练数据 对测试图像使用YOLOv5进行推断 导出并保存YOLOv5权重以供将来使用 YOLOv5的新技术点就在两个月前,我们对googlebrain引入EfficientDet感到非常兴奋,并写了一些关于EfficientDet的博客文章。我们认为这个模型可能会超越YOLO家族在实时目标探测领域的突出地位,但事实证明我们错了。 三周内,YOLOv4在Darknet框架下发布,我们还写了很多关于YOLOv4技术解析的文章。 在写这些文章的几个小时之前,YOLOv5发布了,我们发现它非常清晰明了。 YOLOv5是在Ultralytics-Pythorch框架中编写的,使用起来非常直观,推理速度非常快。事实上,我们和许多人经常将YOLOv3和YOLOv4 Darknet权重转换为Ultralytics PyTorch权重,以便使用更轻的库来更快地进行推理。 YOLOv5比YOLOv4表现更好吗?我们很快会向你介绍,在此之前你需要已经对YOLOv5和YOLOv4有了初步的了解。YOLOv5与EfficientDet的性能对比 YOLOv4显然没有在YOLOv5存储库中进行评估,也就是说,YOLOv5更易于使用,而且它在我们最初运行的定制数据上表现非常出色。 我们建议你在 YOLOv5 Colab Notebook 中同时进行接下来的操作。https://colab.research.google.com/drive/1gDZ2xcTOgR39tGGs-EZ6i3RTs16wmzZQ
  • [其他] 日志提示"write line error"
    问题现象在程序运行过程中,刷出大量错误日志"write line error"。并且问题是必现问题,每次运行到同一地方的时候,出现错误,具体见下面截图。图1 错误日志原因分析出现该问题的可能原因如下:程序运行过程中,产生了core文件,core文件占满了"/"根目录空间。本地数据、文件保存将"/cache"目录3.5T空间用满了。说明:云上训练磁盘空间满一般是两个地方1.一个是“/”根目录,这个是docker中配置项“base size”,默认是10G,云上统一改成50G了。2.一个是‘/cache’目录满了,一般是3.5T存储空间满了,具体规格的空间大小见如下文档。处理方法如果是有core文件生成,可以在启动脚本最前面加上如下代码,来关闭core文件产生。import os os.system("ulimit -c 0")排查数据集大小,checkpoint保存文件大小,是否占满了磁盘空间。必现的问题,使用本地Pycharm远程连接Notebook调试。建议与总结在创建训练作业前,推荐您先使用ModelArts开发环境调试训练代码,避免代码迁移过程中的错误。直接使用线上notebook环境调试请参考使用JupyterLab开发模型配置本地IDE(Pycharm或者VsCode)联接云上环境调试请参考使用本地IDE开发模型
  • [其他] 特奖得主任队长,清华夺冠NeurIPS 2021国际深度元学习挑战赛
    国际AI顶级会议 NeurIPS 2021 召开。清华大学朱文武教授实验室 Meta_Learners 团队在 NeurIPS 2021 举办的第二届国际深度元学习挑战赛(MetaDL Challenge)中夺得冠军。该团队在最终阶段的五个数据集中以平均准确率超越第二名 17.5%(相对提升 22.3%)的优势强势摘得桂冠。元学习(Meta Learning)作为机器学习迈向自动化的一个重要研究方向,已经得到了产学研各界的持续关注。元学习旨在让机器学习算法从已经学过的任务中总结学习经验,提取「元」知识,来在遇到新场景、新任务时,让算法能够仅利用少量的样本就完成复杂的训练过程,从而又快又好地适应未知场景。为了进一步提升元学习算法在实际场景中的应用效果,机器学习比赛平台 ChaLearn 联合微软、谷歌等知名公司在各大人工智能学术顶级会议举办 MetaDL 系列竞赛。作为元学习领域的第二届国际竞赛,本次 NeurIPS 2021 MetaDL 挑战赛吸引了国内外顶尖团队的近五十支参赛队伍。    比赛关注元学习系统面对不同领域、不同质量的数据、任务时的表现。具体地,比赛要求选手们提供一个元学习系统,该系统需要在两小时、4 张 Tesla M60 显卡的环境中完成对已有任务的学习以及提取元知识,并在完全未知的 600 个图像分类任务(每个任务仅有 5 分类 x5 张 = 25 张标注图片,需要完成额外 95 张图片的标注)上完成快速学习和标签预测。此外,系统还需要在无人工调整的情况下适配包括生物、地质、病理、纹理、字符等不同领域的小样本图像分类问题,具有极大的挑战性。具体来说,这次比赛具有以下两个方面的挑战:    数据层面,来自各领域的图像内容和特性不同,采集与处理的方法也各不相同,有些是电子显微镜成像照片,有些是卫星传感照片,有些是人工手写字符,有些是家用摄像机拍照,这对元学习系统如何处理不同质量的输入信息提出挑战;    算法层面,不同领域的小样本任务需要不同的元知识,对应的特征提取算法、超参、框架也大有不同,这对元学习算法的泛化性和自适应能力提出巨大挑战。清华 Meta_Learners 团队赢得冠军此前,清华大学朱文武教授实验室的 Meta_Learners 团队就已在相关深度元学习比赛中取得优异成绩。在年初的AAAI 2021 国际首届深度元学习挑战赛(MetaDL Challenge)中,该团队以高出第二名 13% 性能的成绩强势夺冠。此次在 NeurIPS 2021 MetaDL 挑战赛中,团队延续了元学习领域的一贯优势,并再次夺得第一名。针对数据和算法层面的挑战,Meta_Learners 团队采用多级分辨率输入设计、低质量数据增强、混合领域半监督弱监督混合训练的方法来处理不同大小和质量的数据,解决数据层面的挑战。与此同时,他们采用半冻结模型参数更新与自动集成的方式来提取不同领域的元知识,解决算法层面的挑战。该团队提出的 MetaDelta++ 系统将向学术社区开源,为元学习算法进一步的研究和推广提供支持。官网地址:https://metalearning.chalearn.org/metadlneurips2021
  • [其他] 目标检测回归损失函数总结(5)
    CIoU Loss(2019)论文地址:https://arxiv.org/pdf/1911.08287.pdf代码地址:https://github.com/Zzh-tju/DIoU-darknet【动机】 解决DIoU loss没有包含长宽比因素的不足【分析】CIoU的惩罚项是在DIoU的惩罚项基础上加了一个影响因子。CIoU Loss定义为:其中  ,用于做trade-off的参数【实验】上表中左边是用5种不同Boudning Box Regression Loss Function的对比,右边是以IoU和GIoU来计算的2种Evaluation的结果;GIoU相对IoU会有2.49点提升,DIoU相对IoU会有3.29点提升,CIoU会有大概5.67点提升,CIoU结合DIoU-NMS使用效果最好,大概会有5.91点提升。【不足】 在CIoU的定义中,衡量长宽比过于复杂,从两个方面减缓了收敛速度长宽比不能取代单独的长宽,比如  都会导致v=0;从v的导数可以得到  ,这说明   在优化中意义相反。
  • [其他] 目标检测回归损失函数总结(4)
    DIoU Loss(2019)论文地址:https://arxiv.org/pdf/1911.08287.pdf代码链接:https://github.com/Zzh-tju/DIoU【动机】 解决GIoU Loss缺点当真实框完全包裹预测框的时候,IoU 和 GIoU 的值都一样,引入距离【分析】基于IoU和GIoU存在的问题,作者提出了两个问题:第一:直接最小化预测框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。第二:如何使回归在与目标框有重叠甚至包含时更准确、更快。好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。针对问题一,作者提出了DIoU Loss,相对于GIoU Loss收敛速度更快,该Loss考虑了重叠面积和中心点距离,但没有考虑到长宽比;针对问题二,作者提出了CIoU Loss,其收敛的精度更高,以上三个因素都考虑到了。其中表示预测框和真实框中心点欧氏距离,c表示预测框和真实框最小外界矩形的对角线距离,如下图所示绿色框为真实框,黑色框为预测框,灰色框为两者的最小外界矩形框,d表示真实框和预测框的中心点距离,c表示最小外界矩形框的距离。当2个框完全重合时,当2个框不相交时:【不足】 边框回归的三个重要几何因素:重叠面积、中心点距离和长宽比,DIoU 没有包含长宽比因素
  • [其他] 目标检测回归损失函数总结(3)
    GIOU Loss(2019)论文地址:https://arxiv.org/abs/1902.09630代码地址:https://github.com/generalized-iou/g-darknet【动机】 解决IoU Loss没有考虑两个框是如何相交【分析】GIoU定义如下:实际使用时:GIoU 取值范围为 [-1, 1],在两框重合时取最大值1,在两框无限远的时候取最小值-1;与 IoU 只关注重叠区域不同,GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。【实验】 GIoU Loss,在单阶段检测器YOLO v1涨了2个点,两阶段检测器涨点相对较少(原因分析:RPN的box比较多,两个框未相交的数量相对较少)【不足】 当真实框完全包裹预测框的时候,IoU 和 GIoU 的值都一样,此时 GIoU 退化为 IoU, 无法区分其相对位置关系。
  • [其他] 目标检测回归损失函数总结(2)
    IoU Loss(2016)论文地址:https://arxiv.org/pdf/1608.01471.pdf【动机】 针对smooth L1没有考虑box四个坐标之间相关性的缺点,【分析】 通过4个坐标点独立回归Building boxes的缺点:检测评价的方式是使用IoU,而实际回归坐标框的时候是使用4个坐标点,如下图所示,是不等价的;L1或者L2 Loss相同的框,其IoU 不是唯一的;通过4个点回归坐标框的方式是假设4个坐标点是相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性;基于L1和L2的距离的loss对于尺度不具有不变性;图(a)中的三组框具有相同的L2 Loss,但其IoU差异很大;图(b)中的三组框具有相同的L1 Loss,但IoU 同样差异很大,说明L1,L2这些Loss用于回归任务时,不能等价于最后用于评测检测的IoU.实际使用中简化为:【不足】当预测框和目标框不相交,即 IoU(bbox1, bbox2)=0 时,不能反映两个框距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不相交的情况。假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其 IoU 值是相同时,IoU 值不能反映两个框是如何相交的。
  • [其他] 目标检测回归损失函数总结(1)
    Smooth L1 Loss【动机】 Smooth L1 Loss完美的避开了L1和L2 Loss的缺点L1 Loss的问题:损失函数对x的导数为常数,在训练后期,x很小时,如果learning rate 不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。L2 Loss的问题:损失函数对x的导数在x值很大时,其导数也非常大,在训练初期不稳定。其中表示真实框坐标,表示预测的框坐标,即分别求4个点的loss,然后相加作为Bounding Box Regression Loss。【不足】 Smooth L1 Loss在计算目标检测的 bbox loss时,都是独立的求出4个点的 loss,然后相加得到最终的 bbox loss。这种做法的默认4个点是相互独立的,与实际不符。举个例子,当(x, y)为右下角时,w h其实只能取0。
  • [其他] K-means手写数字聚类介绍
    --- **概述** K-means聚类算法也称k均值聚类算法,是集简单和经典于一身的基于距离的聚类算法。它采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为类簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。 **基本思想** K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。 **实现步骤** 假设要把样本集分为k个类别,算法描述如下:   (1)适当选择k个类的初始中心,最初一般为随机选取;   (2)在每次迭代中,对任意一个样本,分别求其到k个中心的欧式距离,将该样本归到距离最短的中心所在的类;   (3)利用均值方法更新该k个类的中心的值;   (4)对于所有的k个聚类中心,重复(2)(3),类的中心值的移动距离满足一定条件时,则迭代结束,完成分类。 **步骤图解** ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202112/29/235824hi5turfjwx4immf7.png) 本案例推荐的理论学习视频: - [《AI技术领域课程--机器学习》 K-means](https://education.huaweicloud.com/courses/course-v1:HuaweiX+CBUCNXE086+Self-paced/courseware/986b8df89d9841f3bc76ddb8b1b9cfa8/3c225550b14a4279b4878d711bbd036c/) ## **注意事项** 1. 如果您是第一次使用 JupyterLab,请查看[《ModelArts JupyterLab使用指导》](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=03676d0a-0630-4a3f-b62c-07fba43d2857)了解使用方法; 2. 如果您在使用 JupyterLab 过程中碰到报错,请参考[《ModelArts JupyterLab常见问题解决办法》](https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=9ad8ce7d-06f7-4394-80ef-4dbf6cfb4be1)尝试解决问题。
总条数:5192 到第
上滑加载中