AI大有可为:NAIE平台助力垃圾分类
摘要:生活垃圾的分类和处理是目前整个社会都在关注的热点,如何对生活垃圾进行简洁高效的分类与检测对垃圾的运输处理至关重要。AI技术在垃圾分类中的应用成为了关注焦点。
如今AI已经是这个时代智能的代名词了,任何领域都有AI的身影,垃圾分类及监管等场景自然也少不了“AI+”的赋能。
不过,垃圾往往属于商品的极端变形体,情况比较特殊。目前的技术在视觉可见的基础上,是可以做到垃圾分类报警提醒的,比如判断垃圾是否是经过分类整理的。至于是否能够直接进行视觉检测并分类,且达到某种效果,需要更多的数据和实验支撑才能判断这件事情的可行性。针对这些问题,我们或许可以从海华垃圾分类挑战赛中去听听参赛者都是如何用技术来改变世界的。
海华垃圾分类挑战赛数据包括单类垃圾数据集以及多类垃圾数据集。单类垃圾数据集包含80,000张单类生活垃圾图片,每张单类垃圾图片中仅有一个垃圾实例。多类垃圾数据集包括4998张图像,其中2,998张多类垃圾图片作为训练集数据,A榜和B榜各包含1000张测试图像,每张多类垃圾图片中包含至多20类垃圾实例。我们将对两种数据集分别进行介绍。
一、多类别垃圾
图1 多类垃圾数据类别分布
如图1所示,多类别垃圾涵盖了204类垃圾,但这204类的数据非常不均衡,有一些类别数目非常少甚至没有出现。
图2 多类垃圾数据可视化
图2中两张图是训练集中的两张图像,垃圾目标主要集中在图像的中心区域重叠度较高,此外可以看到很一些目标往往会以不同的角度姿态在另一张图像中出现。
从图1与图2的观察与统计我们可以得出几个结论:
(1)由于一个物体经常在多张图像中出现,因此过拟合这些目标非常有效,这也是为什么这个比赛AP能训到90以上的原因。因此可以考虑参数量更大的backbone,比如ResNext101 X64+DCN。
(2)图像是俯视拍摄的,水平和垂直翻转都很有效。
(3)虽然类别非常不均衡,但是由于目标的重复出现,经常几个目标的训练,再见到同一个目标就能100%的检测到。类别不均衡主要对数据极少的物体有影响,因此只需要对这些目标进行扩充,主要包括墨盒、螺蛳、话梅核、贝类等。
(4)重叠度较高可以使用mixup等方法,人为地制造一些重叠度高的目标进行训练。
表1 数据统计
除了图像级别的宏观统计,我们对数据集中的目标也做了详细分析。表1为目标大小、以及长宽比层面的统计。首先物体长度按照coco的划分,大于96的属于大物体,75%的目标都是大物体,这意味着针对小物体的提升方法是基本无效的。其次长宽比很少有大比例物体的出现,这些给予我们anchor方面的参数调整很多启发。
二、单类别垃圾
单类别垃圾主要包含80000张图像,每张1个目标,如左边两张图所示单类别垃圾的目标都较大。单类的使用主要有两种思路,一种是对类别少的数据扩充,另一种是使用单类数据集训练得到一个较好的预训练模型。
图3数据对比
数据扩充时我们发现,和多类别垃圾相比,同一类的目标并不是完全一致的,单类的小龙虾是小龙虾,多类的小龙虾实际标的是牛奶盒,二极管标的是塑料管。这一点说明想用单类做数据扩充是行不通的,因为数据不是同源的。我们尝试了这种方案,但是精度保持不变。
针对预训练模型,由于目标较大,我们将图像按照4*4进行拼接,减少了数据量,提升了单张图像的目标数,也能取得一定的效果。但是当与其他增强方法结合时基本没有效果,因此我们也放弃了这种方案。
三、模型方案:
1.Baseline
图4 baseline方案
我们baseline选用的是mmdetection所实现的Cascade RCNN,backbone选用的是ResNeXt101 X64+DCN。因为此次比赛采用的是coco的评测指标AP50:95,因此Cascade RCNN通过设置不同的阈值进行回归可以取得非常好的效果。此外较大的backbone在这个数据集上往往能取得更好的效果。
2. 参数调整
在比赛的初期,我们将训练集的数据选取2500张训练,498张本地验证,在此基础上进行调参。由于目标重叠度较高,在使用softnms阈值为0.001、max_per_img =300、翻转测试时效果较好,相比不使用这些参数大约能提升0.02左右。受到显存的限制从图像中随机裁剪(0.8w,0.8h)的图像区域,然后将短边随机限制在[640,960]之间,长边限制到1800进行多尺度训练,测试时图像适度放大短边设置为1200,精度可以训练到88.3%, 结合OHEM精度训练到88.6%左右,将本地验证的498张图像也输入进去训练能提升0.5%到89.2%左右。
针对数量较少的类别,我们在多类训练集中对贝类去硬壳、螺蛳、二极管、话梅核这几个类别进行补充标注,把一些模棱两可的目标都进行标注提高召回率,大约标记了100多个目标,在A榜能提升到90%左右。
如图5所示,针对anchor的调整,我们调整anchor 的比例从【0.5,1.0,2.0】改为【2.0/3.0,1.0,1.5】。此外为了提升大物体的检测能力,我们调整FPN的层次划分从56改为了70,相当于将FPN各层所分配的目标都调大,然后我们将anchor的尺度由8改为12对这些大物体进行检测。
图5 anchor 修改
如图6所示参数调整后可以发现FPN中目标数量的分布更加接近正态分布,我们认为这样的一种分布对检测会有所帮助。从ResNet的几个stage的卷积数量我们可以看到,FPN中间层所对应的ResNet的stage参数较多应检测较多目标,FPN两侧对应到backbone的参数较少检测目标数不宜过多。
图6 目标在FPN上的数量分布变化
在图像增强时,我们加入在线的mixup进行24个epoch的训练可以提升到91.2%~91.3%,不过只有12个epoch的时候没有提升。Mixup我们设置的比较简单,两张图像分别以0.5的比例进行融合,因此没必要对loss进行加权。
图7 mixup 效果图
3.模型融合
之前的测试过程中,我们认为1080Ti与2080速度应该相差不大,每次1080Ti上测试大约需要40分钟,因此我们只选用3个模型左右,这一点是比较吃亏的,在B榜的测试时我们发现2080居然比1080Ti快很多,我们单个模型加翻转测试只使用了25分钟,如果用更多模型可能会进一步提高分数。我们使用基于ResNext101 x32+gcb+DCN的Cascade RCNN,基于ResNext101 x64 +DCN的Cascade RCNN,基于ResNext101 x64 +DCN的Guided anchor Cascade RCNN。对于融合所使用的方法,不同的方法所能取得的效果都相差不大,我们采用的方法是论文《Weighted Boxes Fusion: ensembling boxes for object detection models》所提供的方法,融合阈值设置为0.8.
图8 wbf效果图
4.参数效果
表2 参数设置
图9 A榜精度变化
四、NAIE平台部署使用
1.平台理解
个人理解NAIE平台主要由三部分组成,本地调试区、云端存储区、云端训练区域,对这三部分各自地功能有所了解便可以很快上手。
本地调试区域基于vscode,关联到一台无GPU的服务器,可以在命令行像正常linux服务器一样操作进行环境的初步部署调试。
云端存储区域主要保存大的数据以及预训练模型,像预训练模型这些大文件是无法直接从本地调试区传送到模型训练区域的。
模型训练区域调用GPU完成模型的训练,并将训好的参数模型copy到云端进行存储,只有存至云端的模型才可下载。
2. 模型部署
这里以mmdetection的部署为例进行介绍。
- 1)代码上传
代码上传通过右键选取NAIE upload,代码上传时有大小限制,大约不能超过100M,因此建议将预训练模型以及一些无关的文件删除只保留核心代码。
- 2)环境部署
环境部署需要在本地代码区写一个requirements.txt的文件,上面写明所需要的python库和版本号。
- 3)模型运行
平台不支持sh文件的运行,因此需要写一个py比如叫model.py ,里面使用os.system()仿照命令行进行执行。
此外在model.py中还要调用moxing 包,将训好的模型存至云端。
在模型训练区域,选中model.py 以及所需的GPU规格进行训练。
- 4)额外补充
直接通过NAIE upload是无法完成大文件上传的,因此可以在本地调试区域写一个程序比如叫debug.py, 在程序中调用wget下载文件,并通过moxing包传至云端,训练过程中可以在model.py中利用moxing包再将其传输到服务器中。
几位参赛者最终完成比赛并获得奖励,虽然名次不是特别好,但还是通过比赛积累了很多经验。他们表示,取得的成绩离不开华为NAIE训练平台的算力支持,华为NAIE训练平台免费提供了V100和P100显卡进行训练,为我们科研以及参加比赛提供了很大的帮助,修改代码和训练都非常方便,前期熟悉平台遇到的问题都能及时解答或者协助解决。希望通过这次分享能给大家提供一定借鉴和避坑的经验。
参考文献
[1]. Cai Z , Vasconcelos N . Cascade R-CNN: Delving into High Quality Object Detection[J]. 2017.
[2]. Zhang H , Cisse M , Dauphin Y N , et al. mixup: Beyond Empirical Risk Minimization[J]. 2017.
[3]. Solovyev R , Wang W . Weighted Boxes Fusion: ensembling boxes for object detection models[J]. arXiv, 2019.
[4]. P. Wang, X. Sun, W. Diao, and K. Fu, “Fmssd: Feature-merged single-shot detection for multiscale objects in large-scale remote sensing imagery,” IEEE Transactions on Geoscience and Remote Sensing, 2019.
[5]. Zhang S , Chi C , Yao Y , et al. Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection[J]. 2019.
[6]. Pang J , Chen K , Shi J , et al. Libra R-CNN: Towards Balanced Learning for Object Detection[J]. 2019.
[7]. Deng L , Yang M , Li T , et al. RFBNet: Deep Multimodal Networks with Residual Fusion Blocks for RGB-D Semantic Segmentation[J]. 2019.
[8]. Ren S , He K , Girshick R , et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 39(6).
[9]. Lin T Y , Dollár, Piotr, Girshick R , et al. Feature Pyramid Networks for Object Detection[J]. 2016.
[10]. J. Dai, H. Qi, Y. Xiong, Y. Li, G. Zhang, H. Hu, and Y.Wei, “Deformable convolutional networks,” in Proceedings of the IEEE international conference on computer vision, 2017, pp. 764–773.
[11]. X. Zhu, H. Hu, S. Lin, and J. Dai, “Deformable convnets v2: More deformable, better results,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2019, pp. 9308–9316.
[12]. Z. Huang, X. Wang, L. Huang, C. Huang, Y. Wei, and W. Liu, “Ccnet: Criss-cross attention for semantic segmentation,” in Proceedings of the IEEE International Conference on Computer Vision, 2019, pp. 603–612.
[13]. Wang J , Chen K , Yang S , et al. Region Proposal by Guided Anchoring[J]. 2019.
AI大有可为:NAIE平台助力垃圾分类的更多相关文章
- 华为担纲建设基础软硬件国家新一代AI开放创新平台
[摘要] 全栈全场景AI能力爆发! [上海,2019年8月29日] 凭借领先的全栈全场景AI能力华为入选国家新一代人工智能开放创新平台 8月29日,科技部在2019世界人工智能大会宣布,将依托华为建设 ...
- 磐创AI GPU租用平台上线,1小时不到1块钱
>> 小白也能看懂的PyTorch从入门到精通系列 << 今天磐创AI GPU租赁平台上线了!!!为大家解决用GPU难的问题!一块10G显存的GPU,1小时租用费用不到1块钱, ...
- 阿里云云开发平台助力风变科技Serverless架构升级实战
阿里云云开发平台助力风变科技Serverless架构升级实战 背景 风变科技 一个希望通过技术去推动下一代基础教育的组织.旗下产品包括第一代的熊猫书院(读书类产品).第二代的熊猫小课(泛学科综合学习平 ...
- 灵雀云容器PaaS平台助力知名股份制银行金融科技革新
互联网.科技和金融的碰撞给银行业带来巨大影响.IT技术起初是传统金融提升效率的工具和方法,随着新技术的演进,技术成为驱动变革的核心要素.Fintech金融科技以技术和数据为驱动,用创新的方法改变了金融 ...
- 美景听听Ai语音导游,助力华为荣耀PLAY手机发布
6月6日,荣耀PLAY科技酷玩新品发布会在北京大学生体育馆如期举办,美景听听Ai语音讲解助力新EUMI系统智慧旅行成新卖点,震撼登场! 随着生活水平的不断提升,出门旅行已经成了许多亲们释放压力.调节自 ...
- FastOne专业计算平台助力生命科学研发
11月16日,由AWS主办的云计算行业沙龙在中油阳光酒店举行,速石科技CEO陈熹就高性能计算如何助力生命科学领域发表了精彩的演讲. 面临的问题及挑战 在算力及高性能领域,随着行业客户的业务需求量,数据 ...
- StartDT AI Lab | 智能运筹助力企业提升决策效率、优化决策质量
在人工智能和大数据时代,越来越多的云上数据和越来越智能的模型开始辅助人们做出各种最优决策,从运营效率.成本节约.最优配置等方方面面,实现降本增效,进一步提升商业效率.京东.美团.滴滴.顺丰等众多知名厂 ...
- Odoo免费开源企业信息化平台助力企业成功
企业信息化变革之路 信息孤岛的真实由来 打开百度App,看更多图片 左边为当下企业现状,右边为Odoo的整体 企业信息孤岛的严重性,来自于企业的自身高速发展,企业以销售为生命主题围绕着客户会搭建一系列 ...
- 阿里云产品家族再添新丁:视觉AI、CPFS一体机助力企业全面上云
近日举行的2019阿里云广东峰会上,阿里云宣布推出面向混合云场景的CPFS一体机和视觉AI一体机,两款新品具备超高性能.开箱即用等特性,极大降低企业上云的周期和门槛. 加上此前推出的POLARDB数据 ...
随机推荐
- 线性表的顺序存储和链式存储c语言实现
一.线性表的顺序存储 typedef int ElemType;typedef struct List { ElemType *data;//动态分配 ,需要申请空间 int length; }Lis ...
- Spring FactoryBean 缓存
相关文章 Spring 整体架构 编译Spring5.2.0源码 Spring-资源加载 Spring 容器的初始化 Spring-AliasRegistry Spring 获取单例流程(一) Spr ...
- JavaWeb项目在浏览器点击几次就阻塞了
问题描述 在学习JavaWeb项目时,通过IDE启动项目后,在浏览器点击几次页面中的链接就阻塞了,浏览器一直转圈圈无法加载,后台日志也没有输出. 第一次遇见这种情况,没有日志完全无法分析到底是什么问题 ...
- Python3笔记017 - 4.2 列表
第4章 序列的应用 python的数据类型分为:空类型.布尔类型.数字类型.字节类型.字符串类型.元组类型.列表类型.字典类型.集合类型 在python中序列是一块用于存放多个值的连续内存空间. py ...
- MySQL Error (Always Continue)
MySQL Error (Always Continue) 其实大部分error在网上都有对应的解决办法,尤其是对Mysql这种使用范围很广的技术.自己就不为每个error单独发布博客了,仅在这里 ...
- uni-app网络请求
对于 GET 方法,会将数据转换为 query string.例如 { name: 'name', age: 18 } 转换后的结果是 name=name&age=18. 对于 POST 方法 ...
- java 面向对象(三十三):泛型二 泛型在集合中的使用
1. 在集合中使用泛型之前的例子 @Test public void test1(){ ArrayList list = new ArrayList(); //需求:存放学生的成绩 list.add( ...
- 机器学习实战基础(十一):sklearn中的数据预处理和特征工程(四) 数据预处理 Preprocessing & Impute 之 处理分类特征:编码与哑变量
处理分类特征:编码与哑变量 在机器学习中,大多数算法,譬如逻辑回归,支持向量机SVM,k近邻算法等都只能够处理数值型数据,不能处理文字,在sklearn当中,除了专用来处理文字的算法,其他算法在fit的 ...
- bzoj4512[Usaco2016 Jan] Build Gates
bzoj4512[Usaco2016 Jan] Build Gates 题意: 某人从农场的(0,0)出发,沿边界到处乱走,走过的地方会留下栅栏,等走完后问要在多少个栅栏上开门才能使整个农场连通,最多 ...
- [Qt2D绘图]-01Qt2D绘图基本绘制和填充
Qt的文档位置为 Paint System 大纲: 简介 先看一个小例子 基本的绘制和填充 使用画笔(Qpen) 使用画刷(QBrush) ...