Python 如何将标签添加到TensorBoard图像?
TensorBoard是一个很好的工具,但它能更坚固吗?下图显示了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。我想问一下,我是否可以将此图像的标签附加到文本中?这将是一个很好的功能,因为它允许用户在培训期间实时查看图像及其各自的标签。如果某些图像完全被错误标记,可以实施修
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的方法来实现这一点,因此我改为执行以下操作:
session.run([sample\u images,sample\u labels])的方法将摘要的图像和标签拉入python中。
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矩形来绘制文本。那么我必须说这是一个合法的破解!