RTX3090独家训练实录:MMDetectionV2 + ResNeSt

进入干货之前,先简单自我介绍一下吧,笔者主要从事深度学习CV领域,近一年,由于工作需要,再加上个人兴趣,在目标检测、实例分割任务方面,花了不少时间调研和阅读论文。

对此,笔者也跑过了无数实验,参加过大大小小的比赛,emmm,有最终获得第一的,有遗憾获得第二的,有初赛就被淘汰无缘复赛的,也有做到一半由于各种原因放弃的,有机会以后可以和大家唠一唠…

言归正传,今天想和大家分享的独家干货是,MMDetectionV2 + ResNeSt + RTX3090的训练实录,CVer会比较熟悉,这三款分别来自框架、算法、硬件领域的产品,都是2020年新推出的爆款,目前还没有看过三者结合的公开实验分享。

正好,笔者最近注册了智享云,免费租用了一台双卡24G的GeForce RTX 3090设备,就顺便升级了一下MMDetection至V2.7.0(2020年11月底发布,之前由于其更新速度太快,下半年一直停留在V2.2.0版本),并发现此次更新,增加了对ResNeSt作为backbone的支持,立刻决定跑个实验测试一下性能,希望能给大家一些参考。

接下来,分别简单介绍一下:

MMDetection

这是港中大OpenMMLab及商汤科技开源的基于PyTorch的检测分割框架,该团队在参加2018 MS COCO Detection Challenge后开源,于2018年10月首次发布V0.5.1版本,2020年1月发布V1.0.0版本,2020年6月推出全新升级的V2.0.0版本。

相比于其他类似的开源框架,例如Facebook的maskrcnn-benchmark及Detectron2或百度的PaddleDetection,MMDetection是目前最受欢迎、关注度最高的框架,主要原因在于,其功能全覆盖面广、性能高、以及更新速度快等特点。

ResNeSt

号称最强ResNet改进版,“ResNeSt: Split-Attention Networks”这篇论文出自亚马逊李沐,张航团队,于2020年4月上传至arXiv(截止目前还未在会议或期刊上发表,不出意外,2021年的CVPR或ICCV等顶会应该会有它的身影)。

此文一出反响热烈,一方面,由于其在图像分类、目标检测、实例分割、语义分割等多项任务中都有显著提升。

另一方面,一些质疑声也随之而来,主要来源于其对比实验,例如ResNeSt-50 vs. ResNet-50,采用了大量最新发表的训练及数据增强策略,而在ResNet-50于2015年提出时,这些技术并不存在,因此其公平性受到挑战。

无论如何,ResNeSt在最近各大比赛中频繁登场并大放光彩,可见其泛化能力极强。

RTX 3090

英伟达GeForce RTX 30系列,于2020年9月正式发布,其中的3090版本对比上一任“老大哥”GeForce RTX 2080 Ti,不论是性能还是价格都完全碾压。

再加上疫情原因,以至于推出后很长时间,在国内市场都处于缺货、抢购、价格抬高等现象,即便在美国也是一卡难求,这无疑让深度学习爱好者对其充满向往。

介绍完背景后,现在进入正题,本次实验的相关配置如下:

Python 3.8.7
PyTorch 1.7.1
torchvision 0.8.2
CUDA 11.0
cuDNN 8.0.5
GCC 7.3
MMDetection 2.7.0
MMCV 1.2.4

数据方面,采用了经典的MS COCO 2017,其中训练集train、验证集val以及测试集test-dev的数量分别约为118K、5K、20K。

算法方面,本次实验选择了ResNeSt-101 + FPN + SyncBN + Cascade Mask RCN作为检测器,这里并没有使用最新的HTC或DetectoRS,主要是想和ResNeSt论文中给出的实验结果做直接对比。

训练及测试细节如下:

训练时长采用“2x schedule”,即24周期,step=[16,22]
多尺度训练1600x[400,1200],这里参考了HTC论文里的尺度,而非ResNeSt论文中的1333x[640,800]
单尺度测试1600x1000,同上,未选择传统的1333x800
双卡训练,每卡2张图片,即batch size为4
初始学习率设定为0.01,这里稍高于传统目标检测linear scaling rule定义的0.005
根据ResNeSt论文推荐,backbone及head都采用SyncBN
其余设置及超参数不变

训练一个周期大约11.5小时,训练时显存几乎占满,如下图所示。由于是双卡跑“2x schedule”,如果按照一般论文中的8卡跑“1x schedule”配置来算的话,整个训练过程大约需要34.5小时,算是比较快的。这里顺便提一下,经亲测,同样的配置8卡2080 Ti跑“1x schedule”一般需要2天多一些(49至50小时)。

受资源限制,多尺度训练并未采用HTC的1600x[400,1400]。同样的,backbone并没加入最近比较流行的DCNv2,加入后mAP一般可以提升1至2个百分点左右,如下图所示(来自于ResNeSt原文中的Table 12)。

根据以往经验,多尺度测试一般mAP可提升1.5至2.5个百分点左右,由于本次实验并非为了比赛或刷榜,为节省时间测试阶段采用单尺度,结果如下:

上面两张图,分别为模型在验证集上的检测bbox mAP以及分割segm mAP结果,对比下图中的结果(来自于ResNeSt原文中的Table 6),本次实验效果稍微好一些(bbox 49.4% vs. 48.3%,segm 43.1% vs. 41.6%),可能得益于较大的尺度及较长的训练时长,但不论如何,双卡的RTX 3090可以复现作者的8卡结果还是令人比较满意的。

下面三张图分别为测试集test-dev上的bbox mAP、segm mAP(需要将json文件上传至COCO的官方网站)以及原文中的Table 10。需要注意的是原文中的结果使用了DCNv2, 而本次实验并未对backbone做额外的增强操作,也达到了一样的效果(bbox 50.0% vs. 50.0%,segm 43.7% vs. 43.0%)。

综上,通过测试“新一代卡皇”GeForce RTX 3090的性能,最终结果还是比较令人满意的,智享云平台的稳定性也有加分,整体的训练体验也非常友好,期待平台后续上新更多的机型。/END

看完大神的分享后,你是不是也跃跃一试,想跑一跑RTX3090呢,现在机会来了!

恒源云:包括新人注册大礼包、邀请好友礼券同享、RTX3090包周/月特权大奖!

▎新人注册享100元代金券

登录恒源智享云,一键完成注册后,你将获得新人专属大礼包(需简单完成新手任务),包含平台高额代金券,无使用门槛,并适用RTX3090等全部机器。

➡️ 注册戳这里

▎邀请好友注册共得60元代金券

分享专属邀请链接,好友注册成功后,你将获得50元奖励,你的好友将获得新人大礼包+10元奖励,人数越多,奖励也会成倍增长。

➡️ 邀请戳这里

新春活动期间(今日起-2月18日),邀请人数位居前三的用户,还将分别获得500元/300元/200元的红包奖励,2月18日公布排名、发放奖励。

更多惊喜福利…

学生福利,用户经学生认证后,可享受平台专属95折;充值福利,充越多,返越多,优享平台更多特权;限定福利,不定期上线,敬请关注“恒源云”公众号

你可能感兴趣的:(GPU云,深度学习,pytorch,caffe,tensorflow)