文件合并处理的脚本编写
在我的虹膜数据集中,每个人的数据对应一个编号的文件夹(如001),文件夹下分左右眼文件夹(L和R),结构如下:
- 001
- L
- R
- 002
- L
- R
在本次实验中,没有对左右眼进行区分,所以我需要将L和R文件夹下的所有图片都揉在001文件夹中,编写脚本如下:
# merge_files.py
import os
import shutil
start_file_id = '000' # 要处理的起始文件夹编号
file_num = 1000 # 要处理的连续文件夹数量
for idx in range(file_num):
source_path = os.path.abspath('D:\Computer\Machine_Learning\IrisRecognition\中科大CASIA-IrisV4数据集\CASIA-IrisV4(JPG)\CASIA-Iris-Thousand/' + start_file_id)
target_path = os.path.abspath('D:\Computer\Machine_Learning\IrisRecognition\中科大CASIA-IrisV4数据集\CASIA-IrisV4(JPG)\CASIA-Thousand/' + start_file_id)
if not os.path.exists(target_path):
os.makedirs(target_path)
print('Start to copy...', start_file_id)
if os.path.exists(source_path):
# root所指的是当前正在遍历的这个文件夹的本身的地址
# dirs是一个list, 内容是该文件夹中所有的目录的名字(不包括子目录)
# files同样是list, 内容是该文件夹中所有的文件(不包括子目录)
for root, dirs, files in os.walk(source_path):
for file in files:
src_file = os.path.join(root, file)
shutil.copy(src_file, target_path)
print(src_file)
start_file_id = str(int(start_file_id) + 1).zfill(3)
print('Copy done!')
执行以上脚本,便将所有子文件夹下的内容合并在了同一个最大文件夹中。
RA-CNN报错问题
有了数据集后,再通过自己编写的4个脚本文件生成4个训练和测试所需要的4个txt文件,修改代码中的路径和参数等,开始训练…可是,没过多少个step就出现如下报错:
经过几个小时繁琐的检查,最终把问题定位在了训练的数据集上,反复排除后,在307号文件夹中发现了一个未知文件Thumbs.db
OK,问题找到了,就是这个db文件导致我的模型出现NoneType
的报错!
编写脚本检查哪些文件夹下有这个多余文件
# CheckFiles.py
import os
path = "D:\Computer\Machine_Learning\IrisRecognition\中科大CASIA-IrisV4数据集\CASIA-IrisV4(JPG)\\thousand"
dirs = os.listdir(path)
count = 0
for i, j in enumerate(dirs):
dirs = os.path.join(path, j)
images = os.listdir(dirs)
for x in images:
# print(x)
if x == 'Thumbs.db':
print('Postion of Thumbs.db file:', dirs[-3:])
count += 1
print('Totol num of Thumbs.db file:', count)
最终成功找出多余文件所在位置以及总数量。
删除完之后,再次检查文件。
Bingo,可以顺利进行RA-CNN的训练了√