как изменить мою нейронную сеть так, чтобы она могла распознавать любую картинку, а не только ту, название которой записано?
from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input, decode_predictions
from PIL import Image
import requests
from io import BytesIO
import numpy as np
model = VGG16(weights="imagenet")
img = image.load_img('3SSScAbpJXQ.jpg', target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
name='gg.png'
img1 = decode_predictions(preds,top=1)[0]
print(img1)
Вот сама нейронка, но её проблема в том, что она может распознавать только картинку, название которой ты запишешь в строке
img = image.load_img('3SSScAbpJXQ.jpg', target_size=(224, 224))
как этого избежать и автоматизировать процесс, дабы программа сама понимала имя картинки? Сразу распишу, что программа уже распознаёт объекты, проблема не в этом, она просто не может обработать объект, если не знает его имени, например, gg.jpg и так далее, я же хочу, чтобы имя каждого загружаемого объекта определялось и забивалось автоматически, без моего вмешательства в код
Ответы (1 шт):
Автор решения: NykSu
→ Ссылка
import os
def get_files_folder(folder):
res = []
if os.path.exists(folder) and os.path.isdir(folder):
files = os.listdir(folder)
for fl in files:
filenam = os.path.join(folder, fl)
if not os.path.isdir(filenam):
res.append(filenam)
return res
# получаем список файлов папки:
infolder = "D:/Test" # здесь папка откуда вы берете файлы для предсказания
outfolder = "D:/Out" # здесь файлы куда вы складываете файлы (если это нужно) с измененными названиями полученными в предикте.
file_list = get_files_folder(infolder)
for file in file_list:
img = image.load_img(file, target_size=(224, 224))
# ну и здесь далее делаем всё то, что нужно делать с этим файлом
# получаем предикт, если предикт выдаёт класс - собственно используем его, если кодированый клас,
# то сперва декодируем его например в переменную resname, то сохраняем так:
# image.save(os.path.join(outfolder, resname + '.png'), "PNG")
В общем с файлами тут работа простая. Выше всё объяснено. Что не понятно - пишите.