Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

YOLOv3比原作高10个点,飞桨更新至73个视觉算法、203个预训练模型

两项全新能力,四项重磅升级,百度飞桨计算机视觉模型库 PaddleCV 最近迎来了一次全面升级。此外,这一次百度还为 PaddleCV 新增产业应用算法 15 个,并加入了 35 个高精度预训练模型。

随着防控措施效果显现,新冠疫情在全国范围内已经得到了控制。当我们走进地铁与车站,甚至很多小区与超市,都会看到口罩人脸检测系统与红外测温系统,这些都是人工智能在疫情控制方面给出的独到帮助。

人工智能在抗击疫情过程中作出的贡献,与深度学习先进算法的不断开源是密不可分的。早在 2 月份,百度就开源了首个口罩人脸检测模型,并发布了多个预训练模型,你要部署到服务器还是移动端,它都能满足。

我们会发现,这样的预训练模型简直太好用了,比如说借助 PaddleHub,只需一行命令就能部署到服务器。然而不止是 PaddleHub,整个 PaddleCV 也非常好用,不然开发者很难在短时间内借助它开发并开源「防疫模型」。

近日,百度正式全面升级 PaddleCV,顶尖模型新发布、常用模型再提速,它已经是有 73 个视觉顶尖算法、203 个预训练模型的大家庭了。

PaddleCV 新一波来袭 

之前机器之心曾介绍过,相比 TensorFlow 或 PyTorch,PaddlePaddle 拥有最大的官方模型库,也就是说飞桨团队会花费大量精力维护这些模型,以保证它们的性能最优、API 最新、易用性最好。PaddleCV 是就是其中包含视觉算法、模型和工具的开源项目。

在这一次的 PaddleCV 更新中,PaddleCV 新增产业实践中广泛应用的 15 个算法、35 个高精度预训练模型,以及 3D 视觉、PLSC 超大规模分类模型这两项全新能力。

PaddleCV 地址:https://github.com/PaddlePaddle/models/tree/release/1.7/PaddleCV

如上全景图所示,整个 PaddleCV 从底层工具到最上层的套件都有更新,其中 PaddleDetection 更新、新增了一系列算法模型,例如增强版 YOLOv3 相比原版提升 mAP 10 个点,新增 COCO 最佳检测模型 CBNet 等。

与此同时,PaddleSeg 也有很多更新,例如新增实时语义分割模型 Fast-SCNN、基于 HRNet 的高精度图像分割模型。以非常流行的 DeepLab V3+来说,Fast-SCNN 的推理速度要比它快一倍多。

两大新发布

PaddleCV 全新发布了 3D 点云视觉算法,可能在我们的印象中,3D 视觉还处于研究阶段,但这两个模型已经经过了工业界的重重考验,有很好的稳定性与效果。给定 3D 点云,PaddleCV 中的 3D 视觉模型就能完成目标检测,构建一个神奇的 3D 边界框。

PointRCNN 与一般目标检测一样分为两阶段:自底向上生成 3D 候选边界框,以及微调精炼得到精确的 3D 边界框。

另一项新发布是 PLSC 这个超大规模分类工具,它的「超大规模」指的是千万规模的分类任务,这对于大规模人脸识别,或「口罩人脸识别」非常重要。

飞桨大规模分类库 PLSC 封装了大规模分类神经网络实现,提供简洁易用的高层 API,用户通过五行代码即可实现千万类别分类神经网络。训练有多简单?看下面这段代码就知道了:

from plsc import Entry

if __name__ == "main":
         ins = Entry()
         ins.set_class_num(1000000) #设置分类类别数
         ins.train()
——————————————————————————————————————————————————
# command line
python -m paddle.distributed.launch \
            --selected_gpus=0,1,2,3,4,5,6,7 \
            train.py

算法硬件不分家

总的来说,在算法上,PaddleCV 现在已有 73 个视觉顶尖算法。如果觉得这个数字还不够直观的话,推荐可以看一看 PaddleCV 的 GitHub 页面,模型列表真的非常丰富,不说最常规的图像分类模型,视频类算法都有下面这么多。

