dataset读取不定尺寸图片的tfrecord文件

本文介绍了如何处理包含不同尺寸图像的tfrecord文件。在生成tfrecord时,保存了图像的shape信息,以便在读取时能够正确还原图像的维度。在使用dataset读取时,通过解析函数parse_example()来处理这些图像特征,避免了因直接reshape导致的错误。关键在于正确处理tensor的resize操作,确保其维度匹配。
摘要由CSDN通过智能技术生成
1.问题描述:

转载请注明~
大多数情况下,我们会在生成tfrecord文件之前加载图片数据时,就将图片尺寸处理好,例如尺寸reshape为[224,224,3],然后存储在tfrecord中。
这种方式,优点是避免很多后续shape uncompatible问题;缺点是,这会限制网络模型输入,每修改一次模型输入shape都要重新生成tfrecord文件。
针对这种情况,我总结一种dataset读取不同尺寸图像数据的tfrecord文件,并指出了容易出bug的地方。

2.定义生成tfrecord的特征

这部分注意的是,保存图像信息时记得保存图像的shape信息,因为每张图像尺寸不同,后面解析时用shape还原图像tensor维度。(因为tensor的reshape,resize等操作只在相同tensor shape时才有效,否则会报错!!)

def convert_to_TFRecord(imgpath_lst,label_lst,outfile):
    tfrecord_writer = tf.python_io.TFRecordWriter(outfile)
    for i, [imgpath,label] in enumerate(zip(imgpath_lst, label_lst)):
        print("NO{}".format(i))
        imgdata = Image.open(imgpath)
        img_arr = np.asarray(imgdata)
        shape = img_arr.shape
        imgdata = imgdata.tobytes()
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值