-
比赛页面:https://competition.huaweicloud.com/information/1000029328/introduction?track=111作者:原子弹从入门到精通HDC2020网络人工智能黑客松大赛告一段落,来自深圳福田莲花街道的原子弹从入门到精通同学(也就是我)最终果然没能逆袭成功,线上得分0.4488,排名第二,本文将给出我的赛题解析和方案介绍。一、赛题介绍赛题背景:华为数据中心服务器硬件故障中,硬盘故障占比高达48%。因此构建硬盘故障预测模型,提前感知硬件故障,对于降低数据中心的运维成本,提升业务体验均有着重要意义。赛题数据:比赛提供2017,2018年硬盘最后一次检测前一个月的检测数据进行训练,对未来的硬盘检测数据进行线上预测,评估硬盘未来是否会损坏。模型的开发需要在NAIE服务器中完成。其中训练数据集不可以从云端下载到本地,测试数据无法查看,模型建立完成后需将预测代码打包生成推理服务进行线上测试。评价指标:本次比赛的评价指标如下:FDR = TP/(TP+FN)FAR = FP/(TN+FP)SCORE = max(FDR) s.t. FAR≤0.1%二、指标分析仔细观察评价指标可以发现,评价指标中的FAR,FDR其实就是AUC曲线中的FPR和TPR。那么把指标翻译成人话就是:在误报率≤千分之一的分数阈值下,坏硬盘的召回率。虽然score与AUC息息相关,但是直接使用AUC作为建模阶段的评价指标会存在一些问题。图1的两个模型从AUC的角度来说显然是model2显著优于model1,然而本题的score是在FPR<0.1%下的max(TPR),也就是图中红色框框这个范围,因此虽然model2的AUC大很多,但是model2的score仅有0.21,而model1的score却有0.42。基于以上分析,在建模的过程中需要针对本题建立一个专属的评价指标,我使用的是LightGBM,建立评价函数my_score_,在调用模型的时候将my_score_传给lgb.train的参数f即可。三、目标分析由于本题线上仅需对每块硬盘的最后一条记录进行预测,因此我的分析也会以最后一条记录为主。首先看一下每个月坏硬盘的分布情况。从图3中我们可以很清楚的看到坏硬盘的数目随着时间的推进呈现震荡下降的趋势。原因可能是华为数据中心在不断优化或坏硬盘的损坏类型在发生变化,这我们不得而知。我们能拿到的是2017年和2018年的坏样本,而线上需要预测的是2019年的坏样本。既然坏样本的分布随着时间逐渐变化,在无法对2019年数据进行分析的情形下,基于图3的趋势,我倾向于相信2019年坏样本的分布与2018年下半年最为接近。因此在建模的时候我选择直接舍弃早期坏样本,把目光集中在2018年下半年,尤其是2018年8月后,因为这段时间的曲线最为平稳。四、数据分析与建模由于训练集中仅有每块样本前30天的记录,而样本变为坏样本后便不再有记录,因此,数据中好样本都集中在2018年12月而坏样本大多在2018年11月之前,如果把时间作为入模变量进行建模,就能在训练集完美区分好坏样本——12月没了记录的就是坏样本,但这显然是过拟合。由于没有2018年11月前的好样本数据,因此这个比赛存在超级难点,即如何判断模型是在识别好坏样本而不是在识别时间的远近。更雪上加霜的是硬盘自身的相关属性本身就会随着时间的增长而改变,如smart9累计通电时间(图4),smart241写入总数/写入剩余寿命(图5),等等。训练集中某变量的有效范围[a,b]在测试集中可能已经偏移到[a+c,b+c],而c是多少,我们并不知道。图6是硬盘的写入总数smart_241_raw在好坏样本上的分布,从图6的好坏样本密度图中我们可以看到在训练集中smart_241_raw这个变量有着非常强的区分能力,写入总数越少的样本坏的比率越高,或者说剩余寿命越长的样本坏的比率越高。但是从业务的角度来说显然剩余寿命越长损坏的几率越小,然而由于数据分布的原因,好样本记录的时间节点比坏样本多了那么一两年,导致分析的结果恰恰相反,得出了剩余寿命越长损坏的几率越大这种结论。这其实是一种不公平比较,好坏样本没能也无法在同一时间切片上进行比较,将这种数据直接扔进模型进行训练,就会造成严重的过拟合,很多同学线上分数无法突破0.1主要就是这个原因。为了解决这个问题,我尝试了很多方法:与时间相关的变量除以通电时间进行标准化处理:尝试将时间相关的变量除以通电时间,即将变量标准化为平均每单位时间,这种操作确实能使得分布看起来比较平滑,但这个操作不仅消除了时间的影响,也消除了大量有效信息,未能带来有效的提升。对所有数据进行归一化处理,但每个数据集仅使用该数据集本身的统计指标进行归一化,比如训练集中变量A的最大值是56而测试集中变量A的最大值是321,那么在训练集中将56设置为1,而在测试集中将321设置为1:理论上树模型仅基于数据的rank,无需做数据的标准化处理,但是在当前赛题下,2018年变量的范围是[a,b],而2019年变量的范围却是[a+c,b+c],两个数据集的取值并不是等价关系,而我希望2019年的b+c等同于2018年的b,因此我想到对2018年和2019年的数据分别做标准化处理,考虑到2019年的标准化可能涉及数据穿越的问题,即20190101的标准化是[20190101,20190120]的数据做出来的,对20190101数据进行标准化的过程中使用到了未来的数据,因此我又考虑每日标准化,即20190101的标准化仅使用当天数据,20190102的标准化也仅使用那一天的数据,以此类推,但一通操作后我发现推理服务中的预测是将测试集数据切分成73份的,所以该想法并不能很好的实现,不过做了这个与所想不符的操作也没有掉分,属实比较奇怪。虽然该操作在NAIE上没能实现,但是我觉得这个操作很骚且疑似很强,不知道隔壁阿里赛道有没有同学使用类似的方法;尽量使用滑窗统计,差分等相对平稳的变量:由于推理服务中有10分钟的限制,并且我在推理服务的predict中使用并行总是无响应,为了避免超时,我最终上线的代码仅开了3,7,15天的窗口。此处仅举例均值滑窗统计及差分的代码,其他统计指标如std,skew,kurt等可直接替换修改:使用无监督模型;经测试,在这道题中使用无监督异常检测算法iForest有着良好的效果,无监督单模型线上分数接近0.4,已经到达奖牌区,无监督的入模变量我选择了对2018年四个季度的坏样本都有效的变量,即使用LightGBM分别对四个季度的坏样本进行训练,取四个集合中都有效的变量作为无监督模型的入模变量。做完以上分析与操作后,把建模样本限制在2018年下半年,线上分数0.3,调整模型参数后线上分数0.3x,进入奖牌区;将样本范围限制在2018年8月及以后,同时将坏样本的倒数第二条记录也作为坏样本加入训练集(一边降低坏样本数,一边增大坏样本数),线上分数提升至0.41,持续一周TOP1后被超越,模型融合后线上分数0.43,短暂TOP1,最终TOP2;直接使用无监督的结果,线上分数接近0.4,无监督单模进入奖牌区,逼近奖金区;无监督做规则模型,结合有监督最强单模,线上分数0.4488,最终TOP2;五、总结这次比赛让我思考了很多以前没有考虑过的问题,对我日常的工作学习还是很有帮助的,但过程中仍有很多不足的地方:我平时经常把无监督的输出作为有监督的入模变量使用,在这题一开始我也是这样操作,但是没有显著的效果,直到最后一天晚上黔驴技穷了才开始尝试无监督直接作为输出结果使用,没想到效果这么好,导致我既没做相关调优,也没做阈值调整,感觉无监督这一块还有很大的开发空间;直到最后我也没能很好的处理变量时间泄露和变量真实效果之间的问题,可能TOP1大佬raw变量除normalized变量的骚操作才是关键吧,不过我觉得大佬上分的核心应该是基于这个衍生变量的统计变量,而不是这个变量本身。六、吐槽1. 本题中训练集的date_g是str格式,而线上测试数据是datetime格式,导致同样的代码在predict的时候总是出错,刚上手NAIE的我debug到脑壳疼;七、鸣谢非常感谢小爱姐,希旭哥,诸葛亮等各位老板在参赛过程中给予的帮助与解答,尤其是希旭哥和小爱姐,总是能够及时地答疑解惑。最后祝华为及NAIE越来越好,向下扎到根,向上捅破天!来源:网络人工智能园地链接:https://zhuanlan.zhihu.com/p/131275558
-
首先感谢华为公司举办的比赛,感谢提供给我们一个提升自己的机会。我们是来自南开大学的Excavator团队(挖机联盟),本次比赛非常有幸能进入前10。一、赛题任务本次KPI异常检测比赛提供了某运营商的部分网元的KPI真实数据,根据历史一个月的异常标签数据,训练机器学习模型,智能预测后续一周内KPI中的异常。评价函数为二分类中常用的F1-score:二、数据初探训练集数据仅有5列,分别是:Ø kpi_id:表示某个KPI名称,本次共分为20个KPI_ID。Ø start time、end time:采样间隔为1小时,用于指示当前KPI值的开始时间和结束时间。Ø value:KPI值,本次KPI检测的关键数据,核心特征。Ø label:标签值,指示kpi值是否异常。0为正常,1为异常。除去ID列和标签列,仅有时间特征和kpi特征。其中最为关键的就是KPI值,通过KPI值的时序变化,来判别异常点。根据上述分析,将本赛题归纳出几个关键字:时序类数据、原始特征较少、二分类问题。接下来我们进一步分析,发现两个问题:1.通过绘制value值分布图发现,不同kpi_id的 value值分布截然不同:有的较为平稳,有的波动很大,且取值区间也相差很大。2.通过对label列的value_counts()函数统计发现,0值较多,1值极少。0与1取值分布如下图所示,比值约为98.5:1.5,训练集数据极为不平衡。 第一时间想到的解决方案是:分ID训练不同模型,根据1/0比值划分阈值。三、特征工程时序类数据和时间强相关,上下联系紧密,首先想到的就是窗口特征和差分特征。1.窗口特征:向上向下取一定数量的值(称为窗口),进行统计分析。可以使用Dataframe中rolling函数。2.差分特征:时间移位作差,目的是观察时序变化。可以使用diff函数。3.卡方分箱:将value值放缩并进行一个映射,便于模型理解。四、解决方案:常见的时序类模型会想到lstm等神经网络,但是其训练速度较慢,所以本次并未采用。本次采用数据挖掘比赛常用的Lightgbm模型,并结合数据规则进行综合评判。分ID思路如下:1.稳定ID一部分ID具有较稳定的value值,异常点即离群点。针对这个现象,我们根据折线图和散点图,找出这些稳定ID,设置一个KPI正常区间。区间之外的点为异常点,置为1。2.不稳定IDl 直接按照模型概率划分0,1对于一部分不稳定ID,我们直接采用LGB模型预测,得到每个点是异常点的概率,再通过计算Train中0,1比例,得到概率划分基准点,再进行微调。划分阈值这里我们的方案如下:五折交叉验证后得到的训练集异常概率,遍历0.001到0.5之间阈值,计算训练集F1_score,得到最优的阈值listl 经常会出现两个连续1的ID有一部分ID的异常点经常是连续出现的(2个),根据这种情况,我们采用的方案是:1)确定必然是异常的点(异常概率大,超过0.5)。2)在异常点的上下寻找概率较大的点,也将其记作异常点。l 模型概率加阈值划分最后一类问题是我们最头疼的一类问题,某些谷底的值,因为下降过程非常平滑,模型有时不能判断其是否是异常,这种我们通过模型概率先找出异常点,再划分阈值来判断异常。最终评分0.9403,线上排名第10,复核排名第9五、总结1. 首先分ID训练优化模型,对于较少ID的比赛(比如本次比赛)还可以,对于ID多的恐怕会相当复杂,所以还是很期待前排“1”佬们的方案。2. 我们提供的方案主要还是单模,难免在最后阶段进入瓶颈期。后面还要更多考虑模型融合,发掘不同模型之间的优势,取长补短。3. 特征挖掘思路较为常规,还需要进行更深入的挖掘,毕竟“特征为王”,挖到几个强特可能直接分数暴增。4. 对于华为NAIE平台,刚开始使用的时候还是挺困难的,但是一天的摸索后,就一句话:NAIE真香。----------------------------------------------------分割线---------------------------------------------------------5. 对于赛制:没有B榜可能是唯一的槽点吧,全都朝着A棒拟合,模型泛化能力检测不够吧。有点慈善赛的味道(不是为了买代码)。6. 希望下次还能有机会参加华为的比赛,和各路高手比拼。和GREAT再战300回合!
-
作者:刘迎飞作者简介:刘迎飞,硕士在读,导师为孙显研究员。2018年由天津大学保送至中国科学院大学,研究方向为遥感图像目标检测。曾获2020海华AI挑战赛·垃圾分类技术组第三名。2020年7月18日,由深圳市南山区人民政府主办,华为技术有限公司承办的“华为云杯”2020深圳开放数据应用创新大赛落下帷幕。赛博智能团队疫情期间,在科研环境有限、线下沟通不畅的情况下,发扬“艰苦奋斗、自强不息”的科研精神,利用华为云NAIE 等训练平台,积极投身科研和学科竞赛中。由刘迎飞、时爱君、郭荣鑫、许全福和林仁灯等研究生组成的江流儿赛队,在全国912支参赛队伍、4388名参赛者中脱颖而出,夺得生活垃圾图片分类检测赛道的冠军。在参加比赛的过程中,非常感谢华为NAIE平台给我们提供的计算资源支持。平台代码调试非常方便,此外为每个用户提供5张V100显卡使用。这些使我们有了更多参数调试的机会,大大提高了我们模型迭代的速度。图源 https://competition.huaweicloud.com获奖证书一、赛题描述生活垃圾的分类和处理是目前整个社会都在关注的热点,如何对生活垃圾进行简洁高效的分类与检测对智慧城市建设至关重要。为了对算法的实用性进行评估,比赛测评选用的是VOC形式的mAP,使用华为云ModelArts系统进行自动评分。选手需要将网络模型部署到ModelArts系统中,在CPU机器上对近三千张图像进行测试,要求测试时间不大于三小时,禁止使用TTA和模型融合。这对于算法的精度和实时性都有非常高的要求。二、模型介绍团队在本次比赛中使用MMdetection检测框架,以Res2Net152+gcb作为backbone,单阶段的ATSS检测算法作为baseline。训练过程中结合常见的平移、缩放、旋转、颜色变换,多尺度训练、GridMask数据增强,类别平衡采样方法、余弦学习率衰减、随机权值平均(SWA)等。1、Baseline选取双阶段算法一直是横扫各大比赛的主流算法。但是受到比赛规则的限制,双阶段算法在CPU环境下的部署要比单阶段算法慢得多。有很多的队伍都使用Cascade RCNN,但是只能对较小的输入尺寸进行测试,限制了算法的上限。网络结构图 图源|FCOS[2]如上图所示,ATSS的网络结构沿用了FCOS的形式,相比于双阶段网络,由于没有ROI head,在CPU上的运行速度大大提升,因此选用ATSS作为比赛的baseline。2、Backbone选取Res2Net模块图源|Res2Net[3]如上图所示,Res2Net在单个残差块内构造分层的残差类连接,增加每个网络层的感受野范围,提升特征提取能力。相比于ResNet,Res2Net能用相近的计算复杂度达到更高的精度,因此比赛选用Res2Net系列作为backbone,从最开始的Res2Net50逐步升级到Res2Net152.三、提升技巧很多技巧的参数在比赛的过程中是不断反复调整的,因此很难拿一个具体的数值来定量描述,这里只给出一个大致的提升效果。最初的baseline我们选用的是Res2Net50 + ATSS,保留本地验证集的情况下在初赛A榜mAP=67.48%,使用全部训练数据大约69.5%-70%。1、Albumentations数据增强库Albumentations包含了各种数据增强算法。选用平移缩放旋转和随机旋转90度进行增强。这两项结合在A榜有3%左右的提升。dict(type='RandomRotate90', p=0.5),dict(type='ShiftScaleRotate',shift_limit=0.0625,scale_limit=0.5,rotate_limit=30,interpolation=1,p=0.5)2、多尺度训练为了充分利用测试时间,选用608x640的测试尺寸。在训练过程中,固定长边不变,短边从384浮动到640进行多尺度训练. 多尺度训练的提升在1%~1.5%左右。img_scale=[(640, 384), (640, 640)]3、GridMaskGridMask示意图 图源|GridMask[5]如上图所示,GridMask 通过生成一个和原图相同分辨率的mask,然后将该mask与原图相乘得到一个图像。上图中灰色区域的值为1,黑色区域的值为0。GridMask可以理解为一种正则化方法,将GridMask使用比率设为0.8,结合其他数据增强训练50个epoch。GridMask在初赛A榜有大约2%左右的提升。dict(type='Grid', use_h=True, use_w=True, rotate = 1, offset=0, ratio = 0.5, mode=1, prob = 0.8),4、Cosine学习率衰减余弦学习率衰减指的是学习率衰减像余弦函数一样变化,在训练初期和训练末期均保持一个较为平稳的学习率,在训练中期学习率快速下降。相比于step阶梯式的学习率下降策略,在初赛A榜提升在0.5%左右。lr_config = dict(policy='CosineAnealing', min_lr_ratio=0.01, by_epoch=False,warmup='linear', warmup_iters=500, warmup_ratio=1.0 / 3,)5、类别平衡采样数据的平衡对于以mAP为测评指标的算法非常重要,初赛设置上采样率为0.02,出现频率低于0.02的类别将会采用过采样的方式达到这一比率。决赛设置上采样率为0.018. 在初赛A榜提升有0.5%左右。train=dict(type='ClassBalancedDataset',oversample_thr=0.018,…6、更大的backboneBackone的选取对模型精度提升很关键,在初赛A榜将Res2Net50替换为Res2Net101可以将mAP从70.65% 提升至72.32%, 后期使用Res2Net152将mAP从75.43% 提升至76.08%。Global Context Block 图源|GCNet[4]在决赛期间,由于不允许模型融合,继续增加网络的复杂度是很有必要的。 对Res2Net152添加Global Context Block(GCB),决赛可以从77.14%提升到77.63%。backbone=dict(type='Res2Net',depth=152,scale=4,baseWidth=26,num_stages=4,out_indices=(0, 1, 2, 3),frozen_stages=1,='pytorch',gcb=dict(ratio=1. / 4. ),stage_with_gcb=(False, True, True, True)),7、随机权值平均SWA随机权值平均可以增强模型的泛化性能,降低过拟合的风险。在50 epoch的训练过程中,每5个epoch保存一次模型,使用随机权值平均得到十个模型的平均值。这使得初赛、决赛的最后均有0.8%左右的提升。https://github.com/open-mmlab/mmdetection/issues/20018、类别细化在多类别的检测中,一组参数可能无法对所有的类别达到最优的效果。类别细化就是对不同的类别设置不同的参数,以期达到更优的效果。FCOS和ATSS都具有center-ness分支,在本地验证集的统计发现一些类别的分类得分不乘center-ness高,一些乘以center-ness高。在测试过程中对这些类别加以区分,一些乘center-ness,一些不乘。在初赛提升了0.06%,决赛提升了0.07%。从决赛最终的成绩来看,这个细节发挥了最关键的作用。三、总结展望此次比赛过程,初赛一帆风顺,决赛一波三折。从决赛的过程来看,任何时候都不能松懈,很多实验的细节可能成为决定胜败的关键。此外,受限于比赛时间和硬件条件,本方案仍存在一定的提升和改进的空间:1、Generalized Focal Loss在缺少预训练模型的情况下,GFocal Loss在比赛数据集上效果比ATSS略差,后续可以考虑加上GFocal Loss在COCO上预训练。2、GCB模块GCB模块在本方案中当做一个即插即用的模块使用,如果使用COCO的预训练模型可能取得更好的效果。3、训练尺寸测试尺寸在决赛期间做了较大修改,由于时间关系训练尺寸未做较多的调整,精细化的调整可能会带来一些提升。四、参考文献Zhang, Shifeng, et al. “Bridging the Gap Between Anchor-Based and Anchor-Free Detection via Adaptive Training Sample Selection.” CVPR 2020: Computer Vision and Pattern Recognition, 2020, pp. 9759–9768.Tian, Zhi, et al. “FCOS: Fully Convolutional One-Stage Object Detection.” 2019 IEEE/CVF International Conference on Computer Vision (ICCV), 2019, pp. 9626–9635.Gao, Shanghua, et al. “Res2Net: A New Multi-Scale Backbone Architecture.” IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019, pp. 1–1.Cao, Yue, et al. “GCNet: Non-Local Networks Meet Squeeze-Excitation Networks and Beyond.” 2019 IEEE/CVF International Conference on Computer Vision Workshop (ICCVW), 2019, pp. 1971–1980.Chen, Pengguang, et al. “GridMask Data Augmentation.” ArXiv Preprint ArXiv:2001.04086, 2020.Zhang, Zhi, et al. “Bag of Freebies for Training Object Detection Neural Networks.” ArXiv Preprint ArXiv:1902.04103, 2019.Izmailov, Pavel, et al. “Averaging Weights Leads to Wider Optima and Better Generalization.” UAI 2018: The Conference on Uncertainty in Artificial Intelligence (UAI), 2018, pp. 876–885.
-
上海理工大学首届智慧校园应用开发设计大赛:https://competition.huaweicloud.com/information/1000041293/introduction?track=117华为云帐号:hw_h0ss一、个人介绍大家好,我是一名大二学生,参加了上海理工大学首届智慧校园应用开发设计大赛(下称本次比赛),并最终取得二等奖。接下来我将从本次比赛的准备、实操、完善等阶段回顾和总结比赛的全流程,希望能够帮助其他参赛同学们在其他大赛中取得好成绩。二、准备——我为什么想参加比赛首届智慧校园应用开发设计大赛由上海理工大学和华为云共同举办,同样也是基于AppCube平台进行开发,并且优秀作品可以在welink中上线推广。我是在华为云大赛官网看到的比赛信息,首先智慧校园的主题非常吸引我,作为学生当然希望自己关于智慧校园建设的一些想法可以得到实现,其次比赛是基于AppCube进行开发,这给开发者们提供了非常便捷的开发工具和平台。所以就选择了参加本次比赛。总体来说,智慧校园主题的比赛对于学生来说是一个非常熟悉的领域,平时在校园中看到哪些值得优化的、哪些值得增加的,都可以成为一个赛题,加之大赛平台的加持即可构建为应用。三、第一个选择——组队OR个人参赛本次比赛可以组队也可以个人形式参加,因为我之前已经参加过华为云DevCloud大连站、DevCloud河南站和山东鲲鹏杯新动能的比赛,所以对AppCube也比较熟悉了,就想挑战一下自己,看看能不能独立完成一个相对更加复杂、更加完善的应用开发项目,就选择个人形式参赛。在这里我想给参加比赛的同学们一个建议,最好还是以团队形式分工合作,包括应用设计方案整体规划、数据库设计、后端逻辑设计和前端页面设计等几个方面,充分发挥各自所擅长的,个人参赛的话完成比赛项目会非常吃力。而且组队参赛还可以锻炼协同合作的能力。如果还没有找到伙伴,可以在大赛QQ群里去寻找队友哈!有非常非常多个人报名的同学。四、启程——如何选择赛题在确定参赛之后,就需要了解赛题,本次比赛官网给出了几个有关校园生活的赛题,同时也可以自行拓展。恰好我对学校的报修系统有一些改进的想法,便选择了“全校统一报修系统”这一赛题,这一过程可以说是水到渠成。如果没有现成的赛题思路,那么可以根据自己平时的校园体验,从学校的各种应用出发,去寻找其中的不足点,然后再尝试思考有没有优化方案,最后就可以确定一个合适的赛题了。我觉得最重要的是体现智慧校园的主题,充分表达出该应用对于校园生活的重要意义。 在确定赛题之后,需要进行应用设计方案的撰写,为整个应用的构建设计蓝图,建议可以根据应用开发背景、需求分析、可行性分析、功能设计、数据库设计、实现测试等几个方面去撰写。这里需要队长把每个模块的任务分配给每个队员,团队可以适当利用在线协同文档进行实时沟通,比如腾讯文档、石墨文档等,团队成员可以在线浏览和编辑,而且都是免费的,非常方便,这样也不至于每个部分相互脱节。【下附参考目录】五、关键——如何使用AppCube完成应用在完成应用设计方案的撰写后,就可以开始动手去完成应用了。我使用的是AppCube平台,应用构建流程主要分为三部分:数据对象建立(数据库设计)、后端脚本设计(后端逻辑设计)和前端页面设计。对于使用AppCube的开发者来说,数据库表的建立只需要建立一个数据对象即可,之后添加对应的字段信息(根据设计方案中数据库设计部分内容去完成),编写脚本时用到的脚本语言为TypeScript,其中的一些API可以在官方文档中查询得到,建议可以先了解基本的TS语法,之后跟着官方指导文档完成实操,对脚本构建流程熟悉之后再开始动手实现。完成数据对象定义以及脚本编写之后,就需要把数据展示出来,这对于普通开发流程可能也是令人头疼的一部分,但是在AppCube中只需要对预置组件进行拖拽即可形成基本的页面,之后再添加页面模型,绑定到数据对象以及脚本即可实现前后端的数据对接。在经过这三部分的操作之后,一个应用已经基本成型,之后需要考虑的是应用上线的一些权限管理操作,平台已经预先集成了各类权限管理,只需要开发者或者部署人员进行简单操作即可实现应用上线。关于这部分,我也出了一个简易的视频说明,具体可以在https://developer.huaweicloud.com/hero/thread-91343-1-1.html这个帖子中交流。六、避坑指南简单总结了一些开发过程中可能会遇到的一些坑,仅供大家参考,如果有遇到其他坑的,也欢迎大家随时来交流互动。1、如果页面使用到表单获取信息,并利用脚本将数据存入数据对象中,注意要做到前后端校验,否则可能会存入一些奇奇怪怪的数据;2、如果页面展示使用的是列表视图,需要注意在获取数据时对数据进行处理,将字段类型为“选项列表”的数据进行值到标签的转换,否则显示在页面上的会是对应的值而非标签;【如示例代码】3、当表格数据需要在页面加载时根据选项去进行筛选时,注意要把表格的“自动加载数据”选项去勾选,否则数据还是会全部展示,达不到筛选的效果;4、脚本的入参或出参有改动时,要注意在页面模型处选择对应节点,重新点击编辑并保存,否则在页面利用脚本时会出现错误。七、终点——收获的不仅仅是奖项这是我第一次实现从应用方案设计到构建再到上线完整的应用开发流程,在应用成功上线welink的那一刻,确实收获了满满的成就感。其实一直到应用上线之前,我也不确定是否可以完成这一看似艰巨的任务,过程中也遇到不少问题,所幸有华为云相关专家的耐心解答,以及一些课程和直播可以学习参考,最终得以完成。所以我想告诉各位参加本次华为云智慧校园应用创新大赛的同学们,在完成赛题之前你可能会觉得很难,但在真正动手之后会发现收获远比困难多,参加一次比赛得到的知识与经验是无价的,只要有想法、有好点子,即使不擅长应用开发,也可以找到一群志同道合的同学合作,最终将想法落到实处,这一过程感觉真的非常好!最后祝所有同学都可以在本次大赛中收获知识、收获友谊、收获快乐!祝参赛同学们取得好成绩!
-
前沿我们是西南交通大学朱庆教授带领的虚拟地理环境团队,我们团队主页是:https://vrlab.org.cn/很荣幸在“华为云杯”2020西安人工智能创新应用大赛中获得冠军,下面是我们的方案分享我们已将方案同步到:https://github.com/liaochengcsu/road_segmentation_pytorch 欢迎各位大佬同本菜鸟一起交流探讨一、问题分析1、遥感影像中道路特点:城市主干道与郊区公路尺度差异大;道路与其它背景信息样本不平衡;城市绿化等遮挡严重,道路标注不对应;传感器、环境、构筑材料等,导致外观多样化。2、现有方法存在问题:主流方法为语义分割,在有限的数据集训练,模型过拟合严重,使得模型在不同区域泛化性差;提取结果可靠性低,无法广泛地在实际产品应用。二、解决方案1、网络架构:编码模块选用ImageNet预训练的ResNeXt200网络,在E-D架构的基础上,提出一种通道注意力增强的特征自适应融合方法,并设计基于梯度的边缘约束模块。在增强空间细节和语义特征的同时,提高道路边缘的特征响应,实现多尺度道路准确提取。2、使用策略:随机平衡采样:影像裁剪数据增强:训练过程中随机翻转,旋转,缩放,色彩损失函数:BCE+Dice,权重1:1优化函数:SGD,初始学习率lr=0.01TTA(原始影像,上下翻转,180度旋转)后处理:基于阈值的空洞填补和噪声去除三、处理结果样本裁剪获得20733×512×512数据标签对,按7:3随机划分成训练集和验证集(16337:4396)。在24G单卡TITAN RTX上单轮训练时间小于1小时,模型完整训练周期约24小时,模型在训练24轮左右,线下精度约为0.8267,此时线上精度达0.8411(初赛排名2/377)。下图是我们方案处理结果示例:四、比赛总结比赛数据和标签存在很多不对应问题,特别是细小道路标注不完整,道路被绿化遮挡问题严重,使得模型精度总体较低。由于时间有限,对提取结果后处理比较粗糙。个人认为结合道路连续性特征,可以获得显著精度提升,这也是遥感智能解译应用必需解决的问题。本文首发 AI Gallery:https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=92a0d8f9-9791-41ce-a1c8-2ae6174a1a91本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
前言大家好,我们团队名称是我要拿十万,很高兴跟大家交流“华为云杯”2020人工智能创新应用大赛的比赛心得,我们团队的三个成员都来自西安交通大学。本文将从解题思路、数据处理、模型结构三个方面进行介绍。解题思路充分使用所给数据使用模型提取图像高分辨率表示数据处理训练前,数据准备减小切割图片大小和步长,将baseline中图片切割步长由992变为256,切割大小由1024x1024变为512x512,剔除无效数据,去除只含有背景的训练数据对;最终有效数据增加至24000张,之后按照7:3的比例划分为训练集和验证集;训练过程中,数据增强随机对训练数据进行gamma变换、随机角度旋转、随机水平翻转、均值滤波、增加噪声,亮度、对比度、饱和度、颜色等随机变化;通过数据增强,提高了训练数据的丰富性,一定程度上抑制了过拟合现象;推理过程中,膨胀预测因为推理图像比较大,在推理过程中需要对图像进行切割和拼接,为了避免因为对切割图像边缘处特征提取出现问题,使用膨胀预测;首先对推理图像进行填充,每次推理步长为512,推理图片大小为1024,只保留中心512大小的部分,最终拼接得到推理结果。网络模型使用HRNetv2_w48作为分割网络,对于每张图片,使用一个主干网络对其提取特征,得到不同层级的特征之后,通过上采样,将这些不同层级不同大小的特征拼接到一起,之后经过一个卷积层,batchnorm层,relu激活层,得到最终用于分割的特征,最后将得到的特征经过卷积层,softmax,上采样等操作,得到最终的分割结果;因为我们的思路是使用模型提取图片的高分辨率表示,因此使用hrnet作为特征提取网络,hrnet在整个特征提取过程中并行链接高分辨率卷积到低分辨率卷积,从而在整个过程中保持高分辨率表示;同时通过在平行卷积上重复进行融合,产生强的高分辨率表示;通过使用hrnet,得到图片的强分辨率表示,我们最终得到良好的分割结果。参考资料:[1] Sun K, Zhao Y, Jiang B, et al. High-resolution representations for labeling pixels and regions[J]. arXiv preprint arXiv:1904.04514, 2019.[2] Long J, Shelhamer E, Darrell T. Fully convolutional networks for semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 3431-3440.[3] 王梦灵,姚宝敬.新基建浪潮下应用AI遥感技术实现城市管理创新[J].张江科技评论,2020(03):64-65.[4] 邢逸帆.AI养猪、遥感杀虫和卫星种粮 智慧农业中国新希望[J].农业工程技术,2019,39(27):63-66.[5] open-mmlab/mmsegmentation https://github.com/open-mmlab/mmsegmentation[6] wangye707/ICNet-paddlepaddle https://github.com/wangye707/ICNet-paddlepaddle[7] 深度学习入门之Pytorch——数据增强 https://blog.csdn.net/weixin_40793406/article/details/84867143[8] 【Keras】基于SegNet和U-Net的遥感图像语义分割 https://www.cnblogs.com/skyfsm/p/8330882.html[9]使用神经网络(ICNet)对航拍图片(遥感图像)进行图像语义分割(数据集+代码+最终训练模型)https://blog.csdn.net/qq_28626909/article/details/106489285本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=d2717986-bceb-4b83-a3ae-7305503b81d3本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
华为云杯”2020人工智能创新应用大赛总结与分析一、 赛题背景西安,古称长安、镐京,陕西省会、副省级市,是世界历史名城、中国四大古都之一、中华文明和中华民族重要发祥地,是国家重要的科研、教育、工业基地,亦是丝绸之路起点城市和“一带一路”核心区。西安国家民用航天产业基地成立于2006年11月,是陕西省、西安市政府联合中国航天科技集团公司建设的航天技术产业和国家战略性新兴产业聚集区,也是西安建设国际化大都市的城市功能承载区。2010年6月26日,被国务院批复为国家级陕西航天经济技术开发区。此次赛题结合西安以及西安航天基地以航天卫星遥感产业为特色,旨在解决道路路网信息自动提取问题。本次比赛依托陕西航天工业雄厚的综合实力和坚实的发展基础,充分发挥航天科技对国家战略性新兴产业的引领作用,立足航天产业,发展人工智能新兴产业,推动军民融合,带动产城融合,在谋求错位发展中建设世界一流航天产业新城。本赛题任务是基于高分辨可见光遥感卫星影像,提取复杂场景的道路与街道网络信息,将影像的逐个像素进行前、背景分割,检测所有道路像素的对应区域。二、 数据简介与评判指标大赛数据集来源于北京二号卫星,空间分辨率为0.8米,分为训练集和测试集2个数据集,分别包含3景遥感影像,其中训练集2景影像的尺寸分别为40391×33106、34612×29810。测试集不公开只参与线上评测。参赛者可自行将训练集切分为小图,并划分为训练集和验证集以用于模型调优。数据集下载地址:https://ma-competitions-bj4.obs.cn-north-4.myhuaweicloud.com/xian/2020/data.zipData.zip解压后目录结构说明如下:评价指标:平均交并比即MIOU,计算公式如下图:其中,k表示像素所属的类别,pij表示本属于类别i且被预测为类别j的像素数据,pii表示真正的数量,pij和pji分别表示假正和假负的数量。三、 数据分析数据概览与初步分析数据集共两张空间分辨率为0.8m的遥感影像图,尺寸大小分别是4039133106和3461229810。影像全图如下所示。初步观察分析可以从影像上分析出一下几点内容:a. 影像是大尺寸图片并不能直接输入神经网络进行训练,因此要选用合适的图像切割发方式将影像切割成合适尺寸的图像。影像的切割方式大致有三种选择:规则网格切割、滑动窗口切割以及随机切割。这里我选择的是滑动窗口对图像进行切割,以448为步长才切成512*512尺寸的图片;b. 有影像的区域并不是正矩形,周围存在黑边,黑边在影像中占据的面积并不小,因此对于切割后的数据去除掉全黑的图像;c. 两张影像在颜色上存在肉眼可见的色差,因此拟考虑在数据增强中添加色彩增强相关部分降低模型对色彩上的敏感程度;d. 仔细查看数据集可以发现影像中的区域以城市乡镇为主,说明影像中会存在路网密集区和路网稀疏区,这可能会导致标签中的类别不平衡。四、 数据增强数据增强的目的是为了增加样本的多样性,避免模型的过拟合。数据增强库很多,如:skimage、imgaug、opencv、Albumentations以及Augmentor等。在这里我选择的是Albumentations。在此次大赛中我所用到的数据增强有很多,我主要将其分为三大类:形态变换、颜色变换以及其他变换。形态变换主要是为了对图像上的结构信息进行调整与改变从而达到数据增广的目的。如下图左侧的为原始图像,右侧为经过形态变换(网格失真)后的图像,可以看到两张影像上的道路部分发生一些改变,右侧的道路部分有些细微的扭曲,而道路的扭曲对于真是的情况来说是可能存在的,可以避免让模型误认为细长的颜色相同的区域就是道路,在一定程度上增加了样本的多样性。颜色变换主要有随机调整色相饱和度、随机打乱通道顺序、RGB色彩偏移、随机调整亮度和对比度。其中随机打乱通道顺序避免不同库在读取图片时颜色通道不一致输入模型带来的影响,降低模型对色彩的依赖。随机调整亮度和对比度避免遥感影像因为天气影响带来的过曝或是欠曝导致影像亮度不一致的情况,在此加入是为了避免验证集上的遥感影像亮度对比度可能存在一定差别的因素。其他变换主要有随机添加高斯噪声、中值滤波、cutout等,主要是为了提高模型的泛化能力。五、 模型设计与训练基本结构基本结构选择了2015年在MICCAI会议上发表的Unet。Unet结构简单,大体上可以分为两个部分,分别是用于提取特征的编码区和对特征进行解码还原的解码器。编码器和解码器之间存在skip connnection。即在解码器部分会融合编码器中的部分输出,这样实际上是将多尺度特征融合在了一起,实现了网络对图像特征的多尺度特征识别。在本地实验也尝试过其他结构如:DeepLabV3、LinkNet、FPN等,但各有优缺点,如DeepLabV3训练效果比Unet略高,但是训练时间比Unet长,本人本地并没有好的GPU资源可以用于模型训练,而且大赛分配ModelArts资源宝贵,因此选择了训练速度快,精度较好的Unet作为基本结构。BackBone选取Unet用于特征提取的编码器部分结构较为简单,只有几层卷积网络顺次连接而成,为了提取更加丰富全面的特征我们可以更换编码器的结构用于提取更丰富的特征,常见的方法是从分类效果好的网络结构中选择合适的层作为backbone,以用于特征提取。在比赛过程中一共测试了8种backbone,包括resnet_34、resetnet50、se_resnet50、se_resnext50_32x4d、efficient-b0、efficient-b1、efficient-b2、efficient-b5。最终选择最好的efficient-b5作为backbone。Loss选取大赛的最终评价指标时miou,在二分类中iou等于miou,因此在Loss选取的时候选择了以iou作为优化方向的损失函数,Lovasz损失函数和Focal损失函数。添加Focal的主要目的是在数据裁切和增强部分并没有对样本的类别不均衡做处理,添加Focal是为了解决正负样本不均衡的问题。Dice+BCELoss主要是优化速度快,但是后期BCELoss会变得非常小,近似与只有DiceLoss,而且在线上线下差距大,测试结果不稳定。Lovasz+FocalLoss前期损失下降平缓,测试时较为稳定,线上线下差距小。优化器选取优化器选择的时Radam+Lookahead,即Ranger。此组合变相的提供了不需要调参的warmUp,在快速优化的同时保持了模型的稳定性,且对学习率不敏感。训练trick多尺度训练,对于每一batch,保持batch内的图片尺寸相同,不同batch间的尺寸存在区别,使用多个尺寸的图片对模型进行训练,提高泛化性。学习率调整,使用带重启的余弦退火最为学习率调整的方式,使得模型对探索较好的局部最优。六、 后处理膨胀预测膨胀预测的主要思想是每次预测仅仅保留图片的中心部分,其余地方舍弃,而舍 弃的地方通过滑动切割的思想也会成为其他预测图的中心区域,该方法避免因边界的 特征提取问题而产生拼接痕接,影响最终分割效果。阈值划定在二分类语义分割常用0.5作为前景和背景的分割阈值,某一点的置信度大于0.5就被划分为前景,反之则为背景。在此次比赛中通过测试重新确定分类阈值,最终测试结果为10-2下图左侧为正常0.5作为分割阈值,有图为以10-2作为分割阈值。七、 结果与参考文献最终提交结果为当模型,无TTA等测试时增强操作,模型参数为120M,单张图片(4048*6144)推理时间小于10s(2070super)。 参考文献:EfficientNet: Rethinking Model Scaling for Convolutional Neural NetworksU-Net: Convolutional Networks for Biomedical Image SegmentationFocal Loss for Dense Object Detection, Tsung-Yi Lin, 2018The Lovász-Softmax loss: A tractable surrogate for the optimization of the intersection-over-union measure in neural networksAlbumentations: Fast and Flexible Image Augmentationshttps://github.com/qubvel/segmentation_models.pytorchStochastic Gradient Descent with Warm RestartsLookahead Optimizer: k steps forward , 1 step backRadam:ON THE VARIANCE OF THE ADAPTIVE LEARNING RATE AND BEYOND 本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=712bcbe2-5535-435d-8866-cd0259df56f4 本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance 决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
“华为云杯”2020人工智能创新应用大赛-季军方案本赛题任务是基于高分辨可见光遥感卫星影像,提取复杂场景的道路与街道网络信息,将影像的逐个像素进行前、背景分割,检测所有道路像素的对应区域。大赛官网source code数据分析训练集包含2景遥感影像,尺寸分别为40391×33106、34612×29810。测试集包含6张4048×6144尺寸的切分图片,每张测试图片的推理时间被要求在50s以内。训练集图片分辨率过大,需要自行切分,这里需要权衡合适的切分图像大小和步长。我们使用baseline默认的切图代码,图片尺寸为512,步长为256,训练验证集比例为10:1。由于训练图片周围存在黑边,切分后会出现全黑的图像,我们认为这不利于模型的训练,因此通过筛选再去除全黑的图像,最后用作训练和验证的样本数为23553和2269。对标签进行可视化分析,发现背景像素占标签的大部分面积。经过粗略的统计,得到前景和背景的像素占比约为12.2%和87.8%,像素类别极度不平衡,故我们在loss中加入权重(3: 1),以减轻类别不平衡带来的影响。数据增强网络模型采用了Efficentnet作为backbone,优化器是Adam,损失函数为BCE。后处理测试时增强策略模型融合策略忽略边缘预测因为每张图像块的边缘区域缺少上下文信息,会导致周边预测结果精度较低,所以我们采用忽略边缘来预测结果。模型测试时增强模型融合忽略边缘预测成绩Efficentnet-b30.8203Efficentnet-b40.8225Efficentnet-b3√0.8234Efficentnet-b4√0.8254Efficentnet-b3+b4√√0.8325Efficentnet-b3+b4√√√0.8377比赛总结因为时间等因素,我们团队没有花过多的时间去探讨模型的优化,所以模型仍还有很大改进的空间,包括利用道路的边缘信息,采用更适合遥感图像语义分割的loss函数,以及一些形态学操作等。本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=3182dfbe-244f-4aa0-9ed7-de2f6f3ac810本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
前言我们是不配拥有姓名团队,获得决赛第六名,很高兴分享我们的解决方案。1赛题理解1.1任务基于高分辨可见光遥感卫星影像,提取复杂场景的道路与街道网络信息1.2特点:原图比较大,需要自行切分前景(道路)占比比较小1.3数据探索比较宽的道路的标注,和主观识别的道路比较一致。过河道路,认为非路网信息。对于有树木的道路,标注有部分不一致的情况有些比较窄的道路有偏移,有些可能是道路的位置没标注2解决方案2.1 数据预处理裁剪策略window size:1024 × 1024step size: 1024 - 128 = 896计算道路占比计算非全黑区域占比数据过滤策略策略1:道路占比大于0,非全黑区域占比大于0策略2:382 道路占比大于0.09,有效区域占比大于0.3182 道路占比大于0,有效区域占比大于0.32.2 模型结构方案中使用FPN和UNet,backbone均为Efficientnet-B52.3 数据增强CropNonEmptyMaskIfExists:裁剪512×512大小子图,并确保里面有道路信息Normalize:图片数据除以2552.4 训练策略单阶段训练策略初始权重:imagenet训练的EfficientNet-B5权重Loss:1 BCELoss + 1 DiceLoss优化器:SGD学习率调度:使用可重启的余弦退火学习率策略两阶段训练策略1.第一阶段初始权重:imagenet训练的EfficientNet-B5权重Loss:BCELoss优化器:SGD学习率调度:steplr2.第二阶段初始权重:第一阶段训练出的最优模型Loss:LovaszHinge优化器:SGD学习率调度:steplr2.5 模型推理膨胀预测:window size: 1024 × 1024step size: 5121024 × 1024区域,保留中心512 × 512区域内容2.6 后处理对于图像中全黑区域,pred设置为1(非道路)本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=550cd8af-e871-4c7e-a9a9-bd47f99b80a6本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
前言大家好,我们是“0.4441警告”,很高兴在论坛和大家交流“华为云杯”2020人工智能创新应用大赛的比赛心得。我们团队的三名成员都来自西安交通大学电信学部信通学院的三名研究生。本次比赛的任务是对遥感图像进行道路的语义分割,下面是我们将从网络框架、数据处理、模型训练、实验结果四个方面阐述我们的解决方案。一、网络框架介绍本次比赛中,我们队伍选用的网络为Unet的变体,主要改动有两个方面:backbone也即encoder部分使用了在ImageNet上预训练的resnet34网络,decoder部分沿用原unet的部分;bridge部分增加了输入和输出通道均为512的残差+BN+ReLU模块。二、数据预处理本次比赛中,我们的数据处理部分主要也是分为两部分,具体如下:使用大赛baseline中cut_data.py文件将两张大图进行有重叠的剪裁,得到xxx张1024×1024的小图,stride(128),也即重叠1/8;把1中得到的全黑的图片(无目标)以及全白的标签(无目标)删除,接着对标签进行反转,即将路的像素值变为255 ,背景像素值变为0。这样做的目的是:之后进行旋转和平移等图像增强时,不会让标签旋转而引入噪声(原黑色部分为道路)。三、训练策略训练方面我们主要采用主要从数据增强和模型调优两个方面说明:1. 数据增强本次比赛中我们使用了多种数据增强方式,主要有以下几种:高斯模糊我们使用了模糊核大小为11的高斯模糊,以0.5的概率对图像进行模糊处理;Gamma变换我们观察发现,由于光照等因素的影响,不同遥感图像之间的对比度存在一定的差异,因此我们采用max(0.65, random(0,1)*2)的方式,以0.5为概率对图像进行gamma变换,结果发现此增强手段对模型性能提升很有帮助;色彩变换对图像的HSV通道进行一定程度的扰动;垂直、水平翻转,90度旋转为了适应遥感图像中道路目标具有旋转不变性,因此有必要进行一定的旋转和翻转变换;归一化处理最后,我们将通过增强的图像归一化到-1.6 - 1.6的范围之间,这样处理可使后面训练更加便捷。2. 模型训练此次比赛我们的训练策略主要分为两个阶段,分别时粗训练和最优模型微调两部分,详细方式如下:粗训练训练集:前文第二部分数据预处理所得到的1789张训练图片验证集:前文第二部分数据预处理所得到的386张训练图片训练设备:华为云,v100Batch_size: 16训练epoch:80初始学习率和更迭策略:1e-3,每5epoch衰减为原来的0.9倍优化器:AdamLoss:0.5dice loss + 0.5bce loss训练结果选择:根据训练结果大致选择epoch 60左右的结果,根据规律在验证集和训练集loss相同的附近的局部最优点为最佳结果。最优模型微调训练集:前文第二部分数据预处理所得到训练集+验证集图片,一共1789+386=2175张验证集:前文第二部分数据预处理所得到的386张验证集训练设备:本地,2080tiBatch_size: 4训练epoch:10初始学习率和更迭策略:1e-5,每5epoch衰减为原来的0.9倍优化器:AdamLoss:0.5dice loss + 0.5bce loss训练结果选择:根据规律在验证集和训练集loss相同的附近的局部最优点为最佳结果。四、测试增强本次比赛中,为了提高模型推理的效果,我们还进行了测试增强策略,主要包括以下三个部分,具体如下:滑动步长选择由于推理文件中图片也需要进行裁剪,此处我们选择使用896步长来进行图片的裁剪。使用原图的8种不同变换进行推理此处将原图与其旋转90°的图进行翻转,镜像等操作得到一共8种图片,使用同一模型进行预测,得到8组结果;结果的阈值选择对于前文得到的8组结果,我们首先对图片进行sigmoid归一化;然后对于滑动中重叠的图片部分取每个像素点的最大值作为该点的值;最后使用阈值1进行二值化处理。本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=8fe51502-0373-4acf-ab89-e9efd53c0b76本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
方案介绍赛题介绍这是一个道路分割的任务,基于高分辨可见光遥感卫星影像,提取复杂场景的道路与街道网络信息,将影像的逐个像素进行前、背景分割,检测出道路所在区域,下图是数据集局部区域的展示。训练集包含两张大尺寸的可见光遥感图像及对应的标签图。测试集不可见,包含6张4048x6144的图像。数据端因为所给训练集是大尺寸的图像,我们选择重叠滑窗的切割方式,将原图切成小图。窗口大小是1024x1024,步长为896。滑窗时过滤掉全黑的无效图像。然后将数据按8:2的比例随机划分为训练集和验证集。我们使用在线数据增强的策略,包括翻转、旋转和尺度缩放。网络结构低分辨的特征包含丰富的语义信息,但由于下采样操作,导致它丢失了部分位置信息。而高分辨率的特征相反,它的语义信息相对较少,但位置信息保留较多,定位相对准确,有利于检测小目标。由于道路大多都是长且窄的形状,就要求模型必须定位准确,也就是说道路的检测依赖于高分辨率的特征。现有的大多数网络都是由高分辨率特征下采样到低分辨率特征,再从低分辨率特征中恢复高分辨率特征,但是丢失的位置信息不能完全恢复。而HRNet在整个阶段都保持高分辨率的特征,有利于道路的检测。此外,HRNet的不同分支产生不同分辨率的特征,这些特征之间交互获取信息,最后得到包含多尺度信息的高分辨率特征。因此选择HRNet作为我们backbone。此外,我们认为道路分割不依赖于非常高级的语义信息,因此就不需要非常深的网络,而且在训练数据量有限的情况下,大网络有庞大的参数量,会有过拟合的风险。因此我们选择的是HRNet系列中的小模型:HRNet18。分割头选择OCR注意力模块,利用目标上下文增强特征表示。整个网络结构小,训练速度和推理速度都较快。在实验中,发现HRNet18在速度和精度上都优于hrnet32、hrnet48和deeplabv3+(resnest50)损失函数直接使用交叉熵损失会存在以下的问题。首先每幅图像中道路区域占比少,导致前、背景样本极不平衡。此外,如果逐像素点计算损失然后累加的话,这些简单的背景样本占比大,可能会淹没loss,并且这些简单背景样本对于网络增益较少。因此我们在交叉熵损失的基础上改进。包含三点:增加困难样本的权重,降低简单样本的权重,增加直接优化IOU的损失项。我们将第k个像素点的交叉熵损失记为CEk,首先,我们认为位于边缘附近的样本点属于困难样本,所选中的边缘区域如下图的白色区域所示,因此我们增加这些区域样本损失的权重。这里E就代表所选中的边缘区域,w是权值。此外,针对大量的简单背景样本,我们采用OHEM的策略,损失值小于阈值的样本点不参与反向传播。最终的损失函数就是改进后的交叉熵损失+lovasz_loss训练策略推理与后处理原始的预测结果有明显的漏检,中间区域没有检测出道路。我们观察了预测为道路的概率热图,越亮表示预测为道路的概率越大,越暗表示预测为道路的概率越小。因此越亮或者越暗表示网络对该区域的预测结果置信度高。我们发现对于漏检的区域,概率热图不亮不暗,也就是说网络对该区域的预测结果不自信,并且预测为道路的概率小于0.5,导致了漏检。因此我们采用了一个简单有效的方法,降低预测为前景类概率的阈值,降低漏检率。并且由于网络对背景区域预测结果的置信度非常高,因此在一定范围内降低阈值,在减少漏检的同时,并不会带来明显的过检。实验结果总结代码:https://github.com/reacher-l/2020-ai-road-segmentation本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=b7e8a547-7629-46c1-abb2-91347a46969b本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
一、问题分析类型:语义分割识别物体:卫星遥感影像,道路识别二、解决方案1、模型:Hrnetv2-482、策略1)数据裁切:滑动窗口(512*512),overlab=1282)数据增强:随机翻转、旋转、缩放等3)loss:二分类交叉熵4)优化函数:随机梯度下降5)后处理:TTA(水平和垂直翻转)三、成果数据裁切后,大约有8000张图片,2-8分成训练集和验证集初赛得分0.8360本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=ebf691a6-f0b2-4a74-acdd-6fa05864b682本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
大家好,我们是“第一次做分割”团队,很高兴在论坛和大家交流“华为云杯”2020人工智能创新应用大赛的比赛心得。本次比赛的任务是对遥感图像进行道路的语义分割,下面是我们将从数据分析,方案设计,实验结果三个方面阐述我们的解决方案。0、数据分析本次比赛提供了2张高分辨率影像作为训练集(40391×33106、34612×29810),6张遥感切片作为测试集(4048x6144)。通过对训练数据进行分析,可以发现数据集存在以下三个特点:1. 类别不平衡;2. 标签存在噪声;3. 训练数据量有限。针对上述问题,我们进行我们的方案设计,整体方案设计分为:数据预处理,特征提取,后处理和模型融合四部分。1、数据预处理数据切割:切割大小为1024的patch进行训练,步长为992。预处理:策略一:(无清洗+CutMix+数据增强)使用原始切割图片,结合CutMix,多尺度训练,随机翻转,随机裁剪数据增强策略二:(数据清洗+数据增强)将原始切割图片中无效区域占比超过75%的图片删除,结合多尺度训练,随机翻转,随机裁剪数据增强2、特征提取模型选择:我们选择了DeeplabV3+和OCRNet作为特征提取的模型。DeeplabV3+利用ASPP提取多尺度特征,并且采用U-like的逐步上采样方式预测结果,使得分割结果更精细;OCRNet利用上下文信息强化同一类别之间像素的贡献,且采用HRNet提取分辨率更大的特征图进行分割。训练细节:DeeplabV3+: Cityscapes预训练模型初始化,训练30k/40k,学习率0.005(head部分0.05),warm up 2000 iters,,CE weight设为[2.0, 1.0]。OCRNet: Cityscapes预训练模型初始化,训练20k,学习率0.005(head部分0.05),warm up 500 iters,CE weight设为[2.0, 1.0]。3、后处理采用膨胀预测替代普通预测,缓解拼接效应,并提升切片边缘预测质量。采用偏差预测预测替代平衡阈值预测:平衡阈值预测:像素值类别=argmax{logit0, logit1}偏差阈值预测:像素值类别=argmax{logit0, logit1-bias}4、模型融合使用3个DeeplabV3+模型与一个OCRNet模型进行融合,不使用TTA。5、实验结果迭代实验消融实验本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=03b70583-e94c-417d-ae71-4ec2be1e7976本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
我们是怎央打团队,以下是对本次大赛的一些心得的分享。我们从数据切分方式、网络选择、训练的Tricks、后处理等方面来介绍我们所使用的方法。一、数据切分方式我们本次参赛的训练过程包含两个阶段(后面会详细介绍),每个阶段使用了不同的数据划分方式。训练阶段一将图像划分为大小为1024x1024、重叠率为1/8的图像块(与baseline中的cut_data.py一致)。训练阶段二将图像划分为大小1024x1024且无重叠的图像块。切分结束后,对两个数据集都进行了数据清洗,去掉image图像为全黑(无图像信息)以及label图像为全白(无道路)的图像对。然后将切割代码会产生的个别label错误的图像对手动删除, 这样的问题在切分后的数据集中一般会出现小于十组图像对。二、网络选择本次参赛使用的网络是LinkNet34, 将LinkNet网络自身的backbone由ResNet18替换为ResNet34,使用的Loss是BCE+DICE一比一的直接加和。经过比赛期间的测试我们发现不同的网络对于结果的影响不会到很明显的程度,因此在网络结构本身的选择上其实在比赛早期可以不用花太多功夫。提分重点还是在数据增强、后处理和训练技巧上。三、训练的Tricks数据增强使用了①亮度对比度随机变换(albumentations默认的参数设置);②随机尺度的高斯模糊(尺度3-7随机);③HSV抖动;④物理增强(平移、尺度缩放、旋转±15°、随机水平垂直翻转、随机旋转90°)。数据增强之后将输入网络的图像像素值归一化到±1.6(借鉴自D-LinkNet)。采取了两步训练的方式,第一阶段和第二阶段的训练数据不同,数据准备如第一部分内容中所述。第一阶段使用imagenet预训练的权重做初始化,第二阶段使用第一阶段的训练结果作为初始化。优化器使用Adam,在训练阶段1初始化学习率为2e-4,衰减周期为5个epoch,衰减系数为0.9;在训练阶段2初始化学习率为1e-5,衰减周期为1个epoch,衰减系数为0.9。四、后处理在模型预测阶段使用了8张预测结果来整合最终结果(原图、水平翻转、垂直翻转、水平+垂直翻转,以及上述4张图分别逆时针旋转90°得到的图)。同时采用了膨胀预测的方法。谢谢大家!本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=2b06e091-140e-4e2e-b39a-8ad9bfa80f16本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
-
一、问题分析类型:语义分割识别物体:卫星遥感影像,道路识别二、解决方案1、模型:Hrnetv2-482、策略1)数据裁切:滑动窗口(512*512),overlab=1282)数据增强:随机翻转、旋转、缩放等3)loss:二分类交叉熵4)优化函数:随机梯度下降5)后处理:TTA(水平和垂直翻转)三、成果数据裁切后,大约有8000张图片,2-8分成训练集和验证集初赛得分0.8360本文首发 AI Gallery: https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=ebf691a6-f0b2-4a74-acdd-6fa05864b682本赛事赛题:https://competition.huaweicloud.com/information/1000041322/circumstance决赛获奖选手分享集锦:https://competition.huaweicloud.com/information/1000041322/share
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签