如何使用张量流实时对图像进行分类?

雅各布

我正在尝试使用树莓派相机捕获图像并将图像实时分为三类。我所做的是使用下面的代码。它可以在第一次迭代中进行预测。问题是它表明我在第二次迭代后内存不足。有没有什么办法解决这一问题?

import numpy as np
import tensorflow as tf
import argparse
import os
import sys

def create_graph(model_file):
    """Creates a graph from saved GraphDef file and returns a saver."""
    # Creates graph from saved graph_def.pb.
    with tf.gfile.FastGFile(model_file, 'rb') as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
        _ = tf.import_graph_def(graph_def, name='')


def run_inference(images, out_file, labels, model_file, k=5):

    # Creates graph from saved GraphDef.
    create_graph(model_file)

    if out_file:
        out_file = open(out_file, 'wb', 1)

    with tf.Session() as sess:
        softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
        for img in images:
            if not tf.gfile.Exists(img):
                tf.logging.fatal('File does not exist %s', img)
                continue
            image_data = tf.gfile.FastGFile(img, 'rb').read()


            predictions = sess.run(softmax_tensor,
                               {'DecodeJpeg/contents:0': image_data})
            predictions = np.squeeze(predictions)
            top_k = predictions.argsort()[-k:][::-1]  # Getting top k predictions

            vals = []
            for node_id in top_k:
                human_string = labels[node_id]
                score = predictions[node_id]
                vals.append('%s=%.5f' % (human_string, score))
           rec = "%s\t %s" % (img, ", ".join(vals))
            if out_file:
                out_file.write(rec)
                out_file.write("\n")
            else:
                print(rec)    
    if out_file:
        print("Output stored to a file")
        out_file.close()

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Classify Image(s)')
    parser.add_argument('-i','--in', help='Input Image file ')
    parser.add_argument('-li','--list', help='List File having input image paths')
    parser.add_argument('-o','--out', help='Output file for storing the content')
    parser.add_argument('-m','--model', help='model file path (protobuf)', required=True)
    parser.add_argument('-l','--labels', help='labels text file', required=True)
   parser.add_argument('-r','--root', help='path to root directory of input data')
    args = vars(parser.parse_args())
    # Read input
    if not args['in'] and not args['list']:
        print("Either -in or -list option is required.")
        sys.exit(1)
    if args['in']:
        images = [args['in']]
    else:  # list must be given
        with open(args['list']) as ff:
            images = filter(lambda x: x, map(lambda y: y.strip(), ff.readlines()))

    # if a separate root directory given then make a new path
    if args['root']:
        print("Input data from  : %s" % args['root'])
        images = map(lambda p: os.path.join(args['root'], p), images)

    with open(args['labels'], 'rb') as f:
        labels = [str(w).replace("\n", "") for w in f.readlines()]

    while True:
        imagename='/home/pi/Desktop/camerasnap.jpg'
        images=raspi.capture(imagename)
        run_inference(images=images, out_file=args['out'], labels=labels, model_file=args['model'])
豪尔赫姆夫

问题是您要在每个run_inference方法调用中创建图:

while True:
        imagename='/home/pi/Desktop/camerasnap.jpg'
        images=raspi.capture(imagename)
        run_inference(images=images, out_file=args['out'], labels=labels, model_file=args['model'])


def run_inference(images, out_file, labels, model_file, k=5):

    # Creates graph from saved GraphDef.
    create_graph(model_file)
    ...

由于图形可能会使用您GPU中的几乎所有内存,因此当代码尝试创建新图形时,图形将在第二次迭代中失败。您应该在整个程序生命周期内仅创建一个图形。

试试这个:

create_graph(model_file)
while True:
        imagename='/home/pi/Desktop/camerasnap.jpg'
        images=raspi.capture(imagename)
        run_inference(images=images, out_file=args['out'], labels=labels, model_file=args['model'])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用张量流实时对图像进行分类?

来自分类Dev

我用张量流编写的图像分类模型不学习

来自分类Dev

具有标记位置的张量流图像分类器

来自分类Dev

