Auto Byte

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

微信扫一扫获取更多资讯

Science AI

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

微信扫一扫获取更多资讯

Naiyan Wang作者知乎来源

SimpleDet: 一套简单通用的目标检测与物体识别框架

今天很开心给大家介绍我们最新的一个开源项目:SimpleDet。本文由机器之心经授权转载自知乎用户Naiyan Wang,未经授权禁止二次转载。

https://github.com/TuSimple/simpledet

SimpleDet是一套简单通用的目标检测与物体识别的框架。整套框架基于MXNet的原生API完成。这篇文章不仅仅想介绍一下这样一个新的框架有什么与众不同的feature,更想去介绍一下我们为什么决定做这么一件事情以及我们的初衷是什么。

为什么还要再造一次锤子?

这个问题其实也是我们在开始这个项目之前自问了很多次的问题。如果大家有心留意下的话,Ross在产出RCNN和Fast RCNN的那两三年,每年都会去参加一下ImageNet比赛。其实当初很不解,为什么要去这么做,尤其是基本都是很裸的方法,一定不可能拿到好的名次。后来有机会去抓住Kaiming问了一下这个问题,Kaiming给我的答案是,Ross其实并不关系这个名次,Ross关心的是借这个机会宣传他更好用的锤子给大家。

其实不同于很多人认为的那样,模型fancy,结果好才是一个好工作的体现。恰恰相反,简单可靠,越多的paper愿意以这个方法作为baseline,就越说明这个方法的经典。其实对我自己而言,我从读PhD开始就一直愿意去做这样的baseline和这样的锤子。从当年用HOG+LR超越绝大多数paper的Tracking到参与MXNet项目再到后来用5行代码做domain adaptation的AdaBN。虽然开始的时候都遭受了很多人包括reviewer的质疑,但是时间都证明了这些工作的价值。

对于目标检测和识别领域,今天我们发现了同样的问题。虽有很多开源的代码和框架,但是目前看下来仍有很大进步的空间。一方面现有的开源框架虽有各种冠军头衔加持,但因为各种各样的原因,复现出真正SOTA的结果仍然不是一件轻松的事情;另一方面,一些性能还不错的开源代码(如SNIP和SNIPER)却难以拓展和维护。所导致的结果就是目前仍然有很多论文仍然在一个很低的baseline上进行改进,就算取得了性能的提升也很难说明方法的有效性。我们建立SimpleDet就是为了对于Instance Recognition这一系列问题提供一个更好的baseline和更好的锤子。

如果去问一个同学你需要一个什么样的目标检测和识别框架,我相信性能好,速度快,好用这三个关键词可以覆盖99%的需求,下面我们一一展开来看看SimpleDet在这些方面的优势和与其他开源框架的区别。

什么叫性能好?

在SimpleDet中,最值得关注的一个算法是我们的TridentNet(不知道TridentNet的同学欢迎猛戳:Naiyan Wang:TridentNet:处理目标检测中尺度变化新思路)。我们公布了在各个setting下的模型和训练代码。这也是目前已知的COCO上单模型最高的算法。除了一个干净的模型(testdev mAP=42.7)之外,我们还提供了一个加上了全部大礼包的setting(testdev mAP=48.4),包括Sync BN,multi-scale training/testing,deformable conv和softer NMS。虽然这些都是在很多paper和比赛中大家已经常用的技术了,但是仍然很难把所有的方法都直接正确打开。我们在SimpleDet中提供了一套开箱即用的方案,希望借此降低复现SOTA的门槛,从而提升下整个领域中baseline的水平。除此之外,为了方便大家进一步拓展,我们还提供了一些经典模型和算法,例如Mask(Faster) RCNN,FPN,RetinaNet,CascadeRCNN等。这个算法的结果都已经经过验证,能达到论文中和已有开源代码的结果。我们后续还会进一步补充一些经典和重要的工作,也欢迎大家积极贡献。

什么叫速度快?

首先针对速度这个问题,我们一个独特的feature是FP16 training,FP16不仅可以节省一半的显存,在最新支持TensorCore的Volta和Turing系列GPU上还可以有一倍甚至更多的速度提升。如下左图,从1080Ti的30img/s可以提升到75img/s,展现了非常显著的提升。其次,对有不同资源的同学来说,对于速度的需求也是不同的。我们着重考虑了三种典型的用户:

  1. 入门用户:这类用户可能由于实验室资源限制,或者单纯是因为个人兴趣,只能负担起小于4块GPU。针对这类用户,能够尽量复现出更多资源下的结果是第一优先级。核心的问题在于使用大的batchsize和BN batchsize。在这样的setting下,SimpleDet提供了Inplace ABN[1] (To be announced),结合上MXNet本身提供的memonger功能,再加上FP16,极限状态下训练的单卡batchsize可以达到8到16。虽然损失了一定的速度,但是在两到四卡上就能达到正常八卡训练的batchsize。
  2. 普通用户:这类用户应该占据绝大多数,可以独占一台8卡机器进行训练。这类用户对于速度会有着更高的需求,可以在入门用户的基础上关掉memonger这种对速度有一些影响的组件,以得到更好的训练速度。
  3. 土豪用户:手里有多台8卡机器,希望充分利用机器快速迭代模型。针对这部分用户,依托于MXNet优秀的分布式设计以及阿里云更进一步优化的Perseus通信框架,如下右图所示,我们在4机32卡的情况下可以做到线性加速(没有资源进行更大的测试了,更强大的土豪可以赞助点机器。。。)。这对于打比赛或者对模型迭代速度有很高要求的应用来说,无疑是个福音。

