【深度学习】实验5答案:滴滴出行-交通场景目标检测
创始人
2024-04-11 18:07:59
0

DL_class

学堂在线《深度学习》实验课代码+报告(其中实验1和实验6有配套PPT),授课老师为胡晓林老师。课程链接:https://www.xuetangx.com/training/DP080910033751/619488?channel=i.area.manual_search。

持续更新中。
所有代码为作者所写,并非最后的“标准答案”,只有实验6被扣了1分,其余皆是满分。仓库链接:https://github.com/W-caner/DL_classs。 此外,欢迎关注我的CSDN:https://blog.csdn.net/Can__er?type=blog。
部分数据集由于过大无法上传,我会在博客中给出下载链接。如果对代码有疑问,有更好的思路等,也非常欢迎在评论区与我交流~

实验5:滴滴出行-交通场景目标检测

跑通程序

在飞桨平台配置环境,包括pytorch,torchvision,audio和mmcv。然后通过git下载安装mmdetection,放入自定义的config文件和数据集。修改类比参数(包括2处分类标签和1处分类数量),进行训练。该代码框架结构如下图所示:在这里插入图片描述
使用深度学习技术来完成城市交通场景下的目标检测任务,首先采用示例程序(faster_rnn)进行训练,训练了12个周期后,训练集达到的效果如下,准确率约为0.93,MAP为0.286。在训练的过程中,可以非常明显的看到前几个周期能够迅速收敛,且基本到了第五个周期后,开始不断波动。
在这里插入图片描述

可以看出,效果并不是很好,下面进行一些针对性改进。

效果提升

模型选取

分别尝试了几个网络结构(原始参数),进行5个周期的训练,需要修改的训练代码(命令)如下:

# faster_rcnn
_base_ = [# 模型'../_base_/models/faster_rcnn_r50_fpn.py',# 数据集'../_base_/datasets/didi_detection.py',# 优化器'../_base_/schedules/schedule_1x.py', # 训练方式'../_base_/default_runtime.py'
]# yolo
!python tools/train.py configs/yolo/yolov3_d53_mstrain-608_273e_coco.py --work-dir work_dirs/yolo# cascade_rcnn
_base_ = ['../_base_/models/cascade_rcnn_r50_fpn.py','../_base_/datasets/didi_detection.py','../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
]# fcos
!python tools/train.py configs/fcos/fcos_r50_caffe_fpn_gn-head_1x_coco.py --work-dir work_dirs/fcos

尝试几种常用的目标识别深度学习模型,下面为几种网络第五周期在验证集上的表现:

  • Yolo:收敛非常缓慢,效果很差(五个周期后0.72)。大概可以确定,backbone使用ResNet是比Darknet有着更好效果的,所以重新替换yolo中的backbone,重新进行训练。可以发现,表现仍然不如two-stages的网络。
    在这里插入图片描述
  • Cascade R-CNN:和Faster-CNN收敛速度差不多,但是训练速度比较慢。最终也是选择了这个模型。
    在这里插入图片描述
  • Fcos:表现一般,可能对于空间的提取能力较强,而对于平面的识别较弱,不再考虑。
    在这里插入图片描述

网络结构和超参数

对于backbone确定使用ResNet,尝试使用更深层的网络Res100进行提取。同时,针对本数据集的12种分类,构造新的合适anchor,这里针对行人(较长较瘦)和货车(较短较宽)定义了新的两种长宽比,即 ratios=[0.2, 0.5, 1.0, 3.0]。简单训练了3个周期,发现效果有所提升。

在这里插入图片描述
同时,调整学习率和优化器,更换为adam优化器进行优化。调整学习率发现当使用warm_up时,快速的(500) warm_up 在前三个批次最好效果能达到 loss=0.6左右,而较小的学习率(1e-5)比较大的学习率(大于5e-5)收敛更快,震荡频率更小,说明原始的学习率已经能够找到正确方向而不震荡,最终配置如下。

optimizer = dict(type='Adam', lr=0.0001, weight_decay=0.0001)
optimizer_config = dict(grad_clip=None)# learning policy
lr_config = dict(policy='step',warmup='linear',warmup_iters=200,warmup_ratio=0.001,step=[5, 8, 11])
runner = dict(type='EpochBasedRunner', max_epochs=12)

最终效果

下图为map随着训练周期的变化,可以看到,在第6周期(学习率第一次衰减)处有着明显的提高。第9周期(学习率第2次衰减)也避免了震荡情况。
请添加图片描述

训练12个周期,在验证集上最好的表现如下图所示(第7周期),MAP达到了0.293。可以发现,该数据集上,对于小目标的检测始终较为欠缺,或许采用数据扩充,位置修正等方法会有更好的表现。
在这里插入图片描述

在测试集上进行推理并得到.json 格式的输出result文件,同时使用tools包中预测标注结果,下面是随机选取了几张标注图片:

晴天清晰图像的预测还是比较准确的,无论是来车,还是去的,分类和边框都比较准确:
请添加图片描述
请添加图片描述

有遮挡的情况不是很理想,对于识别框选位置难免出错:

请添加图片描述

阴天远距离,误识别楼房为货车,但是置信度还是比较低的:

请添加图片描述

远距离两侧,背景混乱时,存在和栅栏误识别的情况,同样也是置信度较低:
请添加图片描述

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...