当前位置: 首页 > wzjs >正文

长宁区网站建设开私域营销

长宁区网站建设开,私域营销,珠海响应式网站建设价格,外贸推广具体是做什么温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本文详细介绍了一基于深度卷积神经网络的猴痘分类识别系统。采用TensorFlow和Keras框架,通过卷积神经网络(CNN)进行模型训练和预测,利用迁移学习中的…

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 

1. 项目简介

        本文详细介绍了一基于深度卷积神经网络的猴痘分类识别系统。采用TensorFlow和Keras框架,通过卷积神经网络(CNN)进行模型训练和预测,利用迁移学习中的VGG16模型实现99%的分类准确率。系统以Web平台形式呈现,允许患者上传拍摄的病患处图片进行在线测试,系统将自动识别是否患有猴痘病毒。该系统不仅体现了深度学习在医学图像分类中的应用,同时为患者提供了一种方便而准确的自我诊断服务。

2. 卷积神经网络

卷积神经网络(CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。

卷积神经网络的基本结构由以下几个部分组成:输入层(input layer),卷积层(convolution layer),池化层(pooling layer),激活函数层和全连接层(full-connection layer)。下面以图像分类任务简单介绍一下卷积神经网络结构,具体结构如下图所示。

        核心函数包括:

1.models.Sequential():
Sequential()方法是一个容器,描述了神经网络的网络结构,在Sequential()的输入参数中描述从输入层到输出层的网络结构,可以在()中自定义搭建神经网络的网络结构,类比在桌面上拼积木的话,Sequential()相当于放置积木的桌面。

2.Conv2D():
卷积层,动态提取图片局部特征,
tf.keras.layers.Conv2D(
input_shape = (高, 宽, 通道数), #仅在第一层有
filters = 卷积核个数,对应输出的维数
kernel_size = 卷积核尺寸,(n,k),如果为一个整数则宽和高相同
strides = 卷积横向和纵向的步长,如果为一个整数则横向和纵向相同
padding = ‘SAME’ or ‘VALID’,valid:表示不够卷积核大小的块,则丢弃;same表示不够卷积核大小的块就补0,所以输出和输入形状相同
activation = ‘relu’ or ‘sigmoid’ or ‘tanh’ or ‘softmax’等
)

3.Dropout():
drop层,为了减少过拟合。Dropout的机制:在每次的神经网络的反向传播中,会随机选择一些神经元,设定其反向传播对应的参数为0,然后对于被改变后的神经网络进行反向传播,相当于在反向传播时有一些"神经元"被移除了(与L1正则化效果相同)
主要参数:dropout( rate=丢弃率) 设置为 0.1,则意味着会丢弃 10% 的神经元

4.MaxPooling2D():
layers.MaxPooling2D((2, 2))
主要参数:pool_size:2个整数的整数或元组/列表:(pool_height,pool_width),用于指定池窗口的大小;可以是单个整数,以指定所有空间维度的相同值.
平均池化层为AvgPooling2D()

5.Flatten(): 用于将输入层的数据压成一维的数据

6.Dense(): 全连接层
主要参数: layers.Dense(units, activation), #全连接层,特征进一步提取
units:输出的维度大小,即神经元的个数
activation:激活函数

7.model.summary(): 打印模型结构

3. 基于卷积神经网络的猴痘分类识别

3.1 猴痘图片数据集读取

train_loc = './datas/Train'
val_loc = './datas/Val'
test_loc = './datas/Test'# ......fig = plt.gcf()
fig.set_size_inches(10 , 10)
for idx , sample in enumerate(samples):sub = plt.subplot(4 , 3 , idx+1)img  = mpimg.imread(sample)plt.imshow(img)plt.show()

3.2 卷积神经网络模型构建

         利用Keras深度学习框架,搭建卷积神经网络模型:

model = tf.keras.models.Sequential([#data_augmentation,tf.keras.layers.Conv2D(16,(3,3), activation='relu', input_shape = (224,224,3)), ### 1st conv layertf.keras.layers.MaxPool2D((2,2), strides=(2, 2)),## 2nd conv layertf.keras.layers.Conv2D(32,(3,3), activation='relu'),tf.keras.layers.MaxPool2D((2,2), strides=(2, 2)),## 3rd conv layertf.keras.layers.Conv2D(64,(2,2), activation='relu'),tf.keras.layers.MaxPool2D((2,2), strides=(2, 2)),### 4th conv layertf.keras.layers.Conv2D(128,(2,2), activation='relu'),tf.keras.layers.MaxPool2D((2,2), strides=(2, 2)),### 5th conv layertf.keras.layers.Conv2D(32,(2,2), activation='relu'),tf.keras.layers.MaxPool2D((2,2), strides=(2, 2)),### flatten output and feed it into dense layertf.keras.layers.Flatten(),tf.keras.layers.Dense(32, activation='relu'),## output layertf.keras.layers.Dense(1, activation='sigmoid')]
)

3.3 模型训练和性能评估 

        对训练集完成 40个 epoch 的训练,同时设定 early stop 机制,并绘制模型训练损失函数和准确率曲线:

history = model.fit(train_dataset, batch_size=16,validation_data = validation_dataset,epochs=epochs,callbacks= [early_stopping_callback])print("Learning stoped on epoch:", early_stopping_callback.stopped_epoch)

         利用测试集进行模型性能评估,可以看出,测试集预测准确率为 92%,从损失函数曲线也可以看出,继续训练性能还会有所提升。

test_loss, test_acc = model.evaluate(test_dataset, verbose=2)
print('测试集预测准确率:', test_acc)
print('测试集平均损失:', test_loss)

8/8 - 0s - loss: 0.2652 - accuracy: 0.9211 - 356ms/epoch - 44ms/step
测试集预测准确率: 0.9210526347160339
测试集平均损失: 0.2651972472667694

4. 基于迁移学习的模型优化

4.1  VGG16 预训练模型

vgg16卷积神经网络总共有16层,13个卷积层和3个全连接层,第一次经过64个卷积核的两次卷积后,采用一次pooling,第二次经过两次128个卷积核卷积后,再采用pooling,再重复两次三个512个卷积核卷积后,再pooling,最后经过三次全连接。

        加载 VGG16 模型权重,并添加输出层:

# 加载模型参数
VGG16_model_con.load_weights('./vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5')
# 冻结前13层网络参数  保证加载的预训练参数不被改变
for layer in VGG16_model_con.layers[:13]:layer.trainable = False# 添加模型分类层(顶层)
VGG16_model_all = tf.keras.models.Sequential([VGG16_model_con,layers.Flatten(),                       layers.Dense(64, activation='relu'), layers.Dense(32, activation='relu'),layers.Dense(1, activation="sigmoid")               
])   
VGG16_model_all.summary()  # 打印网络结构

 4.2 模型训练和性能评估

history = VGG16_model_all.fit(train_dataset,validation_data=validation_dataset,epochs=epochs,callbacks=[checkpointer, earlystopper])# ......test_loss, test_acc = VGG16_model_all.evaluate(test_dataset, verbose=2)
print('测试集预测准确率:', test_acc)
print('测试集平均损失:', test_loss)

8/8 - 16s - loss: 5.6020e-04 - accuracy: 1.0000 - 16s/epoch - 2s/step
测试集预测准确率: 1.0
测试集平均损失: 0.0005602042656391859

         可以看出,利用VGG16进行迁移学习后,测试集的预测准确率达到了100%,效果非常好!

4.3 模型保存

        将训练好的模型权重保存为 h5 格式的权重文件:

save_id= 'vgg16_monkey_pox_best_model.h5' 
model_save_loc=os.path.join('./', save_id)
VGG16_model_all.save(model_save_loc)
print ('model was saved as ' , model_save_loc ) 

5. 猴痘分类识别系统

5.1 首页

5.2 猴痘病毒实时分类预测

6. 结论

        本文详细介绍了一基于深度卷积神经网络的猴痘分类识别系统。采用TensorFlow和Keras框架,通过卷积神经网络(CNN)进行模型训练和预测,利用迁移学习中的VGG16模型实现99%的分类准确率。系统以Web平台形式呈现,允许患者上传拍摄的病患处图片进行在线测试,系统将自动识别是否患有猴痘病毒。该系统不仅体现了深度学习在医学图像分类中的应用,同时为患者提供了一种方便而准确的自我诊断服务。

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。技术交流、源码获取认准下方 CSDN 官方提供的学长 QQ 名片 :)

精彩专栏推荐订阅:

1. Python 毕设精品实战案例
2. 自然语言处理 NLP 精品实战案例
3. 计算机视觉 CV 精品实战案例

http://www.dtcms.com/wzjs/68358.html

相关文章:

  • 怎么免费开网站栾城seo整站排名
  • 网站后续建设seo关键词推广公司
  • 邹平 建设项目 网站公示外贸网站平台哪个好
  • 深圳网站建设企业海南百度首页广告
  • 网站建设与管理培训活动总结关键词检测工具
  • 专门做瓷砖的网站电商网站设计论文
  • 做网站做电脑版还是手机版好网站制作免费
  • 昆明网站网站建设个人接外包的网站
  • 学做沪江网站要多久制作公司网站
  • 中国寰球工程公司广告优化师工作内容
  • 做360网站官网还是百度知道云优化软件
  • 郴州市第一人民医院官网搜索引擎优化学习
  • bim网站徐州seo网站推广
  • 用asp.net 做网站重庆森林
  • wordpress后台进全国seo搜索排名优化公司
  • 免费的网站认证济南seo关键词优化方案
  • 德州网络培训优化
  • pycharm 做网站合肥关键词排名技巧
  • 珠海pc网站建设bt兔子磁力搜索
  • 常用软件开发工具网站优化排名优化
  • 网站主题说明怎么写seo运营招聘
  • 广州正规网站建设公司廊坊自动seo
  • maka怎么做钓鱼网站760关键词排名查询
  • 最好用的建站模板磁力天堂
  • 个人类网站类网站百度网站链接
  • 国内网站排名外链购买
  • 自己怎么做网站的聚合页面小程序平台
  • 无极网站招聘信息网页设计费用报价
  • 网站建设的栏目规划东莞市民最新疫情
  • 网站的360度全景图片怎么做合肥seo排名公司