Yolov3模型——pytorch实现

论文传送门:YOLOv3: An Incremental Improvement

Yolov3的改进:

1.使用Darknet53作为backbone;
2.多尺度特征预测(类似FPN结构);
3.其他tricks

Yolov3的结构:

backbone为Darknet53的特征提取部分,其中Convolutional表示Conv+BN+LeakyReLU,Residual表示进行残差连接;
输入图像经过backbone提取出三层特征层,由浅层到深层分别标记为feature0、feature1和feature2;
首先将feature2经过Convolutional Layers,其输出一边经过Convolutional+Conv输出out2,另一边经过Convolutional和Upsampling,再与feature1相接;
Concat的特征一边经过Convolutional+Conv输出out1,另一边经过Convolutional和Upsampling,再与feature0相接;
最后Concat的特征经过Convolutional+Conv输出out0;
其中,Convolutional Layers的结构为5层Convolutional堆叠,其卷积核大小为 [ 1 , 3 , 1 , 3 , 1 ] [1,3,1,3,1] [1,3,1,3,1];
除了Concat后的第一个Convolutional和图片输入的第一个Convolutional,其余Convolutional中,卷积核尺寸为3,则通道数翻倍;卷积核尺寸为1,则通道数减半。
Yolov3结构

Yolov3的输出:

网络输出为三层,在COCO目标检测任务中,当输入图像尺寸为(3,416,416)时,输出的结果为:
Out 0 (255,52,52),用于预测小尺寸目标;
Out 1 (255,26,26),用于预测中尺寸目标;
Out 1 (255,13,13),用于预测大尺寸目标。
与Yolov2相似,其中,52x52,26x26,13x13均代表预设的anchor位置; 255 = ( 4 + 1 + 80 ) ∗ 3 255=(4+1+80)*3 255=(4+1+80)3,4代表目标回归参数,1代表目标置信度,80代表80个类别的条件概率,最后一个3代表anchor的尺寸数,即每个位置存在3种尺寸的anchor(针对每一层Out而言)。
(代码仅实现模型结构部分)

Yolov3的尝试:

关于预测形式和损失函数,作者尝试过一些不奏效的策略,其中值得注意的是Focal Loss。作者使用Focal Loss作为损失函数的基本形式,导致mAP降低了两个点,其不奏效的原因作者也不完全确定。
Focal loss

import torch
import torch.nn as nn


def convolutional(in_channels, out_channels, kernel_size, strid):  # Conv+BN+LeakyReLU
    padding = 1 if kernel_size == 3 else 0
    return nn.Sequential(
        nn.Conv2d(in_channels, out_channels, kernel_size, strid, padding
在YOLOv5模型代码分析方面,有一些关键的内容需要注意。首先,模型配置文件yolov5s.yaml中的parse_model函数用于解析模型配置文件,接受两个参数d和ch,其中d是模型配置文件的字典表示,ch是输入图像的通道数。 其次,在工程代码中,模型结构被定义在models目录中。其中,common.py文件存放各个模型组件,yolo.py文件是构建模型结构的主要代码。此外,不同大小的模型结构配置(如yolov5s.yaml、yolov5m.yaml、yolov5l.yaml、yolov5x.yaml等)存放在xxx.yaml文件中。 关于yolov5模型代码的分析,还可以参考一些其他资源。例如,CSDN博客中有一篇关于指数移动平均(EMA)的原理及PyTorch实现的文章,它介绍了提高最终模型在测试数据上表现的方法。另外,还有一些关于提升分类模型准确率、YOLOV5使用的技巧、损失函数详解等主题的文章也可以作为参考。 总结来说,要进行YOLOv5模型代码的分析,需要深入研究模型配置文件和模型结构的代码,并结合其他资源对模型的优化技巧和相关原理进行学习。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [YOLOv5代码解析——模型结构篇](https://blog.csdn.net/qq_41204464/article/details/130229847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [yolov5模型与代码解读](https://blog.csdn.net/qq_42740834/article/details/125488211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CV_Peach

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值