输入图片描述
输入图片描述
我有一个麻烦在加载图像与DataGenerator。你可以从图片上看到,这不是我的真实路径。应该是img(1), img(2),…但是img(1), img(10), img(100),…
我该如何解决这个问题?提前谢谢你。
顺序不是您所期望的原因是生成器按字母数字顺序处理图像。例如,如果你的图片被标记为1.jpg, 2.jpg,…9.jpg, 10.jpg, 11.jpg…等等它们将按照订单进行处理1.jpg, 10 .jpg, 11.jpg等,2.jpg,20.jpg等。保持顺序的一种方法是使用"零"填充来命名文件。例如,如果您有20个文件,将它们标记为09.jpg, 10.jpg等。注意,如果使用flow_from_directory,类目录也是按字母数字顺序处理的。下面是一个函数的代码,该函数将重命名目录(source_dir)中的所有文件,从整数(snum)开始,并使用适当的'零'填充。
def rename (source_dir, snum, ):
import os
import shutil
flist=os.listdir(source_dir)
temp_dir=os.path.join(source_dir, 'temp')
if os.path.isdir(temp_dir):
shutil.rmtree(temp_dir)
os.mkdir(temp_dir)
for f in flist:
fpath=os.path.join(source_dir,f)
dpath=os.path.join(temp_dir,f)
shutil.copy(fpath, dpath)
tlist=os.listdir(temp_dir)
for f in tlist:
fpath=os.path.join(source_dir,f)
os.remove(fpath)
tlist=os.listdir(temp_dir)
fc=len(tlist) # determine number of d files to process which determines amout of zeros padding needed
pad=0
mod = 10
for i in range(1, fc + 1): # skip i=0 because 0 modulo anything is 0 and we don't want to increment pad
if i % mod == 0:
pad=pad+1
mod =mod * 10
for i,f in enumerate(tlist):
fpath=os.path.join(temp_dir,f) #full path to the file
index=fpath.rfind('.') # find location of last . in file name
new_path=os.path.join(source_dir, str(i + snum).zfill(pad+1) + fpath[index :] )
shutil.copy(fpath, new_path)
shutil.rmtree(temp_dir)