ScaledYOLOv4实践:手把手教物体检测——ScaleYOLOv4-large

简介: ScaledYOLOv4实践:手把手教物体检测——ScaleYOLOv4-large

目录


摘要


训练


制作数据集


下载代码和权重文件


增加Mish函数


准备训练


测试


摘要

YOLOv4-large是专为云端GPU而设计的一种架构,主要目的在于获得更好的目标检测精度。作者基于前述分析设计了一个全尺寸的YOLOv4-P5并扩展得到了YOLOv4-P6和YOLOv4-P7。其对应的网络结构示意图见下图。

tt.png

作者通过实验发现:YOLOv4-P6(宽度缩放因子1)可以达到30fps的实时处理性能;YOLOv4-P7(宽度缩放因子1.25)可以达到15fps的处理速度。


代码:https://github.com/WongKinYiu/PyTorch_YOLOv4

Paper:https://arxiv.org/abs/2011.08036

论文思路:


通过对目前最先进的物体检测器的分析,我们发现YOLOv4[1]的主干CSPDarknet53几乎匹配所有通过网络架构搜索技术得到的最优架构特征。


CSPDarknet53的深度、瓶颈比、龄期间宽度生长比分别为65、1和2。因此,我们开发了基于YOLOv4的模型缩放技术,提出了scale -YOLOv4。提出的缩放yolov4具有出色的性能,如下图所示:


tt.png

scale - yolov4的设计过程如下


首先对yolov4进行了重新设计,提出了YOLOv4-CSP,然后基于onYOLOv4-CSP开发了scale - yolov4。


在提出的scale - yolov4中,本文讨论了线性缩放模型的上界和下界,并分别分析了小模型和大模型缩放时需要注意的问题。因此,我们能够系统地开发YOLOv4-large和yolov4 -tiny模型。Scaled-YOLOv4能够在速度和精度之间实现最好的平衡,能够在15 fps、30 fps和60fps的影片以及嵌入式系统上进行实时对象检测。


我们总结了本文的工作:


1、设计了一种针对小模型的强大的模型缩放方法,系统地平衡了浅层CNN的计算代价和存储带宽;


2、设计一种简单有效的大型目标检测器缩放策略;


3、分析各模型缩放因子之间的关系,基于最优组划分进行模型缩放;


4、实验证实了FPN结构本质上是一种一次性结构;


5、利用上述方法开发yolov4 - tiny 和 yolo4v4 -large。


YOLOv4-large与其他模型对比试验

tt.png

训练

制作数据集

通过对ScaledYoloV4代码的分析,发现ScaledYoloV4的数据集合YoloV5的数据集是相同的。如果使用过YoloV5,就可以直接按照YoloV5的方法即可。


具体的代码可以参考我以前写的博文:


COCO转YoloV5数据集,适用于YoloV5、ScaledYoloV4


https://wanghao.blog.csdn.net/article/details/111472706

Win10 Labelme标注数据转为YOLOV5 训练的数据集

https://wanghao.blog.csdn.net/article/details/108865894

Win10环境下,将VOC数据集转为YOLOV5使用的数据集。

https://wanghao.blog.csdn.net/article/details/108782268

本例选用的Labelme标注的数据集。数据集地址:

https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/14003627

将制作好的数据集放在和ScaledYOLOv4-yolov4-large同级目录。

下载代码和权重文件

https://github.com/WongKinYiu/ScaledYOLOv4/tree/yolov4-large

https://github.com/WongKinYiu/ScaledYOLOv4/tree/yolov4-csp

https://github.com/WongKinYiu/ScaledYOLOv4/tree/yolov4-tiny

这个Scaled总共有三个模型,本文使用Yolov4-large,权重文件在Readme里面有链接,如果你是训练自己的数据集,就没有必要下载。

增加Mish函数

增加Mish函数有两种方法,如果需要使用预训练模型就只能用Readme中提供的方法,这个方法我在Win10环境中用的时候出现了问题,而且我使用自己的数据集,可以不使用预训练模型,所以我采用另一种方式,在程序中增加Mish函数。

