- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 SSD tflite 检测模型,正在台式计算机上使用 Python 运行。就目前而言,我的下面的脚本将单个图像作为推理的输入,并且运行良好:
# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="model.tflite")
interpreter.allocate_tensors()
img_resized = Image.open(file_name)
input_data = np.expand_dims(img_resized, axis=0)
input_data = (np.float32(input_data) - input_mean) / input_std
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
output_data = interpreter.get_tensor(output_details[0]['index'])
如何对 .mp4 视频作为输入运行推理?
是否也可以从该视频上检测到的对象绘制边界框?
最佳答案
回答您在视频上运行推理的第一个问题。这是您可以使用的代码。我为分类模型的推理编写了这段代码,因此在您的情况下,output_data变量的输出将采用边界框的形式,您必须使用OpenCV将它们映射到框架上,这也回答了您的第二个问题(绘制边界视频上的方框)。
import cv2
from PIL import Image
import numpy as np
import tensorflow as tf
def read_tensor_from_readed_frame(frame, input_height=224, input_width=224,
input_mean=0, input_std=255):
output_name = "normalized"
float_caster = tf.cast(frame, tf.float32)
dims_expander = tf.expand_dims(float_caster, 0);
resized = tf.image.resize_bilinear(dims_expander, [input_height, input_width])
normalized = tf.divide(tf.subtract(resized, [input_mean]), [input_std])
sess = tf.Session()
result = sess.run(normalized)
return result
def load_labels(label_file):
label = []
proto_as_ascii_lines = tf.gfile.GFile(label_file).readlines()
for l in proto_as_ascii_lines:
label.append(l.rstrip())
return label
def VideoSrcInit(paath):
cap = cv2.VideoCapture(paath)
flag, image = cap.read()
if flag:
print("Valid Video Path. Lets move to detection!")
else:
raise ValueError("Video Initialization Failed. Please make sure video path is valid.")
return cap
def main():
Labels_Path = "labels.txt"
Model_Path = "model.tflite"
input_path = "video.mp4"
##Loading labels
labels = load_labels(Labels_Path)
##Load tflite model and allocate tensors
interpreter = tf.lite.Interpreter(model_path=Model_Path)
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
input_shape = input_details[0]['shape']
##Read video
cap = VideoSrcInit(input_path)
while True:
ok, cv_image = cap.read()
if not ok:
break
##Converting the readed frame to RGB as opencv reads frame in BGR
image = Image.fromarray(cv_image).convert('RGB')
##Converting image into tensor
image_tensor = read_tensor_from_readed_frame(image ,224, 224)
##Test model
interpreter.set_tensor(input_details[0]['index'], image_tensor)
interpreter.invoke()
output_data = interpreter.get_tensor(output_details[0]['index'])
## You need to check the output of the output_data variable and
## map it on the frame in order to draw the bounding boxes.
cv2.namedWindow("cv_image", cv2.WINDOW_NORMAL)
cv2.imshow("cv_image",cv_image)
##Use p to pause the video and use q to termiate the program
key = cv2.waitKey(10) & 0xFF
if key == ord("q"):
break
elif key == ord("p"):
cv2.waitKey(0)
continue
cap.release()
if __name__ == '__main__':
main()
关于python - 视频输入上的 TFLite 推理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58786001/
我正在尝试将我使用 Keras 定义的网络转换为 tflite。网络如下: model = tf.keras.Sequential([ # Embedding tf.k
您使用的模型的顶级目录是什么 :/home/USER/PROJECT/tf-models 我是否编写了自定义代码(而不是使用 TensorFlow 中提供的股票示例脚本) : 否 操作系统平台和发行版
我刚刚使用 Google AutoML 训练了一个单标签图像分类模型,但未能在 Android 手机中使用它。我修改了代码并将我的自定义模型替换为来自 https://github.com/tenso
我正在尝试将经过训练的模型从检查点文件转换为 tflite .我正在使用 tf.lite.LiteConverter .浮点转换顺利进行,推理速度合理。但是INT8的推理速度转换非常慢。我试图通过输入
我试图将 albert 的 .pb 模型转换为 tflite 我使用https://github.com/google-research/albert制作了.pb模型在 tf 1.15 中 我用过tc
我有一个用 Tensorflow.Keras 编写的自定义神经网络,并应用 Hard-swish 函数作为激活(如 MobileNetV3 论文中使用的那样): 实现: def swish(x):
我正在尝试使用来自 TensorFlow for Poets 2 的移动网络传输学习示例进行图像分类的 TFLite 实现 我能够使用代码实验室中的四个花卉样本成功完成迁移学习并获得以下屏幕 这是正在
我是 tensorflow 的新手,我正在尝试将我的 .pb(原型(prototype)缓冲区)文件转换为精简版。但我面临一些问题。import time,sys,warnings,glob,rand
我尝试通过 TFLite 将我的模型 (pb) 转换为精简版。这是我的代码: import tensorflow as tf graph_def_file = "./graph.pb" input_a
有了经过训练的“.h5”Keras 模型文件,我正在尝试优化推理时间: 探索了 2 个选项: 通过 TensorRT 加速推理 'int8' 量化。 此时我可以将模型文件转换为 TensorFlow
我有一个简单的网络,我已经使用 tensorflow 进行了剪枝和量化。我专门按照本教程在我的网络上应用: https://www.tensorflow.org/model_optimization/
我正在加载 this python中的对象检测模型。我可以使用以下代码行加载它: import tflite_runtime.interpreter as tflite model_path = 'p
好的,所以在我的应用程序中,我正在尝试使用人脸网络模型来实现人脸识别,该模型转换为 tflite,平均约为 93 MB, 但是这个模型最终会增加我的 apk 的大小。 所以我正在尝试寻找替代方法来解决
我得到了 MobileNet 的预训练 .pb 文件,发现它没有被量化,而完全量化的模型应该转换成 .tflite 格式。由于我不熟悉移动应用程序开发工具,我如何从 .tflite 文件中获取 M
我想知道是否有办法知道 tflite 中特定节点的输入和输出列表?我知道我可以获得输入/输出详细信息,但这不允许我重建解释器内部发生的计算过程。所以我要做的是: interpreter = tf.li
我对 TensorFlow 和 TensorFlow Lite 相当陌生。我已遵循有关如何使用 toco 量化模型并将模型转换为定点计算的教程。现在我有一个 tflite 文件,它应该只执行定点操作。
我从姿势估计 tflite 模型开始,用于获取人类的关键点。 https://www.tensorflow.org/lite/models/pose_estimation/overview 我开始拟合
我正在使用here中的posenet tflite模型。它接受输入 1*353*257*3 输入图像并返回 4 个尺寸为 1*23*17*17、1*23*17*34、1*23*17*64 和 1*23
我已经阅读了多个代码实验室,在这些代码实验室中,Google 对属于一类的图像进行了分类。如果我需要使用 2 个或更多类怎么办?比如我想对一张图片是水果还是蔬菜进行分类,然后分类是水果还是蔬菜。 最佳
目前,我正在尝试制作一个 Android 食品识别应用程序。我设法构建了一个应用程序来处理图像并在“mobilenet_quant_v1_224.tflite”预训练模型上运行。一切正常,现在我想将自
我是一名优秀的程序员,十分优秀!