Это система, которая используется для обнаружения кожных заболеваний, где я использовал два набора данных для обучения модели. Я столкнулся с вышеупомянутой ошибкой. Я приложил полный процесс выполнения, модель способна классифицировать изображения на основе обученной модели и обнаруживать болезнь, но я пытаюсь переобучить модель и сталкиваюсь с ошибкой.
Miniconda использовалась для выполнения, в котором была настроена новая среда.
Версия Tensorflow - 1.8, keras - 2.1.5, python 3.6 также появляется некоторое предупреждение
C:\Users\nisch\miniconda3\envs\tf1.8\lib\site-packages\tensorflow\python\framework\dtypes.py:528: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
2020-06-21 02:39:19.652112: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
Список установленных пакетов указан ниже
(tf1.8) C:\Users\nisch\Desktop\Dermis-master>conda list
# packages in environment at C:\Users\nisch\miniconda3\envs\tf1.8:
#
# Name Version Build Channel
absl-py 0.9.0 pypi_0 pypi
asgiref 3.2.7 pypi_0 pypi
astor 0.8.1 pypi_0 pypi
bleach 1.5.0 pypi_0 pypi
certifi 2020.4.5.1 py36_0
django 3.0.7 pypi_0 pypi
gast 0.3.3 pypi_0 pypi
grpcio 1.29.0 pypi_0 pypi
h5py 2.10.0 pypi_0 pypi
html5lib 0.9999999 pypi_0 pypi
image 1.5.32 pypi_0 pypi
importlib-metadata 1.6.1 pypi_0 pypi
keras 2.1.5 pypi_0 pypi
keras-applications 1.0.8 pypi_0 pypi
keras-preprocessing 1.1.2 pypi_0 pypi
markdown 3.2.2 pypi_0 pypi
numpy 1.18.5 pypi_0 pypi
pillow 7.1.2 pypi_0 pypi
pip 20.0.2 py36_3
protobuf 3.12.2 pypi_0 pypi
python 3.6.10 h9f7ef89_2
pytz 2020.1 pypi_0 pypi
pyyaml 5.3.1 pypi_0 pypi
scipy 1.4.1 pypi_0 pypi
setuptools 47.1.1 py36_0
six 1.15.0 pypi_0 pypi
sqlite 3.31.1 h2a8f88b_1
sqlparse 0.3.1 pypi_0 pypi
tensorboard 1.8.0 pypi_0 pypi
tensorflow 1.8.0 pypi_0 pypi
termcolor 1.1.0 pypi_0 pypi
vc 14.1 h0510ff6_4
vs2015_runtime 14.16.27012 hf0eaf9b_2
werkzeug 1.0.1 pypi_0 pypi
wheel 0.34.2 py36_0
wincertstore 0.2 py36h7fe50ca_0
zipp 3.1.0 pypi_0 pypi
zlib 1.2.11 h62dcd97_4
Это выполнение сценария python, упомянутого ниже
Когда выполняется код python
Ниже приведен сценарий python, запущенный
from tkinter import *
from tkinter.filedialog import askopenfilename
from PIL import Image, ImageTk
from keras.models import Sequential
from keras.models import model_from_json
from keras.layers.normalization import BatchNormalization
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout, Activation
from keras.preprocessing import image
from keras.preprocessing.image import ImageDataGenerator
import numpy as np
from PIL import ImageFile
import os
from keras.callbacks import EarlyStopping
from keras.callbacks import ModelCheckpoint
ImageFile.LOAD_TRUNCATED_IMAGES = True
class Interface():
def __init__(self):
try:
Interface.CarregarModelo(self)
except:
pass
self.root = Tk()
self.root.title("D E R M I S")
Button(self.root, text='Select a image', command = self.CaptureImage).grid(row=0,column=0, pady=5)
Button(self.root, text='Train', command = self.TrainModel, width=10, height=2).grid(row=0,column=1)
Button(self.root, text='Classify', command = self.ClassifyImage, width = 10, height = 2).grid(row=1, column = 1)
Button(self.root, text='Save model', command= self.SaveModel, width=10, height=2).grid(row=2, column=1)
self.root.mainloop()
def CaptureImage(self):
self.filename = askopenfilename()
self.image = Image.open(self.filename)
self.image = self.image.resize((400,400), Image.ANTIALIAS)
self.photo = ImageTk.PhotoImage(self.image)
label = Label(self.root, image = self.photo).grid(row=1,column = 0, padx = 15, pady = 5, rowspan= 3)
def TrainModel(self):
self.rede = Sequential()
self.rede.add(Conv2D(16, (2, 2), input_shape = (64,64,3), activation='relu'))
self.rede.add(MaxPooling2D(pool_size =(2, 2)))
self.rede.add(Conv2D(16, (2, 2), activation='relu'))
self.rede.add(MaxPooling2D(pool_size =(2, 2)))
self.rede.add(Conv2D(32, (2, 2), activation='relu'))
self.rede.add(MaxPooling2D(pool_size =(2, 2)))
self.rede.add(Dropout(0.5))
self.rede.add(Flatten())
self.rede.add(Dense(units= 16, activation='relu'))
self.rede.add(Dropout(0.4))
self.rede.add(Dense(units = 16, activation='relu'))
self.rede.add(Dropout(0.4))
self.rede.add(Dense(3))
self.rede.add(Activation('sigmoid'))
self.rede.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
EarlyStop = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=50)
ModelSaving = ModelCheckpoint('best_model.h5', monitor='val_accuracy', mode='max', verbose=1, save_best_only = True)
gerador_treinamento = ImageDataGenerator(rescale=1. / 255, rotation_range = 7, horizontal_flip = True, shear_range = 0.2, height_shift_range = 0.07, zoom_range = 0.2)
gerador_teste = ImageDataGenerator(rescale= 1. / 255, )
base_treinamento = gerador_treinamento.flow_from_directory('Dataset/Train', target_size = (64, 64), batch_size = 32, class_mode = 'categorical')
base_teste = gerador_teste.flow_from_directory('Dataset/Test', target_size = (64, 64), batch_size = 32, class_mode = 'categorical')
self.rede.fit_generator(base_treinamento, steps_per_epoch=50, epochs=100, validation_data = base_teste, validation_steps = 20, callbacks =[ModelSaving])
Interface.SalvarModelo(self)
def ClassifyImage(self):
imagem_teste = image.load_img(self.filename, target_size = (64,64))
imagem_teste = image.img_to_array(imagem_teste)
imagem_teste /= 255
imagem_teste = np.expand_dims(imagem_teste, axis = 0)
previsao = self.rede.predict(imagem_teste)
print(previsao)
resultado = np.argmax(previsao,axis=1)[0]
Classes = ['Sifilis','Melanoma','Pele normal']
Resultado = str(Classes[resultado])
Porcentagem = "{:.1f}%".format(previsao[0][resultado] * 100)
Label(self.root, text=Porcentagem).grid(row=2,column=0)
Label(self.root, text=Resultado).grid(row=1,column=0)
def SaveModel(self):
model = self.rede
model_json = model.to_json()
with open('best_model.json', 'w') as json_file:
json_file.write(model_json)
model.save_weights("best_model.h5")
print("Modelo saved successfuly")
def CarregarModelo(self):
json_file = open('best_model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
loaded_model.load_weights("best_model.h5")
print("Modelo changes sucessfuly")
loaded_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
self.rede = loaded_model
Interface()
Я новичок ie здесь пытаюсь исследовать, но я вижу, что я лажаю с весами, которые я принял за модель. Нужна помощь в этом разобраться. заранее спасибо.