人工智能|机器学习——基于机器学习的舌苔检测
代码下载:
基于深度学习的舌苔检测毕设留档.zip资源-CSDN文库
1 研究背景
1.1.研究背景与意义
目前随着人们生活水平的不断提高,对于中医主张的理念越来越认可,对中医的需求也越来越多。在诊断中,中医通过观察人的舌头的舌质、苔质等舌象特征,了解人体内的体质信息从而对症下药。
传统中医的舌诊主要依赖于医生的肉眼观察,仅仅通过这种人工诊断不但需要消耗大量人力,而且诊断的结果往往受医生经验和主观判断影响,甚至受到周围客观环境的影响(如:光照、温度等)[1],通过10位中医专家对两百多例患者进行舌象诊断,发现仅仅有9例相同,为了减少主观判断和客观环境的影响,利用现代计算机技术结合传统中医的理论和中医专家的经验,使中医的舌诊客观化、数字化成为了目前十分热门研究方向。
利用机器学习实现对舌苔精确快捷的检测,结合中医经验智能化的给出体质信息判别不仅是对计算机技术应用领域的一大拓展,也对传统中医的传承、推广、创新和现代化具有重大意义。利用现代计算机技术使传统中医的应用更加广泛,诊断更加方便快捷,能一定程度上缓解医师人力不足的问题,减少医疗成本,辅助医师提高诊断的准确性,乃至推动中医走向全世界。
1.2.舌苔检测研究现状
目前中医通过舌诊辨识人体体质信息,主要依据中医千年发展累积的经验,使得舌象诊断需要十分丰富的专业知识才能准确无误,如何利用计算机技术实现这一复杂的诊断也是目前研究中的重点和难点。目前利用计算机技术实现的智能化舌诊项目虽然辨识较为精准,但是往往需要在特定的环境或者需要十分专业的设备进行辨识分析,使用专业的设备和环境使得检测门槛较高,检测的成本也随之提升,对舌诊的推广有一定的影响。
1.3.课题任务内容
本课题是基于机器学习的舌苔检测,目的是利用机器学习的方法实现对舌苔进行检测,对舌象信息进行识别,最后再结合传统中医的理论辨识出人体体质信息。
具体实现内容如下:
(1)因为 所使用的舌象数据集图片较少,在开始训练数据集前先使用图像增强和生成对抗网络扩充数据集。将数据集图片进行翻转、平移、加盐、亮度调整、模糊处理等,能将数据集扩充数十倍,以满足数据量的需求。除此之外还使用了生成对抗网络生成新的舌象图片扩充数据集使数据集多样化。
(2)本次课题主要使用的是机器学习中的深度学习方法实现,使用的是深度学习中的efficientNet网络实现对舌象图片的图像分类,同时还使用了其他网络进行了对比实验。训练网络efficientNet模型时使用的在其他图像分类数据集上训练得到的训练参数efficientnetb0作为网络模型的预训练参数,可以较快的实现收敛且能得到良好的效果。分类网络实现了舌象中的苔色、舌色、齿痕、裂纹信息分别进行分类,分类准确率能达到90%以上。
(3)上传舌象图片后,运行分类网络输出的舌象判断结果并展示,使用舌象结果对照传统中医的舌象诊断经验,对人体体质信息进行判断并展示给用户。
本次课题利用现代计算机的技术对舌苔进行检测,并辨识人体体质信息,实现了普通用户借助个人计算机就能对舌苔进行分析以及体质辨识,对计算机技术的发展、创新以及推广有重大意义。
2 舌苔检测需求分析
3.1 可行性分析
3.1.1.技术可行性
如今,机器学习经过了半个世纪的发展,利用机器学习解决现实中各行各业的需求已经变得十分的成熟和可靠,而传统中医的数千年发展积累下来的舌诊经验在观察舌象辨识人体体质的方面也已经十分准确。基于成熟的中医技术和新兴饿计算机技术,利用机器学习完成舌苔检测也变得较为容易的实现,所以在技术上是可行的。
3.1.2.经济可行性
市面上利用计算机技术实现的智能化舌诊项目虽然辨识较为精准,但是往往需要在特定的环境或者需要十分专业的设备进行辨识分析,使用专业的设备和环境使得检测门槛较高,专业性很强,检测的成本也随之提升。本课题的是利用机器学习开源库开发的,没有硬件资源的花费开销的舌苔检测项目,在普通的计算机上就可以运行,所以在经济上是可行的。
3.1.3.文化可行性
中医药学包含着中华民族几千年的健康养生理念及其实践经验,是中华文明的一个瑰宝,凝聚着中国人民和中华民族的博大智慧,向世界推广中医药学也是传播中华文化的一环[5]。利用机器学习实现对舌苔精确快捷的检测,结合中医经验智能化的给出体质信息判别。这不仅仅是对计算机技术应用领域的一大拓展,也对传统中医的传承、推广、创新和现代化具有重大意义。利用现代计算机技术使传统中医的应用更加广泛,推动中医文化走向全世界。所以在文化上是可行的。
3.1.4.社会可行性
本次课题利用现代计算机的技术对舌苔进行检测,并辨识人体体质信息,实现了普通无需掌握专业的中医舌诊知识也能对自己舌苔进行分析,了解自身体质信息,有利于普通人更多的享受到中医的作用。在配合医生进行诊断时,也能减少医生的诊病人工成本,对社会是有益的,具备社会可行性。
3.2 功能行需求
3.2.1.数据集构造
数据集是深度学习的灵魂部分,在深度学习中,数据集的质量越高、数量越多,训练出来的模型就能拥有更高的准确率和泛化的能力,本课题需要对高质量的舌象进行精确的分类,制作成舌象数据集。由于舌象的一些特征类型是不冲突的,一张舌象中包含多种特征类型(如舌色、苔色、齿痕和裂纹),所以数据集的制作应当按照不同舌象特征分别制作数据集,例如按舌色特征制作数据集中可以分成淡红舌,淡白舌和深红舌三类;而按照苔色特征制作数据集中可以分成白苔,黄苔和无苔三类。原始的舌象数据图片不足,需要利用图像增强和生成对抗网络进行扩充。
3.2.2.舌苔检测
舌苔检测模块能利用舌象数据集训练网络模型,并能够用训练完成的网络对输入图像的舌象特征做图像分类,准确的识别出舌象中所含有的舌象特征信息,并将预测的结果输出。由于舌象的一些特征类型不冲突,一张舌象中包含多种特征类型,所以需要对几类舌象特征数据集进行分别训练,分别保存不同的训练权重参数,用于检测不同的舌象特征。
3.2.3.体质辨识
当普通用户上传舌象照片时,通过对舌苔检测模块给出的舌象特征信息结合汇总,对照舌象特征结构和体质对应图,辨识该舌象所反映出的人体体质信息,并能够用用户交互页面将其展示出来,界面能够简单易操作,尽可能满足更大的用户群体的需要。
3.3 非功能性需求
本课题非功能性需求主要是对计算机性能的需求,性能越高模型训练时的速度越快。硬件要求:计算机要有1.0 GHz以上CPU,512M内存,1G硬盘,独立显卡;软件方面:对于系统软件方面,操作系统最优为Windows 10 操作系统。开发语言用的是Python。
3 舌苔检测网络设计与实现
3.1 网络模型介绍
EffcientNet是一个由谷歌团队研究的卷积神经网络,适用于图像分类领域。在2019年发布时,在ImageNet top-1上达到了当时的最高精确度84.3%,在参数数量方面也比当时其他的模型要少很多。是一个比较火的卷积神经网络模型,性能也十分优秀。
3.2 网络模型分析
网络通过混合参数对传统的卷积网络进行优化,同时改变网络的宽度、深度和输入图像大小提升网络性能,相比于传统的卷积神经网络,EffcientNet在效率上有一定优势。扩展网络深度今日也被广泛应用于神经网络的训练中,深度网络可以提取更复杂的特征值,以帮助提高对目标数据集的学习能力。然而,深层网络往往会出现消失梯度的问题。增加网络的宽能够使特征图获得更多通道数,同样得到广泛应用。通过在每个通道上进行卷积运算,这使得模型更具表现力。宽度大能让网络更好的学习各种特性,这使得训练网络变得容易。然而,也正是因为网络宽度足够导致网络深度是不够的。即使提取的特征丰富,但层次却不高,可以通过网络分辨率,丰富网络的感知区域来学习更加多的信息,网络的性能也可以得到提高。
综上所述,对网络的宽度、深度和输入图像分辨率的缩放需要找到一个合适的度,对其中的一方面进行盲目的缩放并不能达到最优的效果,EffcientNet则是非常成功的协调了上述三个方面的缩放,优化了网络性能。



