15

TensorBoard は優れたツールですが、より堅牢にすることはできますか? 以下の画像は、TensorBoard での視覚化を示しています。

次のコードで呼び出されます。

tf.image_summary('images', images, max_images=100)

API が示唆するように、最後の桁は「画像番号」です。この場合、max_images = 100 を指定したため、0 から 99 までです。この画像のラベルをテキストに追加できるかどうかお尋ねしたいと思います。これは、ユーザーがトレーニング中に画像とそれぞれのラベルをリアルタイムで確認できるため、優れた機能です。一部の画像に完全に誤ったラベルが付けられている場合は、修正を実装できます。言い換えれば、下の画像の対応するテキストを次のようにしたいと思います。

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

ありがとう!

ここに画像の説明を入力

4

2 に答える 2

7

テンソルフローのみを使用してこれを行う方法を見つけることができなかったので、代わりに次のことを行います。

  1. 要約画像のプレースホルダーを作成します (例: 10 個の要約画像の (10, 224, 224, 3) など)。
  2. そのプレースホルダーに基づいて画像の概要を作成します。
  3. 検証中 (または必要に応じてトレーニング中) に、概要の画像とラベルを のようなものを使用して python にプルしますsession.run([sample_images, sample_labels])
  4. バッチを反復処理し、OpenCV を使用してラベルを画像に書き込みますcv2.putText
  5. プレースホルダーにラベル付きの画像を提供して、概要操作を実行します。
于 2016-03-15T17:34:46.197 に答える
3

これは、Vince Gatto によって提案されたアプローチの小さな改善です。を使用tf.py_funcして、余分なプレースホルダーの作成と余分な実行を避けることができますsession.run

opencv-pythonまず、これらの関数を定義します (インストールする必要があります)。

import cv2
import tensorflow as tf

def put_text(imgs, texts):
    result = np.empty_like(imgs)
    for i in range(imgs.shape[0]):
        text = texts[i]
        if isinstance(text, bytes):
            text = text.decode()
        # You may need to adjust text size and position and size.
        # If your images are in [0, 255] range replace (0, 0, 1) with (0, 0, 255)
        result[i, :, :, :] = cv2.putText(imgs[i, :, :, :], str(text), (0, 30), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 1), 2)
    return result

def tf_put_text(imgs, texts):
    return tf.py_func(put_text, [imgs, texts], Tout=imgs.dtype)

tf_put_textこれで、イメージ サマリーにフィードする直前に、上のイメージにラベルを印刷するために使用できます。

annotated_images = tf_put_text(images, labels)
tf.summary.image('annotated_images', annotated_images, 4)
于 2018-10-17T15:39:17.847 に答える