Я использовал net = cv2.dnn.readNetFromCaffe(protoFile, weightsFile)
, а затем перебирал живые видеокадры, чтобы получить выходные данные для каждого кадра, используя net.forward()
.
Но net.forward()
занимает от 7 до 10 секунд для каждого кадра, чтобы датьрезультат.Пожалуйста, помогите мне, как улучшить производительность (сократить время, затрачиваемое на обработку в net.forward()
).
Значения: от шага 1 до шага 2 для каждого кадра требуется от 7 до 10 секунд.
(шаг 1и Шаг 2 упоминаются в приведенном ниже коде).
import cv2
import time
import numpy as np
protoFile = "deploy.prototxt"
weightsFile = "iter_10.caffemodel"
inWidth = 300
inHeight = 300
# web camera
cap = cv2.VideoCapture(0)
hasFrame, frame = cap.read()
net = cv2.dnn.readNetFromCaffe(protoFile, weightsFile)
k = 0
while 1:
k+=1
t = time.time()
print("Start time = {}".format(t))
hasFrame, frame = cap.read()
if not hasFrame:
cv2.waitKey()
print("Wait====>")
break
inpBlob = cv2.dnn.blobFromImage(frame, 1.0 / 255, (inWidth, inHeight),
(0, 0, 0), swapRB=False, crop=False)
net.setInput(inpBlob)
# Step1
print("before forward = {}".format(time.time() - t))
output = net.forward()
# Step2
#taking close to 7 to 10 seconds for each frame
print("forward = {}".format(time.time() - t))