Zrobiłem konwonuralną sieć neuronową za pomocą Pythona i Kerasa. Testuję moje modele na zestawach testowych z losową liczbą obrazów na klasę (1 folder zawierający X ilość obrazów). Jestem w stanie uzyskać ramkę danych z wyświetlaniem nazwy pliku obrazu i katalogu oraz przewidywania. Chciałbym usunąć katalog z nazwy pliku. Pokazuje losowe 350 obrazów / psów1.tif i chcę, żeby po prostu powiedzieć psy1.tif.

  #import my model
new_model = tf.keras.models.load_model('model folder')
#upload my test data
train_datagen = ImageDataGenerator(rescale=1./255)

test_batches = train_datagen.flow_from_directory(
        'folder containing random images',
        target_size=(224, 224),
        batch_size=10,
        classes = None,
        class_mode = None,
        shuffle = False)

#my prediction
predictions = new_model.predict(test_batches, steps=35, verbose=0)

#rounding my predctions
rounded_predictions = np.argmax(predictions, axis = -1)

#converting one hot encoded labels to categorical labels 
labels =["dog","cat","horse"]
names = [0,1,2]
labels_name = dict(zip(names, labels))

#joining them together
labels_name = dict((v,k) for k,v in labels_name.items())
predictions = [labels[k] for k in rounded_predictions]

#getting files names for the images
filenames= test_batches.filenames

#creating the dataframe
results=pd.DataFrame({"file":filenames,"pr":predictions})
-1
cdr 31 lipiec 2020, 17:00

1 odpowiedź

Najlepsza odpowiedź
#getting files names for the images
filenames= test_batches.filenames

filename_extr=[]
for i in filenames:
  filename_extr.append(os.path.basename(i))

#creating the dataframe
results=pd.DataFrame({"file":filename_extr,"pr":predictions})

Powinien to zrobić. (To (przy użyciu pętli) to tylko jeden sposób na to zrobić. Na pewno jest wiele innych sposobów.)

0
Stat Tistician 31 lipiec 2020, 14:40