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