3.3 网络模型搭建及功能实现
本课题是基于机器学习的舌苔检测,其实现主要包括以下几大模块:网络模型模块、数据模块、训练模块、检测模块、体质辨识模块。开发环境主要采用了PyCharm+Python3.6,工作环境主要为Windows10操作系统。舌苔检测程序设计的简要结构如图5.3所示:

本课题使用的是EffcientNet网络中的EffcientNet-B0网络模型,使用Python中的Pytorch库中的torch.nn方法实现神经网络的搭建,网络模型主要分为四个小模块:网络主模块、卷积+BN模块、注意力机制模块、MBConv模块。三个功能模块分别实现了上一节介绍的EffcientNet网络模型中的主要功能,主模块整合各个功能部分,实现EffcientNet-B0卷积神经网络的功能。
数据处理的主要功能是读取并处理舌象数据集,利用python中的os库中的path方法,遍历数据集目录,将舌象数据集中的80%划分为训练集输入到网络中进行训练,20%划分为验证集验证网络训练后的准确率,并在数据集图像训练前对输入图像进行预处理:使用torchvision中transforms的RandomResizedCrop方法,随机对数据图像裁剪为不同的大小和纵横比,然后将裁剪后的图像缩放到EffcientNet-B0网络输入图像的指定大小。使用transforms中Normalize方法对输入舌象数据集的数据集进行归一化操作。
训练模块的主要功能是使用数据处理模块读取舌象数据集,再调用网络模型模块中进行训练。将每一个batch的数据作为一个step,在训练模块的每一个step训练流程如下图5.4。

训练模块中预留有多个参数设置:学习率(lr)、批大小(batch_size)、迭代次数(epochs)、是否导入预训练权重、normalize参数等等,从而能在对比实验中不断调整参数,优化完拿过来模型的效果。
每一轮训练后都使用验证集对模型进行验证,并将训练和验证中得到的训练loss曲线以及验证准确率利用可视化工具Tensorboard在网页中展示出来,更直观的观察模型的训练情况,示例如图5.5,利用实验中对比模型优劣采用更加合适的训练参数设置。在完成训练后的将参数权重进行保存。

检测模块的主要功能是将待检测舌象图片输入后,将图像大小调整至224*224,利用训练模块当中保存好的训练权重参数,使用torch中的no_grad()方法对舌象图片进行分类并能预测其结果,给出各项分类预测的概率,如图5.6,并将预测概率最高的分类输出给体质辨识模块。

体质辨识界面模块的主要功能是利用用户交互界面,获取用户上传的个人舌象图片,并将其送到检测模块中检测,得到舌象特征信息,对照舌象特征结构和体质对应图,辨识该舌象所反映出的人体体质信息,并将其展示出来,体质辨识界面如图5.7所示,该模块采用pyqt5库实现了用户的交互功能。简单易操作,方便普通用户能够更方便的对舌象进行检测。

相关文章:
人工智能|机器学习——基于机器学习的舌苔检测
代码下载: 基于深度学习的舌苔检测毕设留档.zip资源-CSDN文库 1 研究背景 1.1.研究背景与意义 目前随着人们生活水平的不断提高,对于中医主张的理念越来越认可,对中医的需求也越来越多。在诊断中,中医通过观察人的舌头的舌质、苔…...
SQL查询转化为 Elasticsearch 查询
使用SQL 转化为查询 Elasticsearch 支持 sql 语句转化为 elasticsearch 的 查询语句 第一步: 打开在线转换工具的网页,进入工具页面 第二步:在指定的输入框中输入需要转换的 sql 语句。 您学会了这么简单的办法...
目标检测教程视频指南大全
魔鬼面具-哔哩哔哩视频指南 必看干货系列(建议搞深度学习的小伙伴都看看,特别是图像相关) 深度学习常见实验问题与实验技巧(适用于所有模型,小白初学者必看!)还在迷茫深度学习中的改进实验应该从哪里开始改起的同学,一定要进来看看了!用自身…...
【Linux取经路】文件系统之重定向的实现原理
文章目录 一、再来理解重定向1.1 输出重定向效果演示1.2 重定向的原理1.3 dup21.4 输入重定向效果演示1.5 输入重定向代码实现 二、再来理解标准输出和标准错误2.1 同时对标准输出和标准错误进行重定向2.2 将标准输出和标准错误重定向到同一个文件 三、再看一切皆文件四、结语 …...
JAVA设计模式结构型模式
一、前言 java设计模式主要分为创建型模式,结构型模式和行为型模式。上一篇主要总结了行为型设计模式,本章总结,结构型模式。像创建型模式就不写了,比较简单。大概知道是工厂模式和建造者模式,原型模式就行࿰…...
第4讲引入JWT前后端交互
引入JWT前后端交互 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519); JWT就是一段字符串,用来进行用户身份认证的凭证,该字符串分成三段【头部、载荷、签证】 后端接口测试&…...
基于Java的车辆租赁管理平台/租车系统
功能介绍 平台采用B/S结构,后端采用主流的Springboot框架进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能包括:首页、车辆详情、车辆预订、用户中心模块。后台功能包括:车辆管理、分类管理…...
如何升级至ChatGPT Plus:快速指南,ChatGPT的秘密武器GPT4.0是什么?
提到 ChatGPT。想必大家都有所耳闻。自从 2022 年上线以来,就受到国内外狂热的追捧和青睐,上线2个月,月活突破1个亿!!! 而且还在持续上涨中。因为有很多人都在使用 ChatGPT 。无论是各大头条、抖音等 App、…...
【天衍系列 05】Flink集成KafkaSink组件:实现流式数据的可靠传输 高效协同
文章目录 01 KafkaSink 版本&导言02 KafkaSink 基本概念03 KafkaSink 工作原理1.初始化连接2.定义序列化模式3.创建KafkaSink算子4.创建数据源5.将数据流添加到KafkaSink6.内部工作机制 04 KafkaSink参数配置05 KafkaSink 应用依赖06 KafkaSink 快速入门6.1 包结构6.2 项目…...
深度学习之pytorch实现逻辑斯蒂回归
深度学习之pytorch实现逻辑斯蒂回归 解决的问题数学公式logiatic函数损失值 代码与线性回归代码的区别数据损失值构造回归的函数 结果分析 解决的问题 logistic 适用于分类问题,这里案例( y为0和1 ,0和 1 分别代表一类) 于解决二分类…...
有事休假店铺无人看守怎么办?智能远程视频监控系统保卫店铺安全
在春节期间,很多自营店主也得到了久违的假期,虽然很多店主都是长期在店铺中看守,但遇到春节这样的日子,多数人还是选择回乡休假。面对店主休假或有事不能管理店铺时,传统的监控虽然可以做到单一的监控,却仍…...
酷开科技 | 酷开系统壁纸模式,让过年更有氛围感!
在阵阵爆竹声中,家家户户都沉浸在浓浓的年味中。过年,是团圆,是温暖。团团圆圆的日子里,仪式感不可少,换上一张喜气洋洋的电视壁纸吧,寓意幸福一年又一年。打开酷开系统壁纸模式挑选一张年味十足的壁纸&…...
Docker中部署flink集群的两种方式
文章目录 一、概述二、准备工作三、方式一四、方式二1、准备配置文件2、执行 docker 命令 一、概述 本文将通过 2 种方式在 docker 中部署 flink standalone 集群,集群中共有 4 个节点,分别是 1 个 jobManager 节点和 3 个 taskManager 节点。方式一能快…...
八、计算机视觉-边界填充
文章目录 前言一、原理二、具体的实现 前言 在Python中使用OpenCV进行边界填充(也称为zero padding)是一种常见的图像处理操作,通常用于在图像周围添加额外的像素以便进行卷积或其他操作。下面是使用OpenCV进行边界填充的基本原理和方法 一…...
ffmpeg 硬件加速介绍
基于OS的硬件加速 Windows 参考[2],基于windows的硬件加速都是基于DirectX API,我们可以用ffmpeg -hwaccels查看当前环境支持的硬件加速接口,如下为windows上的执行ffmpeg --hwaccels的结果。 在linux上执行ffmpeg -hwaccels的结果如下: 可以看到windows上支持的硬件加速…...
【QT+QGIS跨平台编译】之三十九:【Exiv2+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、Exiv2介绍二、文件下载三、文件分析四、pro文件4.1 exiv2-xmp4.2 exiv2lib_int4.3 exiv2lib五、编译实践一、Exiv2介绍 Exiv2是一个开源的C++库,用于读取、编辑和写入图片和视频文件的元数据。它可以处理各种类型的元数据,包括EXIF、IPTC、XMP等。 元数据是与…...
术业有专攻!三防加固平板助力工业起飞
在日常使用中的商业电脑比较追求时效性,以市场定位做标准,内部元件只需满足一般要求就行,使用寿命比较短。而三防平板电脑是主要运用在复杂、恶劣的环境下所以在需求方面较高,需要保证产品在恶劣条件下正常使用,满足行业领域的需求…...
适合tiktok运营的云手机需要满足什么条件?
TikTok作为一款全球热门的社交媒体平台,具有无限的市场潜力。然而,卖家在运营过程中常常会面临到视频0播、账号被降权、限流等问题,甚至可能因为多人同时使用一个IP而导致封号的风险。为了规避这些问题,越来越多的卖家将目光投向了…...
微服务-微服务Nacos配置中心
1.1 配置中心架构 1.2 Config Client源码分析 配置中心核心接口ConfigService public class ConfigServerDemo {public static void main(String[] args) throws NacosException, InterruptedException {String serverAddr "localhost";String dataId "naco…...
配置Python环境及job运行的虚拟环境
1、配置Jenkins的Python环境:Manage Jnekins-Global Tool Configuration-Python 2、安装pyenv插件 此插件会给每个job都创建一个虚拟Python环境 安装后,在job config-build中选择 virtualenv builder build job的时候会自动在/opt/jenkins(node主机的…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