PaddleCV 的模型已经有那么多了,若要用好它们,压缩、部署、硬件缺一不可。而现在,从训练到部署,借助飞桨在服务器和移动端全硬件平台能力,视觉模型能落地到各种平台,包括百度的昆仑芯片。PaddleSlim 为不同的模型提供最好的压缩方案,以适合不同的硬件,而 Paddle Lite 等工具则以最好的方式真正将模型运行在各类硬件上。

完整的 PaddleCV 与更新内容读者可查看 GitHub 地址,本文后面则主要介绍 PaddleDetection 的更新内容,它从性能更新、顶尖新模型和实战部署都有很多进步。

YOLOv3:训练再提速 40%

PaddleDetection 的目的是为工业界和学术界提供丰富、易用的目标检测模型。在这一次更新中,我们能看到 PaddleDetection 优化了很多主流模型的性能,YOLOv3 就是一个明显的案例。

在 COCO 数据集的上,骨干网络 DarkNet 作者在其论文中所使用的 YOLOv3 模型的验证精度 mAP 为 33.0%,而飞桨在之前版本中曾经发布过基于 DarkNet53 的 YOLOv3 模型,该模型的验证精度为 mAP 38.9%。

在最新的 PaddleDetection 检测库中,飞桨对 YOLOv3 又做了如下改进,使得验证精度 mAP 再次提高到 43.2%,并且推理速度提升 21%。本次升级还对数据预处理速度持续优化,使得整体训练速度提升 40%。相比原版 YOLOv3,百度优化的模型在 mAP 上已经有 10 个点的提升,就说准确度这就已经非常惊人了。

YOLO,差不多是目前最为常用的目标检测算法,每次优化都显得非常有意义。YOLO 模型最早由 Joseph Redmon 等人在 2015 年提出,并在随后的几篇论文中进行了修订。

YOLO 的创新之处在于,它提出了 one-stage 的检测思路,即目标定位和目标识别在一个步骤中完成,不需要网络划定边界框后再进行预测。但它也有一定的缺陷:它不擅长小目标检测。为了弥补这一缺陷,2018 年,Redmon 等人发布了 YOLO v3。

在架构上,YOLOv3 采用了 Darknet-53,并借鉴了残差神经网络的思路,采用了残差连接,从而更好地学习图像特征。那么,飞桨团队为什么能优化 10 个点的精度,且还提升训练推理速度?

首先,飞桨团队将 YOLOv3 的骨干网络从 DarkNet 更换为 ResNet50-VD 类型。ResNet50-VD 网络相比升级前的 DarkNet53 网络,在速度和精度上都有一定的优势,且 ResNet 系列更容易扩展。在 PaddleDetection 中,用户可以针对自己业务场景的特点,灵活选择 ResNet18、34、101 等不同网络类型作为模型的骨干网络。

ResNet-50 是著名的目标检测骨干网络,具有一定的性能优势。而「VD」则是在这一网络的基础上进行的改进,如在训练方面增加一些技巧,或进行架构上的改进等。

对于 ResNet-50 的几种架构改进。

另一方面,PaddleDetection 引入 Deformable Convolution v2(简称 DCNv2,可变形卷积)替代原始卷积操作。实验数据表明,使用 ResNet50-VD 和 DCNv2 后,模型精度提升了 0.2%,提速约为 21%。

DCNv2 同时考虑了速度与精度平衡。本次升级的 YOLOv3 模型使用 DCNv2 替换了主干网络中 stage5 部分的 3x3 卷积。

此外,PaddleDetection 在 FPN 部分增加 DropBlock 模块,提高了模型泛化能力。DropBlock 算法相比于 Dropout 算法,在 Drop 特征的时候会集中在某一块区域,更适合应用到检测任务中来提高网络的泛化能力。

Dropout 和 Dropblock 对比图。

这样一种机制,很明显能够帮助网络集中对某些区域进行 Dropout,因此它相比随机 Dropout 具有更好的针对性。

YOLOv3 在飞桨上进一步大放光彩可以说明,本次 PaddleDetection 的开源,让很多优秀而成熟的老模型能够进一步提升自身的性能,从而在更多图像场景中发挥有效能力。

CBNet:新增 COCO 最优检测模型

