【发布时间】:2019-11-13 13:37:05
【问题描述】:
我有一个名为 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('afghan_hound'):
dst = dataset_home + dst_dir + 'afghan_hound/' + file
copyfile(src, dst)
if file.startswith('afghan_hound'):
dst = dataset_home + dst_dir + 'afghan_hound/' + 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)
【问题讨论】:
-
可能看起来微不足道,但文件名是否不正确? - 我的意思是它的文件名/文件夹拼写正确 - 通常简单的小事情会导致最烦人的错误
-
@JackWright 我想是的。我会仔细检查。
-
这是要创建目录还是您自己创建的?
-
@JackWright 该程序假设创建目录和子目录。
标签: python machine-learning deep-learning