我有一个名为labeled_data2
的文件夹。此文件夹包含狗品种的图像。
每个图像都以狗的品种为前缀。
我正在尝试将所有图像从labeled_data2
(按品种排序)移动到dataset_dog_breeds/train
和dataset_dog_breeds/test
。这是一个最后的样子的例子:
`dataset_dog_breeds/train/boxer/boxer.jpg`
现在,我不知道是否能解决错误(请看标题),我将把所有图像从labeled_data2
移到它们各自的路径。但这是一个开始。
代码如下:
# organize dataset into a useful structure
from os import makedirs
from os import listdir
from shutil import copyfile
from random import seed
from random import random
# create directories
dataset_home = 'dataset_dog_breeds/'
subdirs = ['train/','test/']
for subdir in subdirs:
# create label subdirectories
labeldirs = ['affenpinscher/','afghan_hound/','african_hunting_dog/'
'airedale/','american_staffordshire_terrier/','appenzeller/','australian_terrier/','basenji/','basset/','beagle/','bedlington_terrier/','bernese_mountain_dog/','black-and-tan_coonhound/','blenheim_spaniel/','bloodhound/','bluetick/','border_collie/','border_terrier/','borzoi/','boston_bull/','bouvier_des_flandres/','boxer/','brabancon_griffon/','briard/','brittany_spaniel/','bull_mastiff/','cairn/','cardigan/','chesapeake_bay_retriever/','chihuahua/','chow/','clumber/','cocker_spaniel/','collie/','curly-coated_retriever/','dandie_dinmont/','dhole/','dingo/','doberman/','english_foxhound/','english_setter/','english_springer/','entlebucher/','eskimo_dog/']
for labldir in labeldirs:
newdir = dataset_home + subdir + labldir
makedirs(newdir,exist_ok=True)
# seed random number generator
seed(1)
# define ratio of pictures to use for validation
val_ratio = 0.25
# copy training dataset images into subdirectories
src_directory = 'labeled_data2/'
for file in listdir(src_directory):
src = src_directory + '/' + file
dst_dir = 'train/'
if random() < val_ratio:
dst_dir = 'test/'
if file.startswith('affenpinscher'):
dst = dataset_home + dst_dir + 'affenpinscher/' + file
copyfile(src,dst)
if file.startswith('afghan_hound'):
dst = dataset_home + dst_dir + 'afghan_hound/' + file
copyfile(src,dst)
if file.startswith('african_hunting_dog'):
dst = dataset_home + dst_dir + 'african_hunting_dog/' + file
copyfile(src,dst)
if file.startswith('airedale'):
dst = dataset_home + dst_dir + 'airedale/' + file
copyfile(src,dst)
if file.startswith('american_staffordshire_terrier'):
dst = dataset_home + dst_dir + 'american_staffordshire_terrier/' + file
copyfile(src,dst)
if file.startswith('appenzeller'):
dst = dataset_home + dst_dir + 'appenzeller/' + file
copyfile(src,dst)
if file.startswith('australian_terrier'):
dst = dataset_home + dst_dir + 'australian_terrier/' + file
copyfile(src,dst)
if file.startswith('basenji'):
dst = dataset_home + dst_dir + 'basenji/' + file
copyfile(src,dst)
if file.startswith('basset'):
dst = dataset_home + dst_dir + 'basset/' + file
copyfile(src,dst)
if file.startswith('beagle'):
dst = dataset_home + dst_dir + 'beagle/' + file
copyfile(src,dst)
if file.startswith('bedlington_terrier'):
dst = dataset_home + dst_dir + 'bedlington_terrier/' + file
copyfile(src,dst)
if file.startswith('bernese_mountain_dog'):
dst = dataset_home + dst_dir + 'bernese_mountain_dog/' + file
copyfile(src,dst)
if file.startswith('black-and-tan_coonhound'):
dst = dataset_home + dst_dir + 'black-and-tan_coonhound/' + file
copyfile(src,dst)
if file.startswith('blenheim_spaniel'):
dst = dataset_home + dst_dir + 'blenheim_spaniel/' + file
copyfile(src,dst)
if file.startswith('bloodhound'):
dst = dataset_home + dst_dir + 'bloodhound/' + file
copyfile(src,dst)
if file.startswith('bluetick'):
dst = dataset_home + dst_dir + 'bluetick/' + file
copyfile(src,dst)
if file.startswith('border_collie'):
dst = dataset_home + dst_dir + 'border_collie/' + file
copyfile(src,dst)
if file.startswith('border_terrier'):
dst = dataset_home + dst_dir + 'border_terrier/' + file
copyfile(src,dst)
if file.startswith('borzoi'):
dst = dataset_home + dst_dir + 'borzoi/' + file
copyfile(src,dst)
if file.startswith('bouvier_des_flandres'):
dst = dataset_home + dst_dir + 'bouvier_des_flandres/' + file
copyfile(src,dst)
if file.startswith('boxer'):
dst = dataset_home + dst_dir + 'boxer/' + file
copyfile(src,dst)
if file.startswith('brabancon_griffon'):
dst = dataset_home + dst_dir + 'brabancon_griffon/' + file
copyfile(src,dst)
if file.startswith('briard'):
dst = dataset_home + dst_dir + 'briard/' + file
copyfile(src,dst)
if file.startswith('brittany_spaniel'):
dst = dataset_home + dst_dir + 'brittany_spaniel/' + file
copyfile(src,dst)
if file.startswith('bull_mastiff'):
dst = dataset_home + dst_dir + 'bull_mastiff/' + file
copyfile(src,dst)
if file.startswith('cairn'):
dst = dataset_home + dst_dir + 'cairn/' + file
copyfile(src,dst)
if file.startswith('cardigan'):
dst = dataset_home + dst_dir + 'cardigan/' + file
copyfile(src,dst)
if file.startswith('chesapeake_bay_retriever'):
dst = dataset_home + dst_dir + 'chesapeake_bay_retriever/' + file
copyfile(src,dst)
if file.startswith('chihuahua'):
dst = dataset_home + dst_dir + 'chihuahua/' + file
copyfile(src,dst)
if file.startswith('chow'):
dst = dataset_home + dst_dir + 'chow/' + file
copyfile(src,dst)
if file.startswith('clumber'):
dst = dataset_home + dst_dir + 'clumber/' + file
copyfile(src,dst)
if file.startswith('cocker_spaniel'):
dst = dataset_home + dst_dir + 'cocker_spaniel/' + file
copyfile(src,dst)
if file.startswith('collie'):
dst = dataset_home + dst_dir + 'collie/' + file
copyfile(src,dst)
if file.startswith('curly-coated_retriever'):
dst = dataset_home + dst_dir + 'curly-coated_retriever/' + file
copyfile(src,dst)
if file.startswith('dandie_dinmont'):
dst = dataset_home + dst_dir + 'dandie_dinmont/' + file
copyfile(src,dst)
if file.startswith('dhole'):
dst = dataset_home + dst_dir + 'dhole/' + file
copyfile(src,dst)
if file.startswith('dingo'):
dst = dataset_home + dst_dir + 'dingo/' + file
copyfile(src,dst)
if file.startswith('doberman'):
dst = dataset_home + dst_dir + 'doberman/' + file
copyfile(src,dst)
if file.startswith('english_foxhound'):
dst = dataset_home + dst_dir + 'english_foxhound/' + file
copyfile(src,dst)
if file.startswith('english_setter'):
dst = dataset_home + dst_dir + 'english_setter/' + file
copyfile(src,dst)
if file.startswith('english_springer'):
dst = dataset_home + dst_dir + 'english_springer/' + file
copyfile(src,dst)
if file.startswith('entlebucher'):
dst = dataset_home + dst_dir + 'entlebucher/' + file
copyfile(src,dst)
elif file.startswith('eskimo_dog'):
dst = dataset_home + dst_dir + 'eskimo_dog/' + file
copyfile(src,dst)