from keras.preprocessing.image import ImageDataGenerator, load_img, img_to_array, array_to_img
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras import backend as K
import numpy as np
import matplotlib.pyplot as plt
import glob, os, random
path = 'Micro_Organism'
os.path.join(path, '*/*.*')
# 使用 glob 模块批量匹配图像, * 代表匹配所有东西
img_list = glob.glob(os.path.join(path, '*/*.*'))
print('>>>图像数量:', len(img_list))
img_list[:5]
print(img_list[:5])
# 加载前面几张未感染的图像
for i, img_path in enumerate(img_list[10:16]):
img_plot = load_img(img_path) # 加载图像
arr = img_to_array(img_plot) # 将图像转换成数组
print(arr.shape) # 图像形状
plt.subplot(2, 3, i+1)
plt.imshow(img_plot)
plt.show()
# 统一定义图像像素的宽度和高度
img_width, img_height = 100, 100
# 定义训练集、验证集的图形路径(文件夹路径即可)
train_data_dir = 'Micro_Organism/'
validation_data_dir = 'Micro_Organism/'
# 模型训练的参数设置
nb_train_samples = 275
nb_validation_samples = 200
epochs = 20 # 迭代次数
batch_size = 64 # 每个批量观测数
# 图像输入维度设置
if K.image_data_format() == 'channels_first':
input_shape = (3, img_width, img_height)
else:
input_shape = (img_width, img_height, 3)
# 统一定义图像像素的宽度和高度
img_width, img_height = 100, 100
# 图像输入维度设置
if K.image_data_format() == 'channels_first':
input_shape = (3, img_width, img_height)
else:
input_shape = (img_width, img_height, 3)
train_datagen = ImageDataGenerator(rescale=1. / 255, # 重缩放因子
shear_range=0.2, # 剪切强度(以弧度逆时针方向剪切角度)
zoom_range=0.2, # 随机缩放范围
horizontal_flip=True # 随机水平翻转
)
train_generator = train_datagen.flow_from_directory(train_data_dir, # 训练数据的文件夹路径
target_size=(img_width, img_height), # 统一像素大小
batch_size=batch_size, # 每一批次的观测数
class_mode='categorical' # 指定分类模式,指定二分类
)
test_datagen = ImageDataGenerator(rescale=1. / 255,
shear_range=0.2, # 剪切强度(以弧度逆时针方向剪切角度)
zoom_range=0.2, # 随机缩放范围
horizontal_flip=True)# 随机水平翻转
validation_generator = test_datagen.flow_from_directory(validation_data_dir, # 验证集文件夹路径
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='categorical' # 二分类
)
model = Sequential()
# -----------------------------------------------------
# 输入层:第一层
# 添加第一个卷积层/最大池化层(必选)
model.add(Conv2D(filters=32, # 32 个过滤器
kernel_size=(3, 3), # 卷积核大小 3 x 3
input_shape=input_shape, # 图像输入维度
activation='relu')) # 'relu' 激活函数
model.add(MaxPooling2D(pool_size=(2, 2))) # 池化核大小 2 x 2
# ----------------------------------------------------
# 隐藏层:介于第一层和最后一层之间
# 添加第二个卷积层/最大池化层(可选)
model.add(Conv2D(filters=32, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
# 添加第三个卷积层/最大池化层(可选)
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
# 由于卷积层是 2D 空间,训练时需要将数据展平为 1D 空间
model.add(Flatten()) # 添加展平层(必选)
model.add(Dense(units=64, activation='relu')) # 添加全连接层(必选) 64 个神经元
model.add(Dropout(0.5)) # 添加丢弃层,防止过拟合
# ---------------------------------------------------
# 输出层:最后一层,神经元控制输出的维度,并指定分类激活函数 类别
model.add(Dense(units=8, activation='sigmoid')) # 指定分类激活函数
print(model.summary())
model.compile(loss='categorical_crossentropy', # 指定损失函数类型
optimizer='rmsprop', # 优化器
metrics=['accuracy']) # 评价指标
history = model.fit_generator(train_generator,
steps_per_epoch=nb_train_samples // batch_size,
epochs=epochs,
validation_data=validation_generator,
validation_steps=nb_validation_samples // batch_size
)
# 保存整个模型
model.save('model.h5')
# 加载模型
from keras.models import load_model
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import os
# 指定要列出子文件和子文件夹的目录路径
folder_path = 'Micro_Organism' # 替换为你要获取子文件和子文件夹的目录路径
# 获取指定路径下的所有文件和文件夹列表
contents = os.listdir(folder_path)
print('contents',contents)
model = load_model('model.h5')
img_path = '测试1.jpg' # img_width, img_height = 100, 100
img = image.load_img(img_path, target_size=(100, 100)) # 例如,针对VGG模型,resize图像为224x224
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x) # 预处理图像数据,例如针对VGG模型
# 对测试图像进行预测
predictions = model.predict(x)
print(predictions.shape)
print('predictions:',predictions)
predictions=predictions[0]
max_indices = [i for i, value in enumerate(predictions) if value == max(predictions)][0]
print(contents[max_indices])
import matplotlib.pyplot as plt
training_loss = history.history['loss']
test_loss = history.history['val_loss']
# 创建迭代数量
epoch_count = range(1, len(training_loss) + 1)
# 可视化损失历史
plt.plot(epoch_count, training_loss, 'r--')
plt.plot(epoch_count, test_loss, 'b-')
plt.legend(['Training Loss', 'Test Loss'])
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.savefig('epochs_loss.png')
plt.show()
plt.clf()
# train_acc = history.history['acc']
train_acc = history.history['accuracy']
test_acc = history.history['val_accuracy']
epoch_counts = range(1, len(train_acc)+1)
plt.plot(epoch_counts, train_acc, 'r--', marker='^')
plt.plot(epoch_counts, test_acc, linestyle='-', marker='o', color='y')
plt.title('accuracy condition')
plt.legend(['train_acc', 'test_acc'])
plt.xlabel('epochs')
plt.ylabel('acc')
plt.savefig('epochs_acc.png')
plt.show()
没有合适的资源?快使用搜索试试~ 我知道了~
医学图像细胞分类.rar
共792个文件
jpg:753个
png:25个
jpeg:11个
需积分: 5 3 下载量 104 浏览量
2023-12-28
22:48:10
上传
评论 1
收藏 100.49MB RAR 举报
温馨提示
医学图像细胞分类.rar医学图像细胞分类.rar
资源推荐
资源详情
资源评论
收起资源包目录
医学图像细胞分类.rar (792个子文件)
Image_63.jpeg 196KB
Image_92.jpeg 127KB
Image_134.jpeg 109KB
Image_99.jpeg 89KB
Image_20.jpeg 73KB
Image_96.JPEG 49KB
Image_80.jpeg 37KB
Image_39.jpeg 28KB
Image_31.jpeg 28KB
Image_29.jpeg 19KB
Image_51.jpeg 19KB
Image_176.jpg 5.23MB
Image_36.jpg 3.2MB
Image_36.jpg 2.99MB
Image_71.jpg 2.7MB
Image_94.jpg 1.53MB
Image_4.jpg 1.35MB
Image_13.JPG 1.25MB
Image_30.jpg 1.1MB
Image_202.jpg 1.06MB
Image_69.jpg 1.03MB
Image_71.jpg 986KB
Image_102.jpg 959KB
Image_253.jpg 954KB
Image_55.jpg 861KB
Image_41.jpg 729KB
Image_3.jpg 663KB
Image_102.jpg 613KB
Image_306.jpg 607KB
Image_67.jpg 591KB
Image_94.jpg 557KB
Image_19.jpg 549KB
Image_331.jpg 529KB
Image_19.jpg 513KB
Image_70.jpg 499KB
Image_11.jpg 492KB
Image_110.jpg 490KB
Image_83.jpg 477KB
Image_45.jpg 435KB
Image_46.JPG 420KB
Image_33.jpg 420KB
Image_82.jpg 419KB
Image_36.jpg 404KB
Image_17.jpg 400KB
Image_133.jpg 399KB
Image_101.jpg 376KB
Image_3.JPG 366KB
Image_12.jpg 361KB
Image_48.jpg 359KB
Image_51.jpg 329KB
Image_116.jpg 329KB
Image_65.jpg 325KB
Image_58.jpg 320KB
Image_102.jpg 313KB
Image_311.jpg 313KB
Image_6.jpg 299KB
Image_329.jpg 297KB
Image_51.jpg 295KB
Image_42.jpg 283KB
Image_47.jpg 281KB
Image_5.jpg 276KB
Image_144.jpg 273KB
Image_5.jpg 271KB
Image_160.jpg 270KB
Image_107.jpg 266KB
Image_21.jpg 263KB
Image_190.jpg 261KB
Image_28.jpg 257KB
Image_76.jpg 254KB
Image_63.jpg 249KB
Image_57.jpg 238KB
Image_17.jpg 237KB
Image_109.jpg 234KB
Image_109.jpg 233KB
Image_134.jpg 233KB
Image_161.jpg 230KB
Image_13.jpg 227KB
Image_39.jpg 227KB
Image_170.jpg 222KB
Image_54.jpg 217KB
Image_47.jpg 209KB
Image_71.jpg 203KB
Image_27.jpg 203KB
Image_152.jpg 201KB
Image_81.jpg 200KB
Image_66.jpg 198KB
Image_96.jpg 197KB
Image_116.jpg 194KB
Image_68.jpg 187KB
Image_27.jpg 186KB
Image_196.jpg 184KB
Image_18.jpg 184KB
Image_120.jpg 183KB
Image_93.jpg 182KB
Image_54.jpg 177KB
Image_43.jpg 177KB
Image_140.jpg 176KB
Image_71.jpg 175KB
Image_2.jpg 174KB
Image_53.jpg 174KB
共 792 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
mqdlff_python
- 粉丝: 1460
- 资源: 71
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功