目标检测类比赛

Kesci大赛项目:2020年全国水下机器人(湛江)大赛 - 水下目标检测算法赛(小白第一次参加图像检测类比赛)


)

比赛介绍

在真实海底图片数据中检测出不同海产品(海参、海胆、扇贝、海星)的位置,主办方提供训练集和测试集。初赛训练集:提供5543幅训练图像(含人工标注真值数据),本届比赛需检测的目标类别包括海参“holothurian”,海胆“echinus”,扇贝“scallop”和海星“starfish”四类。训练数据真值中可能存在水草“waterweeds”这一类别,请忽略这一类。比赛不限制参赛队伍使用其他来源的数据进行预训练/训练。初赛测试集:A榜测试集:800幅测试图像,B榜测试集:1200幅测试图像(与A榜不重复)。
在这里插入图片描述
在这里插入图片描述

数据预处理

采用了去年比赛冠军分享的方法,代码链接:https://github.com/wangyanckxx/Single-Underwater-Image-Enhancement-and-Color-Restoration,把链接里面的方法大概都看了看,最终选择了RGHS这种方法,这种处理方法耗时较长,处理一张3840x2160的图像需要耗时30s,处理后的视觉效果确实不错,但是在比赛A榜上一提交,A榜掉分了!!!但是这个代码处理能力确实很强,可以学习下。原图和处理后效果如下图所示:
原图
预处理之后的图像

模型设计及参数调试

最开始首先采用了SSD算法,A榜上提交后只有线上测评只有0.16左右,低的可怜~,之后看到了郑烨(选手名:斩风) 开源的baseline,backbone是ResNeXt101-64x4d,框架是MMdetection,cascade RCNN+FPN,运行提交后,A榜上提交的MAP达到了0.489,3.19日的时候,第一次排名到第七名,激动的不行! 特别感谢这位大佬的开源但是之后的排名一直在往下掉,在后续的模型改进部分,把FPN更换成了NAS-FPN,加入可形变卷积等,但是都掉分了!!!总体来说,感觉MMdetection很强大,很多都集成好了,可以参考链接,https://www.tuicool.com/articles/JZRriaV。在模型集成方面,其他师兄尝试了下wbf(Weighted-Boxes-Fusion)也掉分了,所以我就没继续往下尝试了,wbf可以参考链接(https://github.com/ZFTurbo/Weighted-Boxes-Fusion)。在参数调试中,学习率,anchor_scale,anchor_ratio,backbone选择,迭代次数等等都尝试过,反正最后结果都一样,永远都是掉分!!!

后期处理

在数据预处理及模型改进方面不断掉分后,已经到了比赛末期,因为其实最终大家的成绩相差不多(A榜上第一名的成绩与我的成绩相差小于0.02),开始逐渐开始寻找比赛中一些本质的问题,将label中的box在train的图片上框出来进行观察,发现官方提供的数据集有漏标的情况,有些object根本没有标注,但是却十分明显,所以我把训练好的模型在官方提供的train上进行测试,即把原来的训练集当做测试集来用,会检测出来很多框,然后我把检测出来置信度大于0.6的框提取出来,认为这些框是检测到了物体的,并将这些框与官方提供的lable进行比较,若有些置信度大于0.6的框与原来官方给的框的IOU小于0.5,则认为这是官方漏标的框,并将这些框补充到train的lable中,这样相当于对训练集的lable进行了一定的扩充操作,解决了部分漏标的问题,官方给出的框与补充之后的框如下图所示,可以看出得到了明显的改善:
官方给出的label
扩充框后的效果
用新的lablel重新训练完后提交,又掉分了~,于是又开始分析图像,后来我发现其实这个比赛本质上的难点痛点在于:(1)训练集官方标注不全(2)测试集官方标注的很全(3)图像太过于模糊,水草奇形怪状,很容易被误检测误识别,造成了很多的FP。在我扩充框后重新训练图像之所以掉分,是因为产生了更多的FP,而且FP基本上都是因为水草造成的,所以开始着手考虑如何减少FP,最后采用了一个比较笨的办法,人工分类出少量的水草,并提取出官方给出的少量水草的label,最后把这些合在一起,当做负样本,由于检测出来的大部分框还是属于正样本的,提取出一些海参,海胆,海星,贝壳的正样本,在最后做一个简单的CNN分类器,试图让这个分类器学会区分水草,并在最终提交的.csv文件上进行剔除。训练完分类器后,把由MMdetection检测出来的结果用分类器进行分类,在A榜上进行提交,线上评分终于得到了提高。。。。。这点很容易理解,减少了FP,precision肯定户会提高,这个不言而喻。但是最终在B榜上提交的时候,又掉分了!!!我想了一下存在的问题,可能是MMdetection在B榜上检测出来的一些物体分类器以前没有见到过(虽然都是那四类水下生物,但是他们的样子不太一样),所以导致分类器最终把一些TP当成了FP,然后给剔除了。
此次比赛,最终A榜排名48名,B榜排名74名。第一次打目标检测类比赛,耗时40天,第一次比赛算是很认真的做完了,一直坚持到4.11日上午9点~,虽然结果不太好,还是收获了一些,本次比赛由于疫情在家,所以使用的设备为colab pro,colab总体来说,比国内的各大云好很多,虽然colab pro也有很多不足之处,但是相比于xx云来说,价格是真的良心,期间也遇到了很多坑,但是现在用起来也算是比较得心应手了(毕竟配置了那么多次!!!都是一个坑一个坑踩过来的)。之前一直懒得写博客,都是在本地写写日志,这次打完比赛终于开始写了第一篇博客,希望同各位大佬多交流学习,今后有机会想一起打比赛的也可以加我,只要有时间有精力想认真做比赛的都可以来交流学习,为以后打比赛寻找队友,想浑水摸鱼的就不用加了,我也是小白,带不了。。。。我的qq([email protected])(neu的研一小白)

发布了1 篇原创文章 · 获赞 0 · 访问量 29

猜你喜欢

转载自blog.csdn.net/qq_40340159/article/details/105515256