打开models/common.py加入如下代码:

class Mish(torch.nn.Module):

   def __init__(self):

       super().__init__()

   def forward(self, x):

       x = x * (torch.tanh(torch.nn.functional.softplus(x)))

       return x

准备训练

在data文件夹下面增加voc.yaml,写入配置数据集的配置。

# train and val datasets (image directory or *.txt file with image paths)
train: ../VOC/images/train/  # 118k images
val: ../voc/images/val/  # 5k images
test: ../voc/images/test/  # 20k images for submission to https://competitions.codalab.org/competitions/20794
# number of classes
nc: 2
# class names
names: ['aircraft', 'oiltank']

然后打开train.py文件,在文件的上面加入


import os

os.environ['KMP_DUPLICATE_LIB_OK']='True'

记住一定要放在最上面。


然后修改参数


将weights设置为“”

parser.add_argument('--weights', type=str, default='', help='initial weights path')

将cfg设置为yolo4-p5的配置文件 parser.add_argument('--cfg', type=str, default='models/yolov4-p5.yaml', help='model.yaml path')

将数据集配置为我们刚才增加的voc.yaml parser.add_argument('--data', type=str, default='data/voc.yaml', help='data.yaml path')

4、根据电脑的情况调节batch-size

parser.add_argument('--batch-size', type=int, default=2, help='total batch size for all GPUs')

改完上面的参数就可以运行。


tt.png



目录
相关文章
|
8月前
|
编解码 缓存 并行计算
YOLOv5入门实践(4)——手把手教你训练自己的数据集
YOLOv5入门实践(4)——手把手教你训练自己的数据集
839 0
YOLOv5入门实践(4)——手把手教你训练自己的数据集
|
机器学习/深度学习 数据可视化 数据挖掘
初学者该如何选择最适合自己的图像分类模型
初学者该如何选择最适合自己的图像分类模型
初学者该如何选择最适合自己的图像分类模型
|
8月前
|
机器学习/深度学习 算法
经典机器学习系列(十四)PAC-Learning
经典机器学习系列(十四)PAC-Learning
129 0
|
编解码 人工智能 PyTorch
手把手教物体检测——EfficientDet
手把手教物体检测——EfficientDet
801 0
手把手教物体检测——EfficientDet
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch深度学习快速入门教程
pytorch深度学习快速入门教程
pytorch深度学习快速入门教程
|
传感器 定位技术
SLAM:VSLAM简介之详细攻略
SLAM:VSLAM简介之详细攻略
|
机器学习/深度学习 文字识别 Java
PAI-AutoLearning 图像分类使用教程
PAI AutoLearning(简称PAI AL)自动学习支持在线标注、自动模型训练、超参优化以及模型评估。在平台上只需准备少量标注数据,设置训练时长即可得到深度优化的模型。同时自动学习PAI AL平台与EAS模型在线服务打通,一键完成模型部署。下面通过一个番茄(tomato)和黄瓜(cucumber)的图片分类示例来演示整个流程的实现具体操作实现步骤。
6861 0
PAI-AutoLearning 图像分类使用教程
|
机器学习/深度学习 自然语言处理 TensorFlow
阿里云PAI-DSW入门学习:基于官方文档训练文本分类模型
EasyTransfer旨在帮助自然语言处理(NLP)场景的迁移学习开发者方便快捷地构建迁移学习模型。本文以文本分类为例,介绍如何在dsw中训练出文本分类模型
746 0
阿里云PAI-DSW入门学习:基于官方文档训练文本分类模型
|
XML 并行计算 Linux
手把手教物体检测——RFBNet
手把手教物体检测——RFBNet
93 0
手把手教物体检测——RFBNet
|
机器学习/深度学习 并行计算 固态存储
手把手教物体检测——SSD(新手必看)
手把手教物体检测——SSD(新手必看)
238 0
手把手教物体检测——SSD(新手必看)

热门文章

最新文章