darknet的迷惑

1. yolov2-tiny

  • 以輸入爲416*416,20類,5個anchor爲例
  • 使用的anchor是相對於特徵圖的,即anchor值是除以32的
  • 一幅圖的輸出是1*125*13*13
  • 125由5個anchor組成,每個anchor中的值是[x,y,w,h,c,p1,p2…p20]
  • 所以輸出就是13*13個第一個anchor的x,13*13個第一個anchor的y…13*13個第一個anchor的p20,共25*13*13個; 13*13個第2個anchor的x…13*13個第2個anchor的p20,共50*13*13個;…13*13個第5個anchor的p20,共125*13*13個;
  • 以下代碼的結果是框的左上點和右下點除以輸入圖像寬高
for i in range(4, 125, 25):
      for j in range(13):
        for k in range(13):
          conf = sigmoid(input0_data[0][i][j][k]) * sigmoid(input0_data[0][i+1][j][k])
          if conf > 0.9:
            print(conf)
            tx=input0_data[0][i-4][j][k]
            ty=input0_data[0][i-3][j][k]
            tw=input0_data[0][i-2][j][k]
            th=input0_data[0][i-1][j][k]
            cx=j
            cy=k
            pw=int(i/25)*2
            ph=pw+1
            pw=anchors[pw]
            ph=anchors[ph]
            bx = sigmoid(tx)+cx
            bx /= 13
            by = sigmoid(ty)+cy
            by /= 13
            bw = pw*math.exp(tw)
            bw /= 13
            bh = ph*math.exp(th)
            bh /= 13
            bx -= bw / 2
            by -= bh / 2
            print(bx,by,bw+bx,bh+by)

2. yolov3

  • 以輸入爲416*416,80類,9個anchor爲例
  • 使用的anchor是相對於輸入圖像大小的
  • yolov3使用mask機制,一幅圖輸出3組結果,每組3個anchor,第一組的輸出爲1*255*13*13
  • 組織方式同上
  • 以下代碼的結果是框的左上點和右下點除以輸入圖像寬高
ans=[116, 90, 156, 198, 373, 326]
for i in (4, 89, 174):
      for j in range(13):
        for k in range(13):
          conf = sigmoid(input0_data[0][i][j][k]) * sigmoid(input0_data[0][i+16][j][k])
          if conf > 0.9:
            print(conf)
            tx=input0_data[0][i-4][j][k]
            ty=input0_data[0][i-3][j][k]
            tw=input0_data[0][i-2][j][k]
            th=input0_data[0][i-1][j][k]
            cx=j
            cy=k
            pw=int(i/85)*2
            ph=pw+1
            pw=ans[pw]
            ph=ans[ph]
            bx = sigmoid(tx)+cx
            bx /= 13
            by = sigmoid(ty)+cy
            by /= 13
            bw = pw*math.exp(tw)
            bw /= 416
            bh = ph*math.exp(th)
            bh /= 416
            bx -= bw / 2
            by -= bh / 2
            print(bx,by,bw+bx,bh+by)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章