首页 > 其他分享 >图像处理学习——2-读detector.py-掌握模型输出值的含义

图像处理学习——2-读detector.py-掌握模型输出值的含义

时间:2022-12-31 16:22:34浏览次数:59  
标签:obj self py 图像处理 output detector out reg cls

Detector这个类在初始化的时候定义了许多成员变量:

def __init__(self, classes, anchor_num, load_param, export_onnx = False):
        super(Detector, self).__init__()
        out_depth = 72
        stage_out_channels = [-1, 24, 48, 96, 192]

        self.export_onnx = export_onnx
        self.backbone = ShuffleNetV2(stage_out_channels, load_param)
        self.fpn = LightFPN(stage_out_channels[-2] + stage_out_channels[-1], stage_out_channels[-1], out_depth)

        self.output_reg_layers = nn.Conv2d(out_depth, 4 * anchor_num, 1, 1, 0, bias=True)
        self.output_obj_layers = nn.Conv2d(out_depth, anchor_num, 1, 1, 0, bias=True)
        self.output_cls_layers = nn.Conv2d(out_depth, classes, 1, 1, 0, bias=True)
各个成员变量的解释如下:
  • backbone:网络结构中的特征提取部分。卷积神经网络的结构通常可以分成两大部分,一部分用于特征提取,称为"backbone",另一部分就基于提取出的特征做一些事情,比如说加上一个全连接层做分类、加上一些卷积层(a.k.a 检测头)做目标检测等。
  • fpn特征金字塔,一种特殊结构,暂时不用理解。感兴趣的话,搜一下fpn
  • output_reg_layers:卷积层,输出每一个网格的坐标预测结果。假设batch size是64,网格划分为13x13,那么输出的形状就是(64, 13, 13, 4 * anchor_num)。每一个anchor都会预测一个(x, y, w, h),所以通道数是4 * anchor_num。
  • output_obj_layers:卷积层,输出每一个网格的置信度预测结果。假设batch size是64,网格划分为13x13,那么输出的形状就是(64, 13, 13, 1 * anchor_num)。每一个anchor都会预测一个置信度,所以通道数是1 * anchor_num。
  • output_cls_layers:卷积层,输出每一个网格的类别预测结果。classes是类别数。这边输出通道数并不是classes * anchor_num,说明所有anchor预测的类别结果是一样的。假设batch size是64,网格划分为13x13,那么输出的形状就是(64, 13, 13, classes)

接着是forward函数:

 def forward(self, x):
        C2, C3 = self.backbone(x)
        cls_2, obj_2, reg_2, cls_3, obj_3, reg_3 = self.fpn(C2, C3)
        
        out_reg_2 = self.output_reg_layers(reg_2)
        out_obj_2 = self.output_obj_layers(obj_2)
        out_cls_2 = self.output_cls_layers(cls_2)

        out_reg_3 = self.output_reg_layers(reg_3)
        out_obj_3 = self.output_obj_layers(obj_3)
        out_cls_3 = self.output_cls_layers(cls_3)
        
        if self.export_onnx:
            #lxq说不用看
            
        else:
            return out_reg_2, out_obj_2, out_cls_2, out_reg_3, out_obj_3, out_cls_3
只需要看关键部分就行。通过上面的解析咱们可以确定out_reg/obj/cls_2/3这6个变量的形状。然后在训练时,这6个变量会作为一个长度为6的元组返回(参考: python多个返回值的函数)。 在目标检测算法中,有个概念叫"多尺度检测",对于大的目标,用13x13网格划分去预测就行,而对于小目标,网格划分就应该更细致一些,比如说用19x19。 这6个变量,每3个为一组,代表了某一个尺度(某一种划分方式)的预测结果。总共有两个尺度。

标签:obj,self,py,图像处理,output,detector,out,reg,cls
From: https://www.cnblogs.com/yuxiyuxi/p/17016462.html

相关文章

  • 使用Python计算个人所得税
    企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40......
  • 安装embedded纯净版的python 3.11以及安装pip
    为了纯净,我在Win10上选择安装了embedded的版本的python3.11,结果为了安装pip倒腾了一早上。现记录如下。 一、安装python3.11从python官网下的,今天的版本是3.11.1,链接......
  • 关于python列表的insert和append方法的执行效率对比
    关于python中insert可以在指定的索引前插入元素,也即是插入的元素的索引即为指定的索引而append方法,是指的在列表的末尾处添加/追加一个元素 两种方法都是为列表新增加......
  • 01Python的标准数据类型
    #Number数字'''intlong(python2.0)floatcomplex'''#String字符串s='abcde'print(s[1:5])#List列表sList=['a','1',1,'bd','这']sList2=['A','c']sLis......
  • python 生成可执行文件带有后缀exe的文件
    #在windows安装pip是python安装的必用工具1.下载pip地址:https://pypi.python.org/pypi/pip#downloads注意选择tar.gz压缩包,目前最新版本为9.0.1,这里选择的版本是:pi......
  • Selenium64-pytest.ini
    配置文件pytest.inipytest.ini是什么?pytest.ini是pytest的主配置文件,可以改变pytest的默认行为,有很多可配置的选项。在执行文件根目录配置pytest.ini文件。日志的......
  • PY0271验证码的创建
    生成的随机背景色的效果  fromPILimportImage,ImageDraw,ImageFont,ImageFilterimportrandom#设置随机的背景颜色。defrndColor():r=random.randint(......
  • pytorch的FashionMNIST
    目录pytorch的FashionMNIST项目从加载数据到训练模型评估到模型保存模型加载及预测importtorchfromtorchimportnnfromtorch.utils.dataimportDataLoaderfromtorchvi......
  • python入门 之购物车程序
    #1.启动程序后,让用户输入工资,然后打印商品列表#2.允许用户根据商品编号购买商品#3.用户选择商品后,检查余额是否足够,够就直接扣款,不够就提醒#4.可随时退出,退出时,打印已......
  • python生成uuid,并去掉中间的‘-‘
    UUID(UniversallyUniqueIdentifier)是通用唯一识别码,是软件建构的标准,号称可以对任何一种东西进行唯一的编码。下面来看一下python中怎么生成uuid编码并去除其中间的符号‘-......