PaddleCV 除了保证 YOLO 这种常用模型「跟上时代的步伐」,也会增加一些经实践检验过的优质算法。COCO 数据集精度最高的开源模型 CBNet、Open Images V5 目标检测比赛最佳单模型等在这一次更新中都有加入。

CBNet 是目前 COCO 数据集上表现最佳的目标检测网络,在测试集上其 mAP 为 53.3%。CBNet 通过相邻骨干(backbone)网络之间的复合连接 (Composite Connection) 组合生成新的骨干网络,称为复合骨干网络 (Composite Backbone Network)。以 ResNet 结构为例,级联个数为 2 时,称为 Dual-ResNet,级联个数为 3 时,称为 Triple-ResNet。

本次 PaddleCV 新增的 CBNet 基础模型使用的是 AHLC(Adjacent Higher Level Composition)组网方式,即Assistant Backbone的每个输出特征都通过复合连接模块作为相邻骨干的输入。在论文中,AHLC 为多种组网方式中性能最好的联结方式。

此外除了新增基础模型外,还发布了单尺度检测模型 CascadeRCNN-CBR200-vd-FPN-dcnv2-nonlocal,其在 COCO 测试集上精度高达 53.3%。

PaddleSlim:模型压缩进入 1.0

PaddleCV 提升、更新了一大波模型,这些模型要实际应用到手机等设备,还是必须得完成「瘦身」操作。目前 PaddleSlim 已经进入了 1.0 版,它应用到在 SDK,在嵌入式设备上 0.3 秒内就能完成人脸检测、跟踪、活体检测和识别等全流程。

在前文中,YOLO v3 已经有了增强版,而对于 PaddleSlim,它也能提供定制化的 YOLO 蒸馏方案,其可以刷新 COCO 检测任务精度。下表对 YOLOv3 的「瘦身」效果有很详细的描述,在 Pascal VOC 数据集上,减少 67% 的参数量、69% 的计算量,效果竟然还要提升 2.6%。

PaddleSlim 1.0 也是走向成熟的标识,它在模型压缩方面已经做得非常好了,那么 1.0 将不止步于的知识蒸馏、剪枝等压缩方法。PaddleSlim 1.0 开放了更加灵活的网络结构搜索 NAS API,预定义了更丰富的搜索策略和搜索空间,只有搜索,才能针对特定任务实现更完美的架构。

上图展示了 One-Shot 网络结构搜索原理,相比之前方法一块 V100 GPU 需要 42 天 才能完成,One-Shot 只需要 4 天。其获得的收益是,相比 MobileNet V2,搜索出的网络在计算量(FLOPs)上少了 20%。

作为成熟的瘦身框架,它势必与部署联系在一起,我们压缩模型不就是为了方便在各种设备上使用么?PaddleSlim 1.0 这一点也是考虑到的,从训练、压缩到部署,模型能无缝落地到各种硬件环境。

最后,基于飞桨框架,开发者们现在可以快速利用主流算法,直接进行全流程模型开发。甚至可以快速实现最顶尖的 3D图像分类、语义分割和目标检测任务,并让模型精度与世界领先水平持平。百度飞桨已为我们发展应用提供了必不可少的工具。

在疫情进入消退期后,「新基建」正在成为各界关注重点,在发力于科技端的基础设施建设过程中,人工智能登场的舞台必将越来越多

产业百度飞桨PaddleCV
1
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

图像分割技术

图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像索赋予相同的编号。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

YOLO技术

YOLO 模型最早是由 Joseph Redmon 等人在 2015 年发布的,并在随后的两篇论文中进行了修订。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

目标定位技术

目标定位任务不仅要识别出图像中是什么,还要给出目标在图像中的位置信息。简单的说,就是用一个矩形框把识别的目标框出来(有时候也有多个固定数量的目标)。一般基本思路是多任务学习,网络带有两个输出分支。一个分支用于做图像分类,即全连接+softmax判断目标类别,和单纯图像分类区别在于这里还另外需要一个“背景”类。另一个分支用于判断目标位置,即完成回归任务输出四个数字标记包围盒位置(例如中心点横纵坐标和包围盒长宽),该分支输出结果只有在分类分支判断不为“背景”时才使用。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

推荐文章
暂无评论
暂无评论~