中药图像识别系统(APP端+服务器端)

中药图像识别系统(APP端+服务器端)

2022-09-05 0 482
资源编号 38086 最近更新 2022-09-05
¥ 0人民币 升级VIP
立即下载 注意事项
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 模板修改 源码安装

本期推荐的是中药图像识别系统。

中药图像识别系统(APP端+服务器端)

项目说明

中药识别系统主要采用APP端拍照上传的方式,构建卷积神经网络(CNN)对图像进行识别,具有识别效率高,准确度高的特点。APP端的功能包括但不限于拍照识别、中药问答(付费咨询)、检索查询、中药性状以及功效查看、方剂智能推荐【开发中】等;本系统包含APP端以及服务器端。

项目介绍

本项目包含六个模块:

  • medicine-app:APP端
  • medicine-server:服务器端
  • medicine-crawler:爬虫工程
  • medicine-model:卷积神经网络
  • medicine-util:公用工具类
  • medicine-dataset:数据集

技术简介

medicine-app APP端

Flutter开发

medicine-server服务器端工程

Gradle构建+SpringBoot框架

一键启动与部署文档数据库:MongoDB全文检索:Elasticsearch + IK分词器数据库

MySQL深度学习运行时架构:ONNX Runtime(ONNX Runtime is a cross-platform inference and training machine-learning accelerator)

medicine-crawler爬虫工程

爬虫主要用来爬取训练集以及中药的详细信息,包含但不限于:中药名称、中药形态、图片、 别名、英文名、配伍药方、功效与作用、临床应用、产地分布、药用部位、 性味归经、药理研究、主要成分、使用禁忌、采收加工、药材性状等信息。

数据结构

  • 中药一级分类信息
中药图像识别系统(APP端+服务器端)

  • 中药详细信息
中药图像识别系统(APP端+服务器端)

medicine-model卷积神经网络工程

  • Language: Python
  • 使用TensorFlow 深度学习框架,使用Keras会大幅缩减代码量

Xception函数定义:

def Xception(include_top=True,
    weights='imagenet',
    input_tensor=None,
    input_shape=None,
    pooling=None,
    classes=1000,
    **kwargs)
  
# 参数
# include_top:是否保留顶层的全连接网络
# weights:None代表随机初始化,即不加载预训练权重。'imagenet’代表加载预训练权重
# input_tensor:可填入Keras tensor作为模型的图像输入tensor
# input_shape:可选,仅当include_top=False有效,应为长为3的tuple,指明输入图片的shape,图片的宽高必须大于71,如(150,150,3)
# pooling:当include_top=False时,该参数指定了池化方式。None代表不池化,最后一个卷积层的输出为4D张量。‘avg’代表全局平均池化,‘max’代表全局最大值池化。
# classes:可选,图片分类的类别数,仅当include_top=True并且不加载预训练权重时可用

构建代码

设置Xception参数

迁移学习参数权重加载:xception_weights

# 设置输入图像的宽高以及通道数
img_size = (299, 299, 3)
  
base_model = keras.applications.xception.Xception(include_top=False,
                                                weights='..\\resources\\keras-model\\xception_weights_tf_dim_ordering_tf_kernels_notop.h5',
                                                input_shape=img_size,
                                                pooling='avg')
  
# 全连接层,使用softmax激活函数计算概率值,分类大小是628
model = keras.layers.Dense(628, activation='softmax', name='predictions')(base_model.output)
model = keras.Model(base_model.input, model)
  
# 锁定卷积层
for layer in base_model.layers:
  layer.trainable = False

全连接层训练(v1.0)

from base_model import model
 
# 设置训练集图片大小以及目录参数
img_size = (299, 299)
dataset_dir = '..\\dataset\\dataset'
img_save_to_dir = 'resources\\image-traing\\'
log_dir = 'resources\\train-log'
  
model_dir = 'resources\\keras-model\\'
 
# 使用数据增强
train_datagen = keras.preprocessing.image.ImageDataGenerator(
    rescale=1. / 255,
    shear_range=0.2,
    width_shift_range=0.4,
    height_shift_range=0.4,
    rotation_range=90,
    zoom_range=0.7,
    horizontal_flip=True,
    vertical_flip=True,
    preprocessing_function=keras.applications.xception.preprocess_input)
  
test_datagen = keras.preprocessing.image.ImageDataGenerator(
    preprocessing_function=keras.applications.xception.preprocess_input)
  
train_generator = train_datagen.flow_from_directory(
    dataset_dir,
    save_to_dir=img_save_to_dir,
    target_size=img_size,
    class_mode='categorical')
  
validation_generator = test_datagen.flow_from_directory(
    dataset_dir,
    save_to_dir=img_save_to_dir,
    target_size=img_size,
    class_mode='categorical')
  
# 早停法以及动态学习率设置
early_stop = EarlyStopping(monitor='val_loss', patience=13)
reduce_lr = ReduceLROnPlateau(monitor='val_loss', patience=7, mode='auto', factor=0.2)
tensorboard = keras.callbacks.tensorboard_v2.TensorBoard(log_dir=log_dir)
  
for layer in model.layers:
    layer.trainable = False
 
# 模型编译
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
  
history = model.fit_generator(train_generator,
                              steps_per_epoch=train_generator.samples // train_generator.batch_size,
                              epochs=100,
                              validation_data=validation_generator,
                              validation_steps=validation_generator.samples // validation_generator.batch_size,
                              callbacks=[early_stop, reduce_lr, tensorboard])
# 模型导出
model.save(model_dir + 'chinese_medicine_model_v1.0.h5')

依赖环境说明

依赖

版本

JDK

11+

Python

3.6

Gradle

6.5

TensorFlow

2.0

MongoDB

4.2.2

MySQL

8.0+

Spring Boot

2.2.2

Elasticsearch

7.4.2

IK分词器

7.4.2

ONNX Runtime

1.8.1

资源下载此资源为免费资源立即下载

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 免费源码 中药图像识别系统(APP端+服务器端) https://www.7claw.com/38086.html

分享免费的开源源码

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、七爪会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、七爪无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在七爪上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于七爪介入快速处理。
查看详情
  • 1、七爪作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与互站无关;无论卖家以何理由要求线下交易的,请联系管理举报。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务