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

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

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

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

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

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

  1. 【深度学习】实验5布置:滴滴出行-交通场景目标检测

    DL_class 学堂在线<深度学习>实验课代码+报告(其中实验1和实验6有配套PPT),授课老师为胡晓林老师.课程链接:https://www.xuetangx.com/training ...

  2. 深度学习(十四)——Softmax详解, 目标检测, RCNN

    https://antkillerfarm.github.io/ Softmax详解 首先给出Softmax function的定义: yc=ζ(z)c=ezc∑Cd=1ezd for c=1,-,C ...

  3. 吴恩达 深度学习系列--卷积神经网络(Convolutional Neural Networks)-03(目标检测)

    目标检测 3.1 目标定位(Object localization) 3.1.1概念 3.1.2 监督学习任务定义目标标签y 3.2 特征点检测(Landmark detection) 3.3 基于滑 ...

  4. 【深度学习】卷积神经网络应用之双阶段目标检测|R-CNN、SPP-Net、Fast-RCNN、Faster-RCNN

    文章目录 基本概念 一.R-CNN 1. 网络结构 2. 训练流程 3. 测试阶段 4. RNN存在的问题 二.SPP-Net 1. 网络结构 2. 基础知识 共享卷积计算 金字塔池化 Spatial ...

  5. 深度学习实战教程(1)--手机跑目标检测(YOLO,从DarkNet到Caffe再到NCNN完整打通)

    https://github.com/lwplw 这篇打算就直入主题了,YOLO是什么.DarkNet是什么.Caffe是什么.NCNN又是什么-等等这一系列的基础科普这里就完全不说了,牵扯实在太多, ...

  6. 【深度学习】ROI Pooling 和 ROI Align 计算机视觉 目标检测

    文章目录 ROI Pooling和ROI Align: 一篇好的文章 ROI Pooling 如何计算? AdaptiveMaxPool2d 在做啥 Fast RCNN或者Faster RCNN中都使 ...

  7. nvidia docker容器不支持中文的解决办法_用docker搭建深度学习实验环境

    tensorflow和pytorch官方都维护了不同版本的docker镜像.借助docker我们可以方便的搭建起深度学习实验环境. 但是想要在同一个容器内同时拥有tensorflow.pytorch. ...

  8. pycharm remote 远程项目 同步 本地_利器:PyCharm本地连接服务器搭建深度学习实验环境的三重境界...

    作为实验室社畜,常需要在本地使用Pycharm写代码,然后将代码同步到服务器上,使用远程登录服务器并运行代码做实验. 这其中有很多事情如果没有好的工具,做起来会非常麻烦. 比如如何快速同步本地与服务器 ...

  9. 深度学习实验1:pytorch实践与前馈神经网络

    深度学习实验1:pytorch实践与前馈神经网络 1.pytorch基本操作 1.使用

最新文章

  1. kafka streams_如何使用Kafka Streams实施更改数据捕获
  2. EXECL使用技巧(转)
  3. Java IO流之对象流
  4. eclipse搭建多module项目的坑
  5. selenium+chromeheadless爬取网站
  6. RabbitMQ, ZeroMQ, Kafka 是一个层级的东西吗, 相互之间有哪些优缺点
  7. jQuery事件绑定函数:on()与bind()的差别
  8. 翻译:理解TCP/IP网络栈编写网络应用(上)
  9. [Diary]花草本没有错
  10. Java之String,StringBuffer,StringBuilder比较
  11. Greg and Array CodeForces 296C 差分数组
  12. PR2021安装包下载
  13. 范德蒙行列式计算以应用
  14. ASCII码值是怎么计算的,怎么计算arccos的值
  15. Win10系统怎么还原?Win10如何回到以前的系统
  16. 《南怀瑾讲述99个人生道理》——刘清海编著
  17. 域名解析地址如何查看?为什么要做域名解析?
  18. 随机生成英文字母 php,PHP生成随机英文用户名
  19. WebGoat(一)——HTTPSplitting(Http拆分攻击)
  20. 标记用来标识一个html文件中的表格,《网页设计与制作》期末考试试题.doc

热门文章

  1. 参考平面及其高度_海图基准面、深度基准、标高等常用参考标准
  2. 浅析为什么没有朝代在武汉建都?
  3. 计算机考研英语是英语一还是英语二,考研英语一是不是很难
  4. Web前端低代码介绍的ppt大纲
  5. 2020 年互联网大厂薪资出炉!你酸了吗
  6. pygame实现找方块(色彩敏感度测试)游戏
  7. 每日一思(2022.5.19)——前无古人后无来者
  8. HTML,CSS,font-family:中文字体的英文名称 (比如:宋体 微软雅黑)的列表
  9. 保护眼睛的颜色和各种背景颜色设置方法
  10. 【J2EE】模仿天猫商城(后台篇)