我目前正在尝试从事一个小型图像机器学习项目。我找到了这个人的 Kaggle 代码,并尝试从头开始复制它。然而,即使在主要部分,我也已经遇到了错误。
我确信我的结局一定存在本地化问题,但我不知道是什么。
我的代码:
#Import Libraries
#Data processing modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import cv2
#File directory modules
import glob as gb
import os
#Training and testing (machine learning) modules
import tensorflow as tf
import keras
#Importing the images into the code
trainDataset = 'melanoma_cancer_dataset/train'
testDataset = 'melanoma_cancer_dataset/test'
predictionDataset = 'melanoma_cancer_dataset/skinTest'
#creating empty lists for the images to fall into for processing
training_List = []
testing_list = []
#making a classification dictionary for the two keys, benign and malignant
#used for inserting into the images
diction = {'benign' : 0, 'malignant' : 1}
#Read through the folder's length contents
for folder in os.listdir(trainDataset):
data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))
print(f'{len(data)} in folder {folder}')
#read the images, resize them in a uniform order, and store them in the empty lists
for data in data:
image = cv2.imread(data)
imageList = cv2.resize(image(120,120))
training_List.append(list(imageList))
笔记本的输出显示文件夹中存储了 0 个图像/内容。现在我有点怀疑这里发生了什么,并且希望得到一些答案。提前致谢。我也在使用自己的 VScode。
这是我的文件的屏幕截图:
根据您的文件夹结构和您提供的代码,问题是您没有在文件夹路径末尾添加尾部斜杠。 在提供的代码中,您尝试将文件夹名称直接与路径连接起来。但是,如果您错过了斜杠或者文件夹变量不包含尾部斜杠,则可能会导致路径不正确。
像这样更新路径:
trainDataset = 'melanoma_cancer_dataset/train/'
testDataset = 'melanoma_cancer_dataset/test/'
predictionDataset = 'melanoma_cancer_dataset/skinTest/'
你的代码正在做什么在这里:
for folder in os.listdir(trainDataset):
data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))
它会转到trainDataset的路径,然后使用
os.listdir()
列出那里的文件夹(命名为恶性和良性)。
这些路径连接起来生成最终的图像路径:
data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))
此外,该行中存在轻微的语法错误:
imageList = cv2.resize(image(120,120))
应该是
cv2.resize(image, (120, 120))
您附加到training_List的方式也可能是错误的。您需要在附加之前将 imageList 转换为列表,或者如果您想保留图像数组结构,则直接附加 imageList
完整更新代码:
# Data processing modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import cv2
# File directory modules
import glob as gb
import os
# Training and testing (machine learning) modules
import tensorflow as tf
import keras
# Directories
trainDataset = 'melanoma_cancer_dataset/train/'
testDataset = 'melanoma_cancer_dataset/test/'
predictionDataset = 'melanoma_cancer_dataset/skinTest/'
# Empty list for the images
training_List = []
testing_list = []
# Classification dictionary
diction = {'benign': 0, 'malignant': 1}
# Read through the folder's contents
for folder in os.listdir(trainDataset):
# Corrected the path pattern and added a slash
data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))
print(f'{len(data)} in folder {folder}')
# Read the images, resize them, and store them in the list
for file_path in data:
image = cv2.imread(file_path)
# Corrected the resize function call
imageList = cv2.resize(image, (120, 120))
# Append the image array directly
training_List.append(imageList)
print(f'Total images in training set: {len(training_List)}')