作者:Deeksha Arya等

编译:CV君

报道:我爱计算机视觉公众号(id:aicvml)

向大家推荐一篇论文『Global Road Damage Detection: State-of-the-art Solutions』,它总结了在 IEEE International Conference on Big Data'2020 会议中举办的 “Global Road Damage Detection Challenge (GRDDC) ,全球道路损坏检测挑战赛”中前 12 名的解决方案。

其不仅给出了各参赛队的方案,而且这些代码也全部开源了,相信对于学术和工业界的朋友都会很有帮助。

本次挑战赛的任务是对几种道路损伤进行检测,不仅要分类出损伤类别,还要定位到损伤的位置,故该比赛实质是一个目标检测问题。

      01      

数据集

GRDDC'2020 数据集是从印度、日本和捷克收集的道路图像。包括三个部分:Train, Test1, Test2。训练集包括带有 PASCAL VOC 格式 XML 文件标注的道路图像。在给参赛者的数据Test1 和 Test2 中是没有标注。train则包含标注。

数据分布如下:

三个数据集和三个国家的图像分布统计

训练数据中每种损坏类型的实例数

      02      

评估方法 

GRDD 挑战赛的评估标准是F1-Score。

对于参赛者提交的预测结果,如果预测满足以下两个标准,则认为它是正确的。

  • predicted bounding box 与 ground truth bounding box 之间的重叠区域超过 50%,即 IoU > 0.5。

  • 预测的标签与实际的标签相匹配,如图像的标注文件中所指定的(ground truth)。

评估脚本比较两个输入文件以及计算所提交的 F1-Score。F1-Score 为精确率和召回率的调和平均数,精确度是真阳性与所有预测阳性的比率。召回率是真正的阳性结果与所有实际阳性结果的比率。

各参数的细节如下:

  • 真阳性(TP):ground truth 中存在一个损害实例,并且该实例的标签和边界框被正确预测,IoU>0.5。

  • 假阳性(FP):当模型预测了图像中某一特定位置的损害实例,但该实例并不存在于图像的 ground truth 中。也包括了预测标签与实际标签不匹配的情况。

  • 假阴性(FN):当一个损害实例出现在 ground truth 中,但模型无法预测正确的标签或该实例的边界框。

召回率:

精确度:

F1-Score:

F1指标对召回和精度的权重相等。因此,参赛者需要在两者都有中等水平的表现,而不是在其中一个方面表现突出,在另一个方面表现不佳。对 test1 和test2 分别计算 F1。最后,用两个分数的平均值对各队进行排名。

      03      

结果和排名

本次挑战赛共有来自世界各地的 121 支队伍报名参加,有13 支队伍根据提出的解决方案和提交的源代码所达到的平均 F1-score 入围,其中有12 支队伍进入了决赛。

排名前三的团队平均 F1-score 超过60%,并提出了使用集成学习和多种数据增强技术的高效方法。

冠军团队是:IMSC团队(Hedge等,来自美国南加州大学和约旦德国约旦大学),提出方法基于 ultralytics-YOLO (u-YOLO) [YOLOv5, 2020],并应用了测试时数据增强(TTA),提高了模型的鲁棒性。TTA 通过对每张测试图像进行多次变换(如水平翻转、提高图像分辨率)并生成新的图像来进行数据增广。

新的图像与现有图像一起被输入到训练好的 u-YOLO 模型中。因此,对应于每一个测试图像,使用增强的图像生成多个预测。在此过程中产生的重复或重叠的预测使用非极大抑制(NMS)算法进行过滤。整个方法被称为集成预测(Ensemble Prediction,EP)。

除了 EP,该团队还提出了另一种方法,称为集成模型(EM)。顾名思义,EM是将 u-YOLO 模型的不同变体进行集成。鉴于训练一个 u-YOLO 模型涉及到调整不同的超参数,使用这些参数的不同组合会产生不同的训练模型。作者选择这些模型的一个子集,以使它们的整体精度最大化。每幅图像都会在所有选定的模型上测试,然后对每个模型的预测结果进行平均,最后应用非极大抑制。这种集成技术通过降低预测方差实现了更好的准确性。

团队的最终方案是将这两种方法结合起来,Ensemble Model with Ensemble Prediction(EM+EP)。可以想象每幅图像的测试时间肯定是很长的,但好在这只是比赛。

当然作者也比较了三种方法(EM、EP和EM+EP)在速度和精度方面的表现。统计结果显示,虽然在(EM+EP)的情况下,准确率得到了提高,达到了最高的 F1-score(测试1为0.67)(大力出奇迹啊!),而如果用每幅图像的检测时间来衡量,该方法在检测速度方面是最差的。

获胜团队的最后得分及代码如下:

