目標(biāo)檢測(cè) build_target函數(shù)
在搞目標(biāo)檢測(cè)的時(shí)候,對(duì)目標(biāo)檢測(cè)的數(shù)據(jù)集處理有多疑惑。
比如:
目標(biāo)數(shù)據(jù)是如何產(chǎn)生的,也就是groundtruth是如何誕生的。
在讀取的過(guò)程中,數(shù)據(jù)集中又是如何展現(xiàn)的
在計(jì)算loss的過(guò)程中,又是如何進(jìn)行計(jì)算的
為什么yolov5中,很多細(xì)節(jié)沒(méi)有表現(xiàn)出來(lái),我們應(yīng)該怎么閱讀yolov5的代碼?
以下內(nèi)容在直播中出現(xiàn),但是不會(huì)在專欄投稿里面出現(xiàn):
在目標(biāo)數(shù)據(jù)集中,數(shù)據(jù)格式為:標(biāo)簽 中心x 中心y 寬w?高h(yuǎn)
The image of targets:? tensor([0.00000e+00, 2.90000e+01, 5.88579e-01, 4.03505e-01, 2.85181e-02, 9.58207e-03])
target shape:? torch.Size([84, 6])
number of anchor:? 3 ; number of targets:? 84
gain shape:? torch.Size([7])
original ai shape:? torch.Size([3])
view ai shape:? torch.Size([3, 1])
repeat ai shape:? torch.Size([3, 84])
The none ai shape:? torch.Size([3, 84, 1])
targets shape:? torch.Size([3, 84, 7])
The length of predictions is? 3
The anchor:?
tensor([[1.25000, 1.62500],
? ? ? ? [2.00000, 3.75000],
? ? ? ? [4.12500, 2.87500]])
prediction shape:? torch.Size([8, 3, 80, 80, 85])
The anchors' shape:? torch.Size([3, 2])
the gain is? tensor([ 1.,? 1., 80., 80., 80., 80.,? 1.])
The shape of t:? torch.Size([3, 84, 7])
The r's shape:? torch.Size([3, 84, 2])
The j shape is? torch.Size([3, 84])
The t shape is? torch.Size([93, 7])
The gxy shape is? torch.Size([93, 2])
gain[[2,3]] is? tensor([80., 80.])
The gxi shape is? torch.Size([93, 2])
j, k are? torch.Size([93])? ?torch.Size([93])
l, m are? torch.Size([93])? ?torch.Size([93])
The stack j shape is? torch.Size([5, 93])
The repeat t is? torch.Size([5, 93, 7])
The filter t is? torch.Size([276, 7])
The offsets shape is? torch.Size([276, 2])
The shape of bc:? torch.Size([276, 2])
The a shape is? torch.Size([276])
The b shape is? torch.Size([276])
The c shape is? torch.Size([276])
The shape of gij is? torch.Size([276, 2])
The shape of gi is? torch.Size([276])
The shape of gj is? torch.Size([276])
The anchor:?
tensor([[1.87500, 3.81250],
? ? ? ? [3.87500, 2.81250],
? ? ? ? [3.68750, 7.43750]])
prediction shape:? torch.Size([8, 3, 40, 40, 85])
The anchors' shape:? torch.Size([3, 2])
the gain is? tensor([ 1.,? 1., 40., 40., 40., 40.,? 1.])
The shape of t:? torch.Size([3, 84, 7])
The r's shape:? torch.Size([3, 84, 2])
The j shape is? torch.Size([3, 84])
The t shape is? torch.Size([115, 7])
The gxy shape is? torch.Size([115, 2])
gain[[2,3]] is? tensor([40., 40.])
The gxi shape is? torch.Size([115, 2])
j, k are? torch.Size([115])? ?torch.Size([115])
l, m are? torch.Size([115])? ?torch.Size([115])
The stack j shape is? torch.Size([5, 115])
The repeat t is? torch.Size([5, 115, 7])
The filter t is? torch.Size([345, 7])
The offsets shape is? torch.Size([345, 2])
The shape of bc:? torch.Size([345, 2])
The a shape is? torch.Size([345])
The b shape is? torch.Size([345])
The c shape is? torch.Size([345])
The shape of gij is? torch.Size([345, 2])
The shape of gi is? torch.Size([345])
The shape of gj is? torch.Size([345])
The anchor:?
tensor([[ 3.62500,? 2.81250],
? ? ? ? [ 4.87500,? 6.18750],
? ? ? ? [11.65625, 10.18750]])
prediction shape:? torch.Size([8, 3, 20, 20, 85])
The anchors' shape:? torch.Size([3, 2])
the gain is? tensor([ 1.,? 1., 20., 20., 20., 20.,? 1.])
The shape of t:? torch.Size([3, 84, 7])
The r's shape:? torch.Size([3, 84, 2])
The j shape is? torch.Size([3, 84])
The t shape is? torch.Size([104, 7])
The gxy shape is? torch.Size([104, 2])
gain[[2,3]] is? tensor([20., 20.])
The gxi shape is? torch.Size([104, 2])
j, k are? torch.Size([104])? ?torch.Size([104])
l, m are? torch.Size([104])? ?torch.Size([104])
The stack j shape is? torch.Size([5, 104])
The repeat t is? torch.Size([5, 104, 7])
The filter t is? torch.Size([310, 7])
The offsets shape is? torch.Size([310, 2])
The shape of bc:? torch.Size([310, 2])
The a shape is? torch.Size([310])
The b shape is? torch.Size([310])
The c shape is? torch.Size([310])
The shape of gij is? torch.Size([310, 2])
The shape of gi is? torch.Size([310])
The shape of gj is? torch.Size([310])