我们希望每一类用户都能各取所需,在SimpleDet中找到最适合自己资源的setting,极大化产出。

什么叫做好用?

虽然每个用户心里都会有一个好用的定义(心疼产品经理1s...),除了前面的性能和速度之外,我们认为是否容易拓展和方便清晰调参也会是两个重要的因素。我们针对一些常见需求,进行了高度模块化的设计,一个核心思想便是尽量抽象和隔离核心操作,使各种不同算法尽量复用,在这些核心操作之上拓展而无需修改。例如,我们抽象出了一整套干净通用的配置系统,除了可以配置所有常见参数之外,还将常用的预处理和数据扩充操作也都抽象出来。针对这些常见的变更,用户不需要修改核心代码即可完成调优。再比如,修改一个detection算法可能会遇到最复杂的逻辑就是在于data loader和pre-process,但是往往一个欠佳的实现会导致loader的效率大幅度下降,从而成为整个训练中的瓶颈,使得GPU利用率降低。在SimpleDet中,我们提取出了一个通用的多线程loader框架,并抽象出了在预处理中常见的操作。后续新算法的拓展可以很容易在这些通用工具的基础上同时保持简洁性和效率。更多的设计欢迎大家直接阅读源码,我们也给出了一个简单的对Faster RCNN和TridentNet代码结构的分析供大家参考。

以上便是SimpleDet的一个简要介绍,欢迎大家积极试用,提出宝贵意见。也欢迎大家一起来捉bug,贡献新的算法和feature,共同把SimpleDet打造成一套目标检测与物体识别的前沿试验平台。

最后,例行保留项目。开源出来的项目只是我们在进行的Deep Learning项目中的冰山一角,Deep Learning也只是我们进行的无人驾驶卡车全技术栈中的一环,在图森有着大量有趣而又有挑战的项目有待开展。想不想试试用自己的代码驱动一辆40吨的大卡车在高速上以80km/h的速度飞奔?想不想试试用自己的代码控制一辆近20米长的卡车以5cm的精度停在吊车下呢?欢!迎!加!入!图!森!未!来!常年招聘无人车算法工程师(包括实习生),覆盖感知、定位、地图、决策与控制全技术栈。请猛戳拉勾链接投递:图森未来_图森未来招聘】北京图森智途科技有限公司招聘信息-拉勾网

[1] Rota Bulò, Samuel, Lorenzo Porzi, and Peter Kontschieder. "In-place activated batchnorm for memory-optimized training of dnns." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018.

本文由机器之心经授权转载自知乎用户Naiyan Wang,未经授权禁止二次转载。

原文链接:https://zhuanlan.zhihu.com/p/55972055

工程图像识别目标检测MXNet
31
相关数据
图森未来机构

图森未来(NASDAQ:TSP)于2015年9月成立,在中国、美国设有研发中心,员工超过1000人。2021年2月,图森未来完成超过4.15亿美元的E轮融资。4月,图森未来正式登陆纳斯达克挂牌上市,成为全球无人驾驶第一股。

http://www.tusimple.com
感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

物体识别技术

计算机视觉领域的一个分支,研究物体的识别任务

MXNet技术

MXNet是开源的,用来训练部署深层神经网络的深度学习框架。它是可扩展的,允许快速模型训练,并灵活支持多种语言(C ++,Python,Julia,Matlab,JavaScript, Go,R,Scala,Perl,Wolfram语言)

阿里云机构

阿里云创立于2009年,是全球领先的云计算及人工智能科技公司,致力于以在线公共服务的方式,提供安全、可靠的计算和数据处理能力,让计算和人工智能成为普惠科技。 阿里云服务着制造、金融、政务、交通、医疗、电信、能源等众多领域的领军企业,包括中国联通、12306、中石化、中石油、飞利浦、华大基因等大型企业客户,以及微博、知乎、锤子科技等明星互联网公司。在天猫双11全球狂欢节、12306春运购票等极富挑战的应用场景中,阿里云保持着良好的运行纪录。 阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。 2014年,阿里云曾帮助用户抵御全球互联网史上最大的DDoS攻击,峰值流量达到每秒453.8Gb 。在Sort Benchmark 2016 排序竞赛 CloudSort项目中,阿里云以1.44$/TB的排序花费打破了AWS保持的4.51$/TB纪录。在Sort Benchmark 2015,阿里云利用自研的分布式计算平台ODPS,377秒完成100TB数据排序,刷新了Apache Spark 1406秒的世界纪录。 2018年9月22日,2018杭州·云栖大会上阿里云宣布成立全球交付中心。

https://www.aliyun.com/about?spm=5176.12825654.7y9jhqsfz.76.e9392c4afbC15r
知乎机构

知乎,中文互联网综合性内容平台,自 2010 年成立以来,知乎凭借认真、专业、友善的社区氛围,独特的产品机制,以及结构化、易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类,在诸多领域具有关键影响力的内容平台。知乎将AI广泛应用与社区,构建了人、内容之间的多元连接,提升了社区的运转效率和用户体验。知乎通过内容生产、分发,社区治理等领域的AI应用,也创造了独有的技术优势和社区AI创新样本。

zhihu.com
推荐文章
用了simpledet之后,感觉并不简单,反而感觉封装的有些复杂,看不懂。在这个基础上再修改代码比较困难和复杂,不太好用。