在实现我制作成视频的 CNN+LSTM 模型时遇到问题
Having trouble when implementing CNN+LSTM model that i made into a video
我正在尝试在视频上测试我的模型以进行预测。
我想使用我的 cnn(alexnet)+lstm
模型对我拥有的视频进行预测,但是当它运行时,视频中没有任何内容出现。
这是我的代码:
vid = cv2.VideoCapture("Data Fix/Data16_133.mp4")
while(vid.isOpened()):
ret, frame = vid.read()
vid.set(3, 480)
vid.set(4, 240)
start = time.time()
if ret == True:
total_frame += 1
draw = frame.copy()
draw = cv2.cvtColor(draw, cv2.COLOR_BGR2RGB)
scale_percent = 20 # percent of original size
width = 224
height = width
dim = (width, height)
frame_set = cv2.resize(draw, dim, interpolation = cv2.INTER_AREA)
frame_set=np.arange(10*width*height*3).reshape(10,width, height, 3)
frame_set.reshape(10, width, height, 3).shape
frame_set = np.expand_dims(frame_set, axis=0)
result=model.predict_on_batch(frame_set)
cv2.imshow('Result', result)
print(result)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
vid.release()
cv2.destroyAllWindows()
当我打印结果时,它一遍又一遍地打印这个值而没有显示 cv2.imshow
中的任何内容
[[0.0602112 0.01403825 0.3782384 0.5362205 0.01129159]]
有人知道这件事吗?
任何答案将不胜感激
目前我正在尝试this tutorial制作模型和我放置数据集的方式也是一样的,不同的是我没有使用MobileNet
迁移学习,我修改了它使用AlexNet
型号。
问题是您的结果不是可以使用 OpenCV
显示的图像。您的结果是您的模型的输出,根据共享笔记本,该模型是 class 化模型并代表 class 概率。我假设您正在尝试预测与视频相对应的一些 class。如果你想看到框架,那么你必须像这样使用它:
cv2.imshow('frame', frame) # to see the frame
# below to see the draw
cv2.imshow('draw', draw)
编辑:如果你想在图像上显示预测的 class 那么
执行以下操作
# Get the predicted class from the result using argmax
pred_class = np.argmax(result)
# Here I assume that the index is the desired class like most cases
# Now we will write the class label on the image
# Set the font and place
font = cv2.FONT_HERSHEY_SIMPLEX
org = (50, 50)
cv2.putText(frame, str(pred_class), org, font, .5, (255,255,255),2,cv2.LINE_AA)
# now just show the frame
cv2.imshow('frame', frame)
我正在尝试在视频上测试我的模型以进行预测。
我想使用我的 cnn(alexnet)+lstm
模型对我拥有的视频进行预测,但是当它运行时,视频中没有任何内容出现。
这是我的代码:
vid = cv2.VideoCapture("Data Fix/Data16_133.mp4")
while(vid.isOpened()):
ret, frame = vid.read()
vid.set(3, 480)
vid.set(4, 240)
start = time.time()
if ret == True:
total_frame += 1
draw = frame.copy()
draw = cv2.cvtColor(draw, cv2.COLOR_BGR2RGB)
scale_percent = 20 # percent of original size
width = 224
height = width
dim = (width, height)
frame_set = cv2.resize(draw, dim, interpolation = cv2.INTER_AREA)
frame_set=np.arange(10*width*height*3).reshape(10,width, height, 3)
frame_set.reshape(10, width, height, 3).shape
frame_set = np.expand_dims(frame_set, axis=0)
result=model.predict_on_batch(frame_set)
cv2.imshow('Result', result)
print(result)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
vid.release()
cv2.destroyAllWindows()
当我打印结果时,它一遍又一遍地打印这个值而没有显示 cv2.imshow
[[0.0602112 0.01403825 0.3782384 0.5362205 0.01129159]]
有人知道这件事吗? 任何答案将不胜感激
目前我正在尝试this tutorial制作模型和我放置数据集的方式也是一样的,不同的是我没有使用MobileNet
迁移学习,我修改了它使用AlexNet
型号。
问题是您的结果不是可以使用 OpenCV
显示的图像。您的结果是您的模型的输出,根据共享笔记本,该模型是 class 化模型并代表 class 概率。我假设您正在尝试预测与视频相对应的一些 class。如果你想看到框架,那么你必须像这样使用它:
cv2.imshow('frame', frame) # to see the frame
# below to see the draw
cv2.imshow('draw', draw)
编辑:如果你想在图像上显示预测的 class 那么 执行以下操作
# Get the predicted class from the result using argmax
pred_class = np.argmax(result)
# Here I assume that the index is the desired class like most cases
# Now we will write the class label on the image
# Set the font and place
font = cv2.FONT_HERSHEY_SIMPLEX
org = (50, 50)
cv2.putText(frame, str(pred_class), org, font, .5, (255,255,255),2,cv2.LINE_AA)
# now just show the frame
cv2.imshow('frame', frame)