1.backbone部分
2.neck部分
3.head部分
最关键的部分来了~~~
ok,上代码,基本每一句都已经注释完毕:
import torch.nn as nn
import torch.nn.functional as F
import torch
import numpy as np
# output:(B,A*n_ch,H,W) ----> (B, A, H, W, n_ch)
def yolo_decode(output, num_classes, anchors, num_anchors, scale_x_y):
device = None
cuda_check = output.is_cuda #判断是否为gpu数据
if cuda_check:
device = output.get_device()
n_ch = 4+1+num_classes
A = num_anchors
B = output.size(0) # 取banch
H = output.size(2) # 取网格大小
W = output.size(3)
output = output.view(B, A, n_ch, H, W).permute(0,1,3,4,2).contiguous()
bx, by = output[..., 0], output[..., 1]
bw