谷歌大脑提出:基于NAS的目标检测模型NAS-FPN,超越Mask R-CNN

广告关闭

11.11 智慧上云

云服务器企业新用户优先购,享双11同等价格

立即抢购
本文转载自量子位(QbitAI)

这是一只AI生出的小AI。

谷歌大脑的Quoc Le团队,用神经网络架构搜索 (NAS) ,发现了一个目标检测模型。长这样:

看不清请把手机横过来

它的准确率速度都超过了大前辈Mask-RCNN;也超过了另外两只行业精英:FPN和SSD。

模型叫做NAS-FPN。大佬Quoc Le说,它的长相完全在想象之外,十分前卫:

喜讯发布一日,已收获600颗心

AI的脑洞果然和人类不一样。对比一下,目标检测界的传统方法FPN (特征金字塔网络) 长这样:

谷歌大脑说,虽然网络架构搜索 (NAS) 并不算新颖,但他们用的搜索空间与众不同。

怎么搜出来?

在NAS-FPN出现之前,地球上最强大的目标检测模型,架构都是人类手动设计的。

这是Mask-RCNN的成果

NAS是一种自动调参的方法,调的不是训练超参数,是网络架构超参数:比如网络多少层、每层都是什么算子、卷积层里的过滤器大小等等。

它可以在许多许多不同的架构里,快速找到性能最好的那一个。

所以,要把目标检测的常用架构FPN (特征金字塔网络) 和NAS结合起来,发现那只最厉害的AI。

但问题是搜索空间太大,特征横跨许多不同的尺度。

于是,团队基于RetinaNet框架,设计了一个新的搜索空间:

这里,一个FPN是由许多的“合并单元 (Merging Cells) ”组成的。

是要把输入的不同尺度/分辨率的特征层,合并到RetinaNet的表征里去。

具体怎样合并?这是由一个RNN控制器来决定的,经过四个步骤:

一是,从输入里任选一个特征层; 二是,从输入里再选一个特征层; 三是,选择输出的特征分辨率; 四是,选择一种二进制运算,把两个特征层 (用上一步选定的分辨率) 合并起来。

第四步有两种运算可选,一种是加和 (sum) ,一种是全局池化 (Global Pooling) 。两个都是简单、高效的运算,不会附加任何带训练的参数。

一个Cell就这样合并出来了,但这只是中间结果。把它加到刚才的输入列表里,和其他特征层排在一起。

然后,就可以重新选两个特征层,重复上面的步骤一、二、四,保持分辨率不变。

(团队说,如果要避免选到相同分辨率的两个特征层,就不要用步长8。2和4是比较合适的步长。)

就这样,不停地生成新的Cell。

停止搜索的时候,最后生成的5个Cell,会组成“被选中的FPN”出道

那么问题来了,搜索什么时候能停?

不是非要全部搜索完,随时都可以退出。反正分辨率是不变的,FPN是可以随意扩展的。

团队设定了Early Exit (提前退出) 机制,用来权衡速度和准确率。

最终发布NAS-FPN的,是AI跑了8,000步之后,选取最末5个Cell生成的网络。回顾一下:

看不清请把手机横过来

从原始FPN (下图a) 开始,它走过的路大概是这样的:

跑得越久,生成的网络就越蜿蜒。

模型怎么样?

NAS-FPN可以依托于各种骨架:MobileNet,ResNet,AmoebaNet……

团队选择的是AmoebaNet骨架。

那么,用COCO test-dev数据集,和那些强大的前辈比一比高清大图检测效果。

比赛结果发布:

看不清请把手机横过来

NAS-FPN拿到了48.3的AP分,超过了Mask-RCNN,并且用时更短 (右边第二列是时间) 。

另外一场比赛,是移动检测 (320x320) ,NAS-FPN的轻量版本,跑在MobileNet2骨架上:

超过了厉害的前辈SSD轻量版,虽然,还是没有赶上YOLOv3

YOLOv3过往成果展

不过,打败Mask-RCNN已经是值得庆祝的成就了。

One More Thing

NAS既然如此高能,应该已经搜索过很多东西了吧?

谷歌大脑的另一位成员David Ha列出了7种

1) 基于CNN的图像分类器,2) RNN,3) 激活函数,4) SGD优化器,5) 数据扩增,6) Transformer,7) 目标检测。

并发射了直击灵魂的提问:下一个被搜的会是什么?

他的同事摘得了最佳答案:NAS啊

NAS

论文传送门: https://arxiv.org/pdf/1904.07392.pdf

