yolov5分文件解析(封装部分-detect.py)

在进行整体的学习之前,有必要将其中的参数和部分库进行搜索和学习,在我的学习过程中搜录了以下内容

yolov5

说到yolov5的图像处理,就绕不开神经网络卷积处理的Feature Map (特征图)表征的是神经空间内一种特征;其分辨率大小取决于先前卷积核的步长 。 层与层之间会有若干个卷积核(kernel),上一层中的每个feature map跟每个卷积核做卷积,对应产生下一层的一个feature map。 feature map的含义在计算机视觉领域基本一致,可以简单译成特征图,例如RGB图像,所有像素点的R可以认为一个feature map(这个概念与在CNN里面概念是一致的)

卷积:卷积也可以形式化地描述,事实上,它就是一种数学运算,跟减加乘除没有本质的区别。虽然这种运算本身很复杂,但它非常有助于简化更复杂的表达式。在物理和工程上,卷积被广泛地用于化简等式——等会儿简单地形式化描述卷积之后——我们将把这些领域的思想和深度学习联系起来,以加深对卷积的理解。但现在我们先从实用的角度理解卷积。

对比起之前的版本yolov4,v3等,yolov5的网络结构有一定的变化,但是有一个很显著的特点就是:小目标检测效果好Yolov5的目标检测网络有s,m,l,x四个版本)其大小,深度还有feature map的参数都不同(github上搜索yolov5第一个开源项目底下有四个版本的性能对比)

:先对其中会出现的一些名词进行解释:

1.backbone:翻译为主干网络的意思,既然说是主干网络,就代表其是网络的一部分,这个主干网络大多时候指的是提取特征的网络,其作用就是提取图片中的信息,共后面的网络使用。这些网络经常使用的是resnet VGG等,而不是我们自己设计的网络,因为这些网络已经证明了在分类等问题上的特征提取能力是很强的。在用这些网络作为backbone的时候,都是直接加载官方已经训练好的模型参数,后面接着我们自己的网络。让网络的这两个部分同时进行训练,因为加载的backbone模型已经具有提取特征的能力了,在我们的训练过程中,会对他进行微调,使得其更适合于我们自己的任务。

2.head:head是获取网络输出内容的网络,利用之前提取的特征,head利用这些特征,做出预测。

3.neck:是放在backbone和head之间的,是为了更好的利用backbone提取的特征

4.bottleneck:瓶颈的意思,通常指的是网网络输入的数据维度和输出的维度不同,输出的维度比输入的小了许多,就像脖子一样,变细了。经常设置的参数 bottle_num=256,指的是网络输出的数据的维度是256 ,可是输入进来的可能是1024维度的。

5.GAP:在设计的网络中经常能够看到gap这个层,是Global Average Pool全局平均池化,就是将某个通道的特征取平均值,经常使用AdaptativeAvgpoold(1),在pytorch中,这个代表自适应性全局平均池化,说人话就是将某个通道的特征取平均值。
重点:卷积神经网络 feature map 特征工程算法 
 # Inference
        t1 = time_synchronized()
        """
        前向传播 返回pred的shape是(1, num_boxes, 5+num_class)
        h,w为传入网络图片的长和宽,注意dataset在检测时使用了矩形推理,所以这里h不一定等于
        num_boxes = h/32 * w/32 + h/16 * w/16 + h/8 * w/8
        pred[..., 0:4]为预测框坐标
        预测框坐标为xywh(中心点+宽长)格式
        pred[..., 4]为objectness置信度
        pred[..., 5:-1]为分类结果
        """

   Yolov5中的网络文件是yaml格式,和3,4代的cfg不同,3代和4代我只是浏览了一下,所以不会涉及

    接下来是内部参数的介绍

    weights:训练的权重(之前提到的s,m,l,x)
    source:测试数据,可以是图片/视频路径,也可以是'0'(电脑自带摄像头),也可以是rtsp等视频流

   0是本机摄像头 1是其他usb摄像头以此类推(也可以下载IP摄像头,对地址和ip进行链接,从而达到使用手机摄像头的作用)
    output:网络预测之后的图片/视频的保存路径
    img-size:网络输入图片大小
    conf-thres:置信度阈值
    iou-thres:做nms的iou阈值
    device:设置设备
    view-img:是否展示预测之后的图片/视频,默认False
    save-txt:是否将预测的框坐标以txt文件形式保存,默认False
    classes:设置只保留某一部分类别,形如0或者0 2 3
    agnostic-nms:进行nms是否也去除不同类别之间的框,默认False
    augment:推理的时候进行多尺度,翻转等操作(TTA)推理
    update:如果为True,则对所有模型进行strip_optimizer操作,去除pt文件中的优化器等信息,默认为False
help函数用在解释引用东西的说明
>>help('sys')             # 查看 sys 模块的帮助 
>>>help('str')             # 查看 str 数据类型的帮助
>>>a = [1,2,3]
>>>help(a)                 # 查看列表 list 帮助信息
>>>help(a.append)          # 显示list的append方法的帮助


 

你可能感兴趣的:(深度学习,神经网络,机器学习)