神经网络-Yolo1的损失函数

一、环境介绍

  • 系统:win10

  • 框架:pytorch

  • 语言:python

二、原理介绍

文献1

语法介绍

*.1 数组交叉比较

如下数组

1
2
box1 = torch.tensor([[1,1,2,2],[2,1,4,4]]).float() # size :[2,4]
box2 = torch.tensor([[1,2,3,3],[1,3,3,3]]).float() # size :[2,4]

如果需要把box1[0]、box1[1]和box2[0]、box2[1]分别进行比较大小怎处理?,输出是2x2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
N = box1.size(0)
M = box2.size(0)

lt = torch.max(
# 需要比较的box1[0]、box1[1]单独复制成2个
box1[:,:2].unsqueeze(1).expand(N,M,2), # [N,2] -> [N,1,2] -> [N,M,2]

# 被比较的box2[0]、box2[1]整体复制2个
# 这样就可以实现box1[0]、box1[0] 和 box2[0]、box2[1] 比较的效果
# 注:因为python只能同纬度比较
box2[:,:2].unsqueeze(0).expand(N,M,2), # [M,2] -> [1,M,2] -> [N,M,2]
)

print(lt)

输出结果:

1
2
3
4
5
tensor([[[1., 2.],
[1., 3.]],

[[2., 2.],
[2., 3.]]]) # size: [2,2]

参考文献

1. 深刻解读YOLO V1(图解
-------------本文结束感谢您的阅读-------------
0%