Test1-Score:0.6748

Test2-Score:0.6662

(这个结果是远超第二名的!)

作者已经公开了代码:

https://github.com/USC-InfoLab/rddc2020

第二名 

团队:SIS Lab

方案:以 YOLO-v4 为基础模型的集成模型,数据增广用到随机裁剪增强算法,每张训练图像输出三张图像。另外,其也探索用到过不同输入图像分辨率的 YOLO-v4检测。

Test1-Score:0.6275

Test2-Score:0.6358

代码:https://github.com/kevaldoshi17/IEEE-Big-Data-2020

第三名 

团队:DD-VISION
方案:以Cascade R-CNN为基础模型的模型集合。数据增广用到:道路分割、混合、CLAHE、 RGB shift。该团队也探索使用过的其他算法:Faster-RCNN, ResNeXt101, HR-Net, CBNet, ResNet-50。

Test1-Score:0.629

Test2-Score:0.6219

代码:https://pan.baidu.com/share/init?surl=VjLuNBVJGS34mMMpDkDRGQ password: xzc6

Cascade R-CNN曾在多个目标检测比赛中博得头筹,这次的表现略逊一筹。

第四名 

团队:titan_mu
方案:CSPDarknet53主干网上训练的YOLO模型。无数据增广。其还探索使用过 Hourglass104和 EfficientNet 主干网上训练的 CenterNet 和 EfficientDet 模型。

Test1-Score:0.5814

Test2-Score:0.5751

代码:https://github.com/titanmu/RoadCrackDetection

第五名 

团队:Dongjuns
方案:主方法是:YOLOv5x。对于数据增广:图像HSV、图像转换、图像比例、水平翻转、马赛克。

Test1-Score:0.5683

Test2-Score:0.5710

代码:https://github.com/dongjuns/RoadDamageDetector

第六名 

团队:SUTPC
方案:Ensemble(YOLO-v4 + Faster-RCNN)。

Test1-Score:0.5636

Test2-Score:0.5707

代码:https://github.com/ZhangXG001/RoadDamgeDetection

第七名 

团队:RICS
方案:EfficientDet 。

Test1-Score:0.565

Test2-Score:0.547

论文An Efficient and scalable deep learning approach for road damage detection

代码:https://github.com/mahdi65/

roadDamageDetection2020

第八名 

团队:AIRS-CSR
方案:主方法 YOLOv4,以及其它数据增广方法:通过调整亮度、对比度、色调、饱和度和噪声进行图像转换。随机缩放和 Mosaic 数据增强,条件GAN。

Test1-Score:0.554

Test2-Score:0.541

代码:https://github.com/ZhangXG001/RoadDamgeDetection

注:不知是否是原论文作者笔误,第八名与第六名的代码库是同一个

第九名 

团队:CS17
方案:Faster RCNN+ Resnet-18/Resnet-50。使用过数据增广但没有改善精度。

Test1-Score:0.5413

Test2-Score:0.5430

代码:https://github.com/TristHas/road

第十名 

团队:BDASL
方案:使用Resnet-50和Resnet-101主干网的多级 Faster R-CNN,以及以CSPNet 为主干网的 Yolov5。数据增广:对路面进行尺寸调整和语义分割(这样只检测路面部分)。

Test1-Score:0.5368

Test2-Score:0.5426

代码:https://github.com/vishwakarmarhl/rdd2020

第十一名 

团队:IDVL
方案:Detectron2 和 Faster R-CNN。数据增广使用了水平镜像和缩放。

Test1-Score:0.51

Test2-Score:0.514

代码https://github.com/iDataVisualizationLab/

roaddamagedetector

第十二名 

团队:E-LAB
方案:FR-CNN。

Test1-Score:0.4720

Test2-Score:0.4656

代码:https://github.com/MagischeMiesmuschel/E-LAB_IEEE_BDC_GRDD_2020_submission

前 12 支团队所取得的排名及得分情况

前 12 支队伍信息

      05      

结果讨论

  • YOLOv5、YOLOv4是比赛中常用的模型,u版YOLOv5很优秀;

  • 几乎所有团队都使用了数据增广,其可以显著改善精度,但也有用了没效果的时候;

  • 目标检测中的集成学习:

    多图像输入+多模型测试+结果送入NMS。

在【我爱计算机视觉】公众号后台回复“GRDD”,即可下载该论文报告和前三名的参赛代码。

备注:目标检测

目标检测交流群

2D、3D目标检测等最新资讯,若已为CV君其他账号好友请直接私信。

我爱计算机视觉

微信号:aicvml

QQ群:805388940

微博知乎:@我爱计算机视觉

投稿:amos@52cv.net

网站:www.52cv.net

