1、shortcut层 elif module_def["type"] == "shortcut": layer_i = int(module_def["from"]) temp_shape1, temp_shape2 = layer_outputs[-1].shape, layer_outputs[layer_i].shape x = layer_outputs[-1] + layer_outputs[layer_i] 单步结果: 从单步的结果来看layer_outputs[-1]是上一层的feature map即特征图,layer_outputs[layer_i]是选用之前指定的特征图,将这两个相加,也就是对应位置相加,所以形状不变,即shortcut是特征图中的每个像素点进行对应位置的相加操作 这样做的作用暂时还没考虑,待更新 2、route层 elif module_def["type"] == "route": temp = [layer_outputs[int(layer_i)] for layer_i in module_def["layers"].split(",")] x = torch.cat([layer_outputs[int(layer_i)] for layer_i in module_def["layers"].split(",")], 1) print("断点停止") 单步结果: 从单步结果来看route是进行的拼接操作,即将一个特征图和另一个特征图在指定的维度上进行拼接操作,组成了一张尺度更大的特征图 这样做的作用暂时还没考虑,待更新 3、YOLO层待更新 注,此代码是YOLOV3中的但并不影响对结果的分析