Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将标签添加到TensorBoard图像?_Python_Tensorflow_Tensorboard - Fatal编程技术网

Python 如何将标签添加到TensorBoard图像?

Python 如何将标签添加到TensorBoard图像?,python,tensorflow,tensorboard,Python,Tensorflow,Tensorboard,TensorBoard是一个很好的工具,但它能更坚固吗?下图显示了TensorBoard中的可视化效果 它由以下代码调用: tf.image_summary('images', images, max_images=100) 正如API所建议的,最后一位数字是“图像编号”,在本例中为0到99,因为我指定了max_images=100。我想问一下,我是否可以将此图像的标签附加到文本中?这将是一个很好的功能,因为它允许用户在培训期间实时查看图像及其各自的标签。如果某些图像完全被错误标记,可以实施修

TensorBoard是一个很好的工具,但它能更坚固吗?下图显示了TensorBoard中的可视化效果

它由以下代码调用:

tf.image_summary('images', images, max_images=100)
正如API所建议的,最后一位数字是“图像编号”,在本例中为0到99,因为我指定了max_images=100。我想问一下,我是否可以将此图像的标签附加到文本中?这将是一个很好的功能,因为它允许用户在培训期间实时查看图像及其各自的标签。如果某些图像完全被错误标记,可以实施修复。换句话说,我希望下图中的相应文本为:

images/image/9/5
images/image/39/6
images/image/31/0
images/image/30/2
where last digit is the label.
谢谢


我无法找到一种仅使用tensorflow的方法来实现这一点,因此我改为执行以下操作:

  • 为摘要图像创建一个占位符(例如,为十个摘要图像创建一个(10,224,224,3))
  • 基于该占位符创建图像摘要
  • 在验证期间(或培训期间,如果愿意的话),使用类似于
    session.run([sample\u images,sample\u labels])的方法将摘要的图像和标签拉入python中。
  • 迭代批处理并使用OpenCV,使用
    cv2.putText
    将标签写入图像
  • 运行摘要操作,为占位符提供带标签的图像

  • 下面是Vince Gatto提出的方法的一个小改进。我们可以使用
    tf.py_func
    来避免创建额外的占位符和执行额外的
    session.run

    首先,我们定义这些函数(您需要安装
    opencvpython
    ):

    导入cv2
    导入tensorflow作为tf
    def put_文本(imgs,文本):
    结果=np.empty_like(imgs)
    对于范围内的i(imgs.shape[0]):
    text=文本[i]
    如果isinstance(文本,字节):
    text=text.decode()
    #您可能需要调整文本大小、位置和大小。
    #如果图像在[0,255]范围内,请将(0,0,1)替换为(0,0,255)
    结果[i,:,:,:]=cv2.putText(imgs[i,:,:,:,:],str(text),(0,30),cv2.FONT\u HERSHEY\u COMPLEX,1,(0,0,1),2)
    返回结果
    def tf_put_文本(imgs,文本):
    返回tf.py_func(put_text[imgs,text],Tout=imgs.dtype)
    
    现在,我们可以使用
    tf\u put\u text
    在将标签输入到图像摘要之前,在顶部图像上打印标签:

    annotated_images=tf_put_text(图像、标签)
    tf.summary.image('annotated_images',annotated_images,4)
    
    虽然这对于大型图像可能是一个很好的技巧,但对于(28,28)个图像可能没有那么好的效果。没有理由将摘要设置为28x28。您可以使用任何您喜欢的维度。你可以从一块128x28的空白画布开始,将培训示例复制到左上角,然后使用剩余的100x28矩形来绘制文本。那么我必须说这是一个合法的破解!