谷歌大脑提出:基于NAS的目标检测模型NAS-FPN,超越Mask R-CNN的更多相关文章

  1. [炼丹术]基于SwinTransformer的目标检测训练模型学习总结

    基于SwinTransformer的目标检测训练模型学习总结 一.简要介绍 Swin Transformer是2021年提出的,是一种基于Transformer的一种深度学习网络结构,在目标检测.实例 ...

  2. PyTorch专栏(八):微调基于torchvision 0.3的目标检测模型

    专栏目录: 第一章:PyTorch之简介与下载 PyTorch简介 PyTorch环境搭建 第二章:PyTorch之60分钟入门 PyTorch入门 PyTorch自动微分 PyTorch神经网络 P ...

  3. 10分钟内基于gpu的目标检测

    10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...

  4. 平均精度均值(mAP)——目标检测模型性能统计量

    在机器学习领域,对于大多数常见问题,通常会有多个模型可供选择.当然,每个模型会有自己的特性,并会受到不同因素的影响而表现不同. 每个模型的好坏是通过评价它在某个数据集上的性能来判断的,这个数据集通常被 ...

  5. 目标检测模型的性能评估--MAP(Mean Average Precision)

    目标检测模型中性能评估的几个重要参数有精确度,精确度和召回率.本文中我们将讨论一个常用的度量指标:均值平均精度,即MAP. 在二元分类中,精确度和召回率是一个简单直观的统计量,但是在目标检测中有所不同 ...

  6. 微调torchvision 0.3的目标检测模型

    微调torchvision 0.3的目标检测模型 本文将微调在 Penn-Fudan 数据库中对行人检测和分割的已预先训练的 Mask R-CNN 模型.它包含170个图像和345个行人实例,说明如何 ...

  7. 旷世提出类别正则化的域自适应目标检测模型,缓解场景多样的痛点 | CVPR 2020

    论文基于DA Faster R-CNN系列提出类别正则化框架,充分利用多标签分类的弱定位能力以及图片级预测和实例级预测的类一致性,从实验结果来看,类该方法能够很好地提升DA Faster R-CNN系 ...

  8. 实战小项目之基于yolo的目标检测web api实现

    上个月,对微服务及web service有了一些想法,看了一本app后台开发及运维的书,主要是一些概念性的东西,对service有了一些基本了解.互联网最开始的构架多是cs构架,浏览器兴起以后,变成了 ...

  9. Spiking-YOLO : 前沿性研究,脉冲神经网络在目标检测的首次尝试 | AAAI 2020

    论文提出Spiking-YOLO,是脉冲神经网络在目标检测领域的首次成功尝试,实现了与卷积神经网络相当的性能,而能源消耗极低.论文内容新颖,比较前沿,推荐给大家阅读   来源:晓飞的算法工程笔记 公众 ...

随机推荐

  1. Java 方法与数组

    方法 什么是方法? 方法定义:方法(Method),函数(function),其实就指一个特定的功能操作,程序中完成独立功能,可重复使用的一段代码的集合. 方法的定义 方法定义格式: [修饰符] 返回 ...

  2. Linux中显示系统中USB信息的lsusb命令

    来源:Linux中国  原文:https://linux.cn/article-2448-1.html 通用串行总线(USB)被设计成为连接计算机外设的标准,如键盘.鼠标.打印机.数码相机.便携式媒体 ...

  3. sql中union,union all没有兼顾到的内容

    今日遇到一个问题,两张表联合取交集去重,但是需要把某一字段相同的也给去掉 union all : 联合,没有取交集 union :联合取交集(仅针对所有字段相同的去重) 解决方案:将联合的数据作为一个 ...

  4. ES6深入浅出-2 新版函数:箭头函数 2 视频-2.视频 箭头函数杂谈

    杂谈coffeescript 箭头函数抄的是谁? coffeescript 双箭头的形式 箭头函数简洁的语法 数组内每一个值都平方一下 Map的写法 箭头函数的写法 平方后,每一个值再加1 numbe ...

  5. 一百四十三:CMS系统之评论布局和功能一

    模型 class CommentModel(db.Model): """ 评论 """ __tablename__ = 'comment' ...

  6. 【AI教育】可以看看行业痛点分析

    http://www.woshipm.com/it/2801582.html 至于解决方案嘛,还在堆砌技术的阶段.

  7. Vue.js学习TodoMVC小Demo

    实现效果如下: 把玩了添加和删除功能,代码如下: index.html: <!doctype html> <html lang="en"> <head ...

  8. MySQL中创建存储过程示例

    在这个示例中需要用到一张名为test_table的表,我们使用show create table test_table查看表的创建过程: CREATE TABLE `test_table` ( `id ...

  9. 如何区分浏览器发起的是基于http/1.x还是http/2的请求?

    前言      随着2015年http2.0被推出以来,主流的现代浏览器大多都开始慢慢去实现这个协议,那么如果查看自己的浏览器是否支持发送http2.0的请求,或者如何查看浏览器发送的请求是基于哪一个 ...

  10. 15.Git四种协议-本地协议(local)、HTTP协议、SSH协议、Git协议

    1.本地协议(loacl) 最基本的协议,其远程仓库其实就是硬盘内部的一个目录(例如D:\\project).常见于团队内的人对一个共享的文件系统(例如NFS)具有访问权限,或者多人共用一台电脑的情况 ...