gpt4 book ai didi

python - 理解函数 forward() 和 getUnconnectedOutLayers()

转载 作者:行者123 更新时间:2023-12-02 16:12:26 25 4
gpt4 key购买 nike

ln = net.getLayerNames()
print(ln)
ln = [ln[i[0]-1] for i in net.getUnconnectedOutLayers()]
print(ln)


blob = cv2.dnn.blobFromImage(image, scalefactor = 1/255.0, size = (416,416), swapRB = True, crop = False)
net.setInput(blob)
start = time.time()
layerOutputs = net.forward(ln)
end = time.time()

print("[INFO] Yolo took {:.6f} seconds" .format(end-start))


boxes = []
confidences = []
classIDs = []

for output in layerOutputs :
for detection in output :
scores = detection[5:]
classID = np.argmax(scores)
confidence = scores[classID]

if confidence > args["confidence"]:
box = detection[0:4] * np.array([W,H,W,H])
(centerX, centerY, width, height) = box.astype("int")

x = int(centerX - (width/2))
y = int(centerY - (height/2))

boxes.append([x,y,int(width), int(height)])
confidences.append(float(confidence))
classIDs.append(classID)

我对上面的代码有两个基本问题:
  • 我理解函数 getUnconnectedOutLayers()用来
    获取未连接的输出层的索引,以便找到
    出多远功能forward()必须通过网络运行。一世
    不明白为什么这些输出层被表示为未连接的。
    另外,这是否意味着在某些情况下我们不会通过整个网络运行我们的数据?如果是这样,为什么?
    关于我们使用 getUnconnectedOutLayers() 的行的另一件事困扰着我。函数是ln[i[0]-1一部分。我相信这是遍历 ln 的某种方式反向排列,但我并不完全理解它。
  • 在文档中,声明函数 forward()返回指定层的第一个输出的 blob。我假设它与我们从函数 blobFromImage() 获得的 blob 相同。从某种意义上说,它也是 4D。
    在后面的代码中,声明如下:scores
    = detection[5:]
    .因为我假设它是一个 4D 数组,所以我期待以下内容:scores = detection[5:::] .是两个维度
    由于两个 for 循环而在切片中“掉线”?
  • 最佳答案

    net.getUnconnectedOutLayers() 给出层的位置。输出是一个形状为 (1,) 的 ndarray。所以为了得到整数,我们做 ln[0]。为了得到索引,我们从位置中减去 1。

    关于python - 理解函数 forward() 和 getUnconnectedOutLayers(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55883178/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com