文章目录[隐藏]
Abstract
存在问题
- 由于无人机会在不同的高度飞行,物体的尺度变化剧烈,这给网络的优化带来了负担。
- 高速和低空飞行对排列密集的物体带来了运动模糊,这对物体的区分带来了巨大挑战。
文章提出的解决方法
- 增加一个检测头来检测不同规模的对象
- 用Transformer Prediction Heads 来替代原先的检测头
- 用CBAM来寻找具有密集对象的场景中的注意区域
- 除了以上三点,还使用了一些常用的tricks。例如:数据增强,多尺度测试,多模型集成,额外的分类器。
结果
- VisDrone2021挑战赛取得了第五名(AP39.18%)与第一名(AP39.43)差距很小。
Introduction
- 无人机场景下的图像主要有以下三个问题
- 尺度变化大
- 物体密集,造成遮挡
- 由于无人机拍摄场景覆盖面积大,图像中包含多种多样的地理元素
- 网络组成
- Backbone与Neck部分与YOLOv5一致
- 在Head部分,额外添加了一个检测头用来检测图片中的Tiny物体,这样整个的TPH-YOLOV5的检测头部分总共有四部分,分别是Tiny,Small,Medium,Large
- 将原始的检测头用TPH替代
- 加入CBAM,用来寻找感兴趣的区域
- 训练策略
- 采用数据增强,提升了网络对图像中尺度变化大的问题
- 推理阶段,采用多尺度测试和多模型集成策略
- 针对网络定位能力强,分类能力弱的问题,引入了一个ResNet18来更好的提高网络分类能力。
TPH-YOLOv5
- Prediction head for tiny objects
作者通过分析VisDrone数据集,发现数据集中存在许多小物体,因此加入了一个用于检测Tiny物体的检测头 - Transformer encoder block
- 作者认为Transformer能够更好的捕获全局信息,因此替换掉了一些卷积层,得出transformer encoder blocks在处理密集物体场景中拥有更好的表现。
- 将transformer encoder blocks 放在backbone的尾部以及head部分的原因是为了特征图分辨率较低,能够有效降低昂贵的计算和内存成本
- Convolutional block attention module(CBAM)
用于网络在处理令人困惑的地理区域时,能够更改好的专注于有用的目标对象 - Ms-testing and model ensemble.
常规操作 - Self-trained classifier.
针对网络定位能力强,分类能力弱的问题,引入了一个ResNet18来更好的提高网络分类能力。
Experiments
- Pytorch版本:1.81.
- 显卡版本:RTX3090
- 训练阶段具体细节
- 使用yolo5x预训练好权重,然后在此基础上用TPH-YOLOv5训练
- 由于VisDrone数据集比较小,因此只训练65个eopch,前2个用来warm-up
- 使用 adam optimizer,初始余弦学习率为3e-4
- 最后一个epoch的学习率,衰减到初始学习的0.12
- 由于图像分辨率比较大,因此使用的batch-size为2
版权声明:本文为CSDN博主「是王同学呀」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wxd1233/article/details/120171037
暂无评论