【发布时间】:2020-04-25 18:21:08
【问题描述】:
我有一个文件夹,其中包含 100 张图片,所有图片都是 png。文件名是1.png, 2.png, 3.png ... 最多100个。
目前我所做的是将这些图像手动拆分到不同的子文件夹(10 个文件夹,每个文件夹 10 个图像),每个文件夹是一个类别(汽车、飞机、马、狗等)。
我不想手动制作 10 个子文件夹来将图像复制并粘贴到每个子文件夹中,而是 根据与 txt 文件中的索引条目相对应的图像名称读取和存储其数据。
记事本文件如下所示。基本上这说明 1.png 是飞机,2.png 也是飞机,11.png 是汽车,等等。
airplane
airplane
airplane
airplane
airplane
airplane
airplane
airplane
airplane
airplane
car
car
car
car
car
car
car
car
car
car
bird
bird
bird
bird
bird
bird
bird
bird
bird
bird
cat
cat
cat
cat
cat
cat
cat
cat
cat
cat
deer
deer
deer
deer
deer
deer
deer
deer
deer
deer
dog
dog
dog
dog
dog
dog
dog
dog
dog
dog
frog
frog
frog
frog
frog
frog
frog
frog
frog
frog
horse
horse
horse
horse
horse
horse
horse
horse
horse
horse
ship
ship
ship
ship
ship
ship
ship
ship
ship
ship
truck
truck
truck
truck
truck
truck
truck
truck
truck
truck
我将如何执行这样的操作来生成用于深度学习目的的类号(标签)?这是我以前使用的:
def create_data(data_dir,array_name):
for category in CATEGORIES:
path = os.path.join(data_dir,category) # create path to class
class_num = CATEGORIES.index(category) # get the classification
for img in os.listdir(path): # iterate over each image
try:
img_array = cv2.imread(os.path.join(path,img) ,cv2.IMREAD_COLOR) new_array = img_array
array_name.append([new_array, class_num])
except Exception as e: # in the interest in keeping the output clean...
pass
def normalise(X):
X = X/255.0
def append(data_array,X,y):
for features,label in data_array:
X.append(features)
y.append(label)
【问题讨论】:
-
我不明白这个问题。如果您的图像与它们在 txt 文件中列出的顺序相同,那么您只需读取 txt 文件并将其输入
np.array()即可拥有一个一维数组。 -
这是一个非常脆弱、不可扩展的设计。当您拥有数千张图像时会发生什么 - 您如何检查呢?如果缺少一张图片怎么办 - 所有其他图片的类别都被误解了。也许考虑将类别名称/编号添加到文件名中,以便它与图像一起移动,而与其他图像的存在无关。或者将类别嵌入到
PNG评论字段中,使其成为图像的一部分。 -
@MarkSetchell 这就是我被问到的......这样的实现会是什么样子?
-
@pavel 如果我可以问一下,它会是什么样子?
-
您可以使用 exiftool、ImageMagick 或其他类似
exiftool -comment="Category:car" 1.png的工具设置评论并使用exiftool -s -S -comment 1.png检索它
标签: python machine-learning deep-learning neural-network