如何使用彩色图像进行 Tensorflow 图像分类?

来自分类Dev

如何从URL提供张量流图像?

来自分类Dev

如何使用tensorflow对图像进行分类和裁剪?

来自分类Dev

TensorFlow:如何对多个图像进行图像分类

来自分类Dev

图像排序张量流

来自分类Dev

在张量流中馈送图像数据以进行转移学习

来自分类Dev

如何在张量流中将数值分类数据转换为稀疏张量?

来自分类Dev

如何使用张量流中的QueueRunner将动态创建的输入图像添加到RandomShuffleQueue

来自分类Dev

如何使用从save_weights保存的张量流模型进行加载和预测?

来自分类Dev

如何在使用 AdamOptimizer 进行训练期间获得学习率?(张量流)

来自分类Dev

了解张量流二进制图像分类结果

来自分类Dev

如何使用张量流实现反卷积?

来自分类Dev

如何使用tensorflow的图像分类教程对不在原始训练或验证数据集中的看不见的图像进行分类?

来自分类Dev

使用Watson Image Recognition对图像进行“分类”

来自分类Dev

使用SVM和BOW进行图像分类?

来自分类Dev

使用 TensorFlow 进行图像分类,值错误

来自分类Dev

使用 tensorflow 进行基本图像分类

来自分类Dev

如何正确批处理图像的张量流数据集形状

来自分类Dev

如何在张量流中实现图像的直方图均衡化?

来自分类Dev

如何使用BOW选择适当的正面和负面训练图像集进行图像分类

来自分类Dev

如何在张量流中对CNN内核进行限制?

来自分类Dev

如何基于张量流中的标量条件进行选择?

来自分类Dev

在张量流中使用标量进行批量乘法/除法

来自分类Dev

如何使用OpenCV计算图像的结构张量

来自分类Dev

如何使用OpenCV计算图像的结构张量

来自分类Dev

使用tcp indy10进行实时音频流

Related 相关文章

  1. 1

    如何使用张量流实时对图像进行分类?

  2. 2

    我用张量流编写的图像分类模型不学习

  3. 3

    具有标记位置的张量流图像分类器

  4. 4

    如何使用彩色图像进行 Tensorflow 图像分类?

  5. 5

    如何从URL提供张量流图像?

  6. 6

    如何使用tensorflow对图像进行分类和裁剪?

  7. 7

    TensorFlow:如何对多个图像进行图像分类

  8. 8

    图像排序张量流

  9. 9

    在张量流中馈送图像数据以进行转移学习

  10. 10

    如何在张量流中将数值分类数据转换为稀疏张量?

  11. 11

    如何使用张量流中的QueueRunner将动态创建的输入图像添加到RandomShuffleQueue

  12. 12

    如何使用从save_weights保存的张量流模型进行加载和预测?

  13. 13

    如何在使用 AdamOptimizer 进行训练期间获得学习率?(张量流)

  14. 14

    了解张量流二进制图像分类结果

  15. 15

    如何使用张量流实现反卷积?

  16. 16

    如何使用tensorflow的图像分类教程对不在原始训练或验证数据集中的看不见的图像进行分类?

  17. 17

    使用Watson Image Recognition对图像进行“分类”

  18. 18

    使用SVM和BOW进行图像分类?

  19. 19

    使用 TensorFlow 进行图像分类,值错误

  20. 20

    使用 tensorflow 进行基本图像分类

  21. 21

    如何正确批处理图像的张量流数据集形状

  22. 22

    如何在张量流中实现图像的直方图均衡化?

  23. 23

    如何使用BOW选择适当的正面和负面训练图像集进行图像分类

  24. 24

    如何在张量流中对CNN内核进行限制?

  25. 25

    如何基于张量流中的标量条件进行选择?

  26. 26

    在张量流中使用标量进行批量乘法/除法

  27. 27

    如何使用OpenCV计算图像的结构张量

  28. 28

    如何使用OpenCV计算图像的结构张量

  29. 29

    使用tcp indy10进行实时音频流

热门标签

归档