在看,让更多人看到  

用实力给自己正名,YOLOv5:道路损伤检测我最强!GRDDC'2020大赛报告相关推荐

  1. YOLOv5:道路损伤检测

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 道路损伤检测任务是对几种道路损伤进行检测,不仅要分类出损伤类别,还要定位到损伤的位置,故实质是 ...

  2. 道路缺陷检测学习笔记

    目录 裂缝分割 检测裂缝 裂缝分割 道路裂缝分割检测,没有模型,有数据集: GitHub - arthurflor23/surface-crack-detection: An experiment w ...

  3. Yolov5实现道路裂缝检测

    Yolov5实现道路裂缝检测 GitHub参考代码链接 我修改后的代码百度网盘链接 密码:2mzl 数据集链接 密码:06dj 基于Pytorch的Yolov5道路裂缝检测程序运行说明.大家可以结合我 ...

  4. Python+Yolov5道路障碍物识别

    Python+Yolov5道路障碍物识别 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对<<Python+Yolov5道路障碍物识别> ...

  5. 开源软件 | 深度学习用于道路病害检测

    道路路面病害(裂隙.坑洞)等的检测并不是一项新技术,CV君的母校在近20年前就开发出了我国第一台道路路面智能检测车,这项技术在道路维护管养中可发挥重要作用. 如下图所示,车载相机或智能手机拍摄地面,对 ...

  6. 【模型训练】YOLOv7道路裂缝检测

    [YOLOv7&yolov5&yolov3]道路裂缝检测 1.模型训练 2.模型验证 3.模型和数据集下载网盘链接 1.本项目采用YOLOv7算法实现对道路.桥梁水泥地面裂缝的识别,在 ...

  7. yolov5+车道线检测

    目标检测与车道线检测在自动驾驶以及车辆定位中起着重要的辅助作用,是环境感知中不可缺少的一个部分.基于深度学习的车道线检测方法近年来也在不断的提升,比如论文:Ultra Fast Deep Lane D ...

  8. 手把手教你使用 YOLOV5 训练目标检测模型

    作者 | 肆十二 来源 | CSDN博客 这次要使用YOLOV5来训练一个口罩检测模型,比较契合当下的疫情,并且目标检测涉及到的知识点也比较多. 先来看看我们要实现的效果,我们将会通过数据来训练一个口 ...

  9. 用于道路目标检测的少镜头学习

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读论文是学术研究的精华和未来发展的明灯.小白决心每天为大家带 ...

最新文章

  1. script runat=server,%%区别
  2. Tkinter的Menubutton组件
  3. c语言0x00如何不截断_binary 和 varbinary 用法全解
  4. 统计学习方法第十四章作业:聚类—层次聚类聚合/分裂算法、K_means聚类算法 代码实现
  5. NIO 之 MappedByteBuffer
  6. 主机Window不能访问该虚拟机Linux Samba文件服务提供了一个文件夹
  7. 如何理解android的函数,通过Android源码理解回调函数
  8. 基于jQ+CSS3页面滚动内容元素动画特效
  9. C# Azure 存储-队列
  10. 网站子域名扫描程序,采用三种扫描方式(crt网站查询、站长网站查询、字典暴力破解)
  11. 直播源列表转换php,电视直播源列表制作、转换工具Telelist(可以DPL、M3U、TXT等互转)...
  12. VS解决方案目录和工程目录
  13. 谷歌“Adobe Flash Player已被屏蔽”的解决办法
  14. 郝斌c语言视频笔记,郝斌老师C语言专题笔记
  15. tts文字转语音_最佳文字转语音(TTS)软件程序和在线工具
  16. 拼多多店铺日销量100+怎么实现?直通车怎么开?
  17. Win10启动文件夹在哪里,Win10怎么添加开机启动项?
  18. 一个强大而简单的 Python Web框架:web.py
  19. linux+swap分区规则_linux关于swap分区的划分规则
  20. Win10安装Win7双系统过程

热门文章

  1. Code Blocks 10 05的安装及使用
  2. UML部署图和构件图
  3. 如何迁移outlook邮件到另一个硬盘_如何注册Yahoo邮箱?
  4. python opencv把32位的灰度图变成8位的灰度图_python简单换脸程序
  5. mpi如何选择合适的进程数量_洗涤工厂如何选择合适的洗衣龙
  6. 计算机网络原理期末复习提纲,《计算机网络原理》考试复习提纲.doc
  7. mysql 并发 压测工具_MySQL压测工具mysqlslap的介绍与使用
  8. java泛型特点_java泛型简单总结
  9. python function terminated un_绕过 RestrictedUnpickler
  10. 开发步骤_直播软件开发直播APP开发具体步骤