tensorflow 中圖像的讀取


1. 使用gfile讀入文件內容。輸入的是String,輸出3-D tensor。可惜的是輸入不能是tensor

def decode_jpg(path):
    r""" 讀取jpg圖像

    :param path: full path
    :return: A `Tensor` of type `float32`. 3-D with shape `[height, width, channels]`
    """
    image_raw_data = tf.gfile.FastGFile(path, "r").read()
    image = tf.image.decode_jpeg(image_raw_data)
    image = tf.image.convert_image_dtype(image, dtype=tf.float32)
    return image

2. 使用WholeFileReader。輸入的是queue。

image_reader = tf.WholeFileReader()
data_queue = tf.train.string_input_producer([image_dir], shuffle=False)
image_key, image_value = image_reader.read(data_queue)
img
= tf.image.decode_jpeg(image_value, channels=3)

3. 使用read_file。輸入的是tensor,不是queue

image_value = tf.read_file(image_dir)
img = tf.image.decode_jpeg(image_value, channels=3)

4. 一個錯誤:一個csv中每行保存圖像的地址和label結果。最初的讀入方法是:

    data_queue = tf.train.string_input_producer([data_dir], shuffle=False)
    reader = tf.TextLineReader(skip_header_lines=True)
    key, value = reader.read(data_queue)
    record_defaults = [[2], ['label'], [157], [81], ['Path']]
    _, label, width, height, image_dir = tf.decode_csv(value, record_defaults, field_delim="\t")
    image_dir = tf.string_join([image_folder_dir, image_dir])
    
    img_reader = tf.WholeFileReader()
    img_key,img_value = img_reader.reader(tf.train.string_input_producer([image_dir], shuffle=False)

因為當時沒有發現read_file這種方法讀取文件。所以先后使用了兩次 string_input_producer。本以為第二次只傳入一個image_dir,圖像數據和label會一致。但是即使把shuffle設置為false, 圖像和label也對不上了。

所以把后來的 WholeFileReader換成了tf.read_file(image_dir) 。這就可以了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM