为什么要把图像集转换成一个大文件再读取?
简单来说,是因为读写小文件的速度太慢。那么, 不禁要问,图像数据也是二进制文件,单个大的二进制文件例如LMDB文件也是二进制文件,为什么单个图像读写速度就慢了呢?这里分两种情况解释。
机械硬盘的情况:机械硬盘的每次读写启动时间比较场,例如磁头的寻道时间占比很高,因此,如果单个小文件读写,尤其是随机读写单个小文件的时候,这个寻道时间占比就会很高,最后导致大量读写小文件的时候时间会很浪费;
NFS的情况:在NFS的场景下,系统的一次读写首先要进行上百次的网络通讯,并且这个通讯次数和文件的大小无关。因此,如果是读写小文件,这个网络通讯时间占据了整个读写时间的大部分。
原文链接:https://blog.csdn.net/weixin_39619635/article/details/111555364
根据这个情况,对于超分辨算法而言,需要高分辨-低分辨配对的数据集,图像为低分辨率图像,标签为低分辨率图像对应的高分辨图像。也就是以下的程序其实是实现图像配对的数据集制作
import os
import lmdb
def tolmdb(lr_path,hr_path,size):
i = int(1)
for file1 in os.listdir(lr_path):
if file1.endswith('.png'): # 只处理.png文件,可以根据实际情况修改
new1 = file1[0:4] # 截取文件名的前12个字符
new2 = file1[6:] # 删去命名中的X