【深度学习】实验5答案:滴滴出行-交通场景目标检测

news2025/1/20 2:02:51

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包中预测标注结果,下面是随机选取了几张标注图片:

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

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

请添加图片描述

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

请添加图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录刷题| 01背包理论基础 LeetCode 416. 分割等和子集

目录 01背包理论基础 二维dp数组 1、确定dp数组以及下标的含义 2、确定递推公式 3、dp数组如何初始化 4、确定遍历顺序 5、打印dp数组 最终代码 一维dp数组 1、确定dp数组的定义 2、确定递推公式 3、初始化dp数组 4、遍历顺序 5、打印dp数组 最终代码 416. 分割…

一次搞懂SpringBoot核心原理:自动配置、事件驱动、Condition

前言 SpringBoot是Spring的包装,通过自动配置使得SpringBoot可以做到开箱即用,上手成本非常低,但是学习其实现原理的成本大大增加,需要先了解熟悉Spring原理。如果还不清楚Spring原理的,可以先查看博主之前的文章&…

Vue实现简易购物车功能

用Vue写一个列表案例,页面布局什么的dom,不需要自己事先全部排好,而是通过li遍历,把数据遍历出来;先定义好div标签,li根据数组的长度datalist进行遍历,图片的链接要用“:”&#xff…

算法设计与分析 SCAU8597 石子划分问题

8597 石子划分问题 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC;JAVA Description 给定n个石子,其重量分别为a1,a2,a3,…,an。 要求将其划分为m份,每一份的划分费用定义为这份石子中最大重量与最小重量差…

nRF52832闪存FDS使用(SDK17.1.0)

陈拓 2022/10/29-2022/11/22 1. 简介 对于Nordic芯片内部FLASH存储管理有两种方式,FS (Flash Storage)和FDS (Flash Data Storage) 。FS是FDS的底层实现,FDS是对FS的封装,使用更容易。 Flash Data Storage(FDS)模块是…

容器与容器编排系统

Docker公司发明的「容器镜像」技术,创造性地解决了应用打包的难题。改变了一大批诸如容器编排、服务网格和云原生等技术,深刻影响了云计算领域的技术方向。 一、Docker 容器技术 概括起来,Docker 容器技术有3个核心概念容器、镜像和镜像仓库…

当3A射击游戏遇上Play to Earn,暴躁兔带你了解MetalCore

MetalCore是一款具有机甲风格的战斗射击类的Play to Earn & Free to Play游戏,暴躁兔对这款游戏之前也有做过分析,MetalCore在近期启动了alpha开放世界测试,之前有NFT的玩家获得key code之后可以在PC端下载后进行体验。alpha阶段在10月20…

如何使IOT2050成为PN设备

Profinet Driver(PNDriver)从V2.3开始支持IO设备(IOD)功能,支持通用网络接口和Linux操作系统,最小支持2ms的通讯周期。本文介绍如何编译PNDriver并运行在IOT2050上。 1. 编译PNDriver 因为PNDriver只支持32位模式,因…

TiDB ——TiKV

TiDB ——TiKV TiKV持久化 TiKV架构和作用TiKV数据持久化和读取TiKV如何提供MVCC和分布式事务支持TiKV基于Raft算法的分布式一致性TiKV的coprocessor TiKV架构和作用 数据持久化分布式一致性MVCC分步式事务Coprocessor RocksDB 单机持久化引擎,单机key-value的…

L2十档行情API接口的开发原理是什么?

L2十档行情API接口的开发原理不知道大家有没有了解过,其实在现实的股市量化交易中,就有不少的投资者也在思考这个问题,并且也有的部分交易者会选择自己开发来使用,不仅支持A股所有的股票数据,也能对期货、外汇、黄金等…

个人项目-部署手册

前言 一、RDS和ECS购买与配置 https://www.aliyun.com/?spm5176.12818093.top-nav.dlogo.3be916d0u0Ncp9 购买RDS(MYSQL)和ECS(规格族:突发性能实例 t6 )的时候尽量选择一个大区》如:华东(杭州)配置不需要太高(够自己使用就行了…

干货分享 | B站SLO由失败转成功,B站SRE做对了什么?

最近几年,Google SRE在国内非常流行。 Google SRE方法论中提出了SLO是SRE实践的核心,SLO为服务可靠性设定了一个目标级别,它是量化线上质量的关键因素,它是用来回答一个服务到底“什么时候叫做挂了”的根本依据,也是可…

Python网络爬虫入门篇

1. 预备知识 学习者需要预先掌握Python的数字类型、字符串类型、分支、循环、函数、列表类型、字典类型、文件和第三方库使用等概念和编程方法。 2. Python爬虫基本流程 a. 发送请求 使用http库向目标站点发起请求,即发送一个Request,Request包含&am…

xxl-job 执行成功,但是报“任务结果丢失,标记失败“错误

问题1:使用xxl定时更新数据,发现执行结果是失败的 打开日志查看,发现没报错,结果是200 打开备注,上面写着"结果丢失". 再仔细对比下,发现外面日志列表中的执行时间是00:20:18;而日志记录中的最后时间是00:39:32;也就是说线程还没执行完,就先报结果错误了. 对比日志时…

[附源码]Python计算机毕业设计宠物寄养管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Jmeter压力测试教程(上)

JMeter压力测试一、 简介1.1优点1.2缺点二、安装2.1下载2.2解决中文乱码问题2.5配置环境变量2.4启动入门案例三、线程组相关3.1 创建多个线程组3.2 并发和顺序执行3.3 两个特殊的线程组(setUp/tearDown)线程细节设置默认http请求新增接口信息头管理器四、…

SAP ADM100-1.2之系统登录过程(ABAP)

1、SAP登录过程 为了在前端最终用户和SAP系统实例之间创建连接,sapgui.exe程序需要启动参数。参数字符串是由saplogon .exe程序使用为登录选择的SAP GUI的信息创建。 SAP登录信息有以下两个来源:SAP Logon的配置文件,以及对所选系统的消息服务器的直接请求(下图中的步骤1和…

使用Go+Lua解决Redis秒杀中库存与超卖问题

1、简介 Go语言连接go-redis进行数据库的连接,如果你对这部分尚不了解,建议你先学习这部分知识。另外,本秒杀主要解决两个问题,第一个就是超卖问题,另一个就是库存问题。没有设计专门的页面来模拟并发,我们…

布谷蓝途:易知微「可视大脑助力智慧教育」主题分享精彩实录

如今,大数据技术在教育领域的应用与普及正驶入“快车道”,但仍然存在资源管理分散、数据各自为阵、运营模式传统等痛点,如何借助新技术、新机遇并充分发挥大数据在教育教学中的支撑作用成为重中之重。 布谷蓝途作为国内前沿的大数据方案与服…

网分测试线缆怎么选?

如何在众多选择中寻找到最佳的测试电缆?以下内容由普科科技PRBTEK整理,以下内容将阐述电缆与电缆组件的机械及电气性能,以及如何选择您理想的测试电缆。 2004年5月,美国时代微波系统公司的测试工程师对50欧姆测试电缆的要求作出以下概述&…