python基于轻量级卷积神经网络模型开发构建眼疾识别系统

常见的眼疾包括但不限于以下几种:

  1. 白内障:白内障是眼睛晶状体变得模糊或不透明,导致视力下降。它通常与年龄相关,但也可以由其他因素引起,如遗传、外伤、糖尿病等。

  2. 青光眼:青光眼是一组引起视神经损伤的眼病,常常由眼内压升高引起。如果不及时治疗,青光眼可能导致永久性视力损失。

  3. 视网膜疾病:视网膜是眼睛内的感光层,负责传输视觉信号到大脑。视网膜疾病包括视网膜脱落、黄斑变性等,可以导致中心视力丧失或视野缺损。

  4. 糖尿病视网膜病变:糖尿病患者可能会出现糖尿病视网膜病变,这是由于高血糖引起的视网膜损伤。如果不及时治疗,糖尿病视网膜病变可能导致严重的视力问题。

  5. 干眼症:干眼症是眼睛表面缺乏足够的泪液或泪液质量不良,导致眼睛干燥、疼痛、疲劳和视力模糊。

  6. 斜视:斜视是眼睛的位置或方向异常,导致双眼无法同时对准同一个物体。这可能会导致视觉模糊、眼睛疲劳和深度感知问题。

传统的眼疾大都是基于专业的医生和特殊的医疗设备来进行诊断分析的,而眼球的诊断拍摄图像本身就是可以用于构建识别模型的,这里本文的核心思想就是考虑来基于卷积神经网络模型来构建专用于眼疾诊断识别的辅助模型,首先看下效果图:

这里使用人工构建的数据集来模拟真实的医疗场景,共包含六种常见的眼疾类型,如下所示:

["cataract", "diabetic_retinopathy", "glaucoma", "high", "normal", "pathological"]

接下来依次简单看下各类眼疾的数据,如下所示:

【白内障】

【糖尿病视网膜病变】

【青光眼】

【高度近视】

【正常眼球】

【病理性近视】

对原始数据集特性分布进行可视化如下所示:

在我前面的文章中已经有不少相关的实践了,这里就不再详细的讲述整个处理流程了,为了便于使用,经过后面几个版本的迭代开发,这里我构建了一个轻量级 卷积神经网络模型开发训练框架,整体项目结构如下所示:

项目文件详情如下所示:

文件名称文件说明
data原始数据集目录
results结果目录
createDataset数据集处理模块
dataset.h5数据集
dataset.json数据集文件
guiAPP可视化系统模块
inference离线推理模块
labels.json标签类别清单
trainCNN模型开发模块
main.py总入口模块

之前有些伙伴反映,不同环境下容易出现代码或者是模块不匹配不兼容等问题,这里专门做了处理,最终形成了:

createDataset
trainCNN
inference
guiAPP

四个基础组件,我提供了完整的方法可供使用,只需要编写简单的业务代码即可实现完整的建模流程,main.py即为自己需要编写的文件,如下所示:

import os
import createDataset
import trainCNN#参数配置
dataDir="data/"
saveDir="results/"#构建数据集
createDataset.randomSplit(dataDir=dataDir)
createDataset.buildH5Dataset()#训练模型
if not os.path.exists(saveDir + "model.h5"):trainCNN.trainModel(saveDir=saveDir)#启动系统
import guiAPP

只需要不到10行的代码就可以构建属于自己的图像识别系统了,这里dataDir是自己的数据集目录,saveDir是自己指定的用于存储模型结果文件的目录,不需要自己创建,程序会自动创建,文完整的结果文件如下所示:

不仅会存储得到模型文件、权重等数据,还会对训练过程的loss和准确率进行自动的可视化,如下所示:

【准确率曲线】

【损失值曲线】

当然了,也可以自行绘制混淆矩阵,如下所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/138013.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hadoop】HDFS API 操作大全

🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助&#x1…

DC/DC开关电源学习笔记(十)Buck降压电路仿真及工程应用实例

(十)Buck降压电路仿真及工程应用实例 1. 仿真应用实例1.1 案例一1.2 案例二2. 工程应用实例2.1 数字DC/DC应用实例2.2 模拟DC/DC应用实例1. 仿真应用实例 1.1 案例一 仿真技术要求输入:输入电压30~90V,输出电压28V,输出电流最大10A,开关频率100KHz。我们按照参数极限工…

【Vue】使用vue-cli搭建SPA项目的路由,嵌套路由

一、SPA项目的构建 1、前期准备 我们的前期的准备是搭建好Node.js,测试: node -v npm -v2、利用Vue-cli来构建spa项目 2.1、什么是Vue-cli Vue CLI 是一个基于 Vue.js 的官方脚手架工具,用于自动生成vue.jswebpack的项目模板,它可以帮助开发者…

Qt(day5)

思维导图 将登录操作和数据库绑定 mywnd.h #ifndef MYWND_H #define MYWND_H#include <QMainWindow> #include<QLabel> #include<QLineEdit> #include<QPushButton> #include<QDebug> #include<QMessageBox> #include"second.h&qu…

零基础转行网络安全可以做什么工作,内附网络安全自学路线

一直在说网络安全行业好就业、薪资高、前景也好&#xff0c;但是大家对网络安全这个行业具体做什么工作可能还一知半解。所以今天来跟大家聊聊&#xff0c;网络安全学完可以找到什么样的工作&#xff0c;顺便把不同岗位的不同技术要求也说一下。 【点击文章末尾卡片&#xff0…

Spring Security 对请求的处理流程

文章目录 前言系统启动Spring Security 对请求的处理总结 前言 分析Spring Security的核心原理&#xff0c;可以从以下几个方面进行&#xff1a; 系统启动的时候Spring Security做了哪些事情&#xff1f;发起一次请求后Spring Security做了哪些事情&#xff1f; 系统启动 当…

Puppeteer基础入门、常见应用、利用谷歌插件编写Puppeteer脚本

前言 Puppeteer已经听说过很多次了&#xff0c;也见过一些与之相关的文章。但是一直没怎么研究过&#xff0c;现在来简单学习一下。 简介 Puppeteer 是一个 Node 库&#xff0c;它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。Puppeteer 默认以 headles…

【离网逆变器】离网逆变器型号由一个高频DC-DC升压转换器与全桥PI控制电压源逆变器级联组成、逆变器使用带LC滤波器的SPWM调制(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

HTML5+CSS3+JS小实例:鼠标控制飞机的飞行方向

实例:鼠标控制飞机的飞行方向 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" conten…

Vue项目前端代码防止被调试

项目背景 被安全测试针对了&#xff0c;总是调试我这不太安全的代码。前端代码深度混淆转成十六进制还不行&#xff0c;仍然找到加密方法&#xff0c;对后端数据进行解密。这次就修改了思路换种方法: 我承认阁下很强&#xff0c;但假如, 我是说假如打开控制台是空白页面&…

森林防火可视化智能监管与风险预警系统解决方案

一、方案背景 森林火灾是世界八大自然灾害之一&#xff0c;具有发生面广、突发性强、破坏性大、危险性高、处置扑救特别困难等特点&#xff0c;严重危及人民生命财产和森林资源安全&#xff0c;甚至引发生态灾难。有效预防和及时控制森林火灾是保护国家生态建设成果、推进生态…

eclipse svn插件安装

1.进入eclipse的help->Eclipse Marketplace,如下图所示&#xff1a; 2.输入“svn”,再按回车&#xff0c;如下图&#xff1a; 3.这我选择的是 Subversive,点击后面的“install”按钮&#xff0c;如下图 Eclipse 下连接 SVN 库有两种插件 —— Subclipse 与 Subversive &…

【MySQL基础】--- 约束

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、什么…

linux离线安装make

一、下载rpm包 https://pkgs.org/search/?qmake 二、拷贝至服务器 三、安装make rpm -ivh make-3.82-24.el7.x86_64.rpm四、查看是否安装成功 make -v

Docker部署单点Elasticsearch与Kibana

一 、 创建网络 因为需要部署kibana容器&#xff0c;因此需要让es和kibana容器互联。这里创建一个网络&#xff1a; docker network create es-net # 创建一个网络名称为:es-net 二 、拉取并加载镜像 方式一 docker pull elasticsearch:7.12.1 版本为elasticsearch的7…

【面试题】Js数组去重都有哪些方法?

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 表妹一键制作自己的五星红旗国庆头像&#xff0c;超好看 1. indexOf 定义&#xff1a; indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置…

60从零开始学Java之与数字相关的类有哪些?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们在解决实际问题时&#xff0c;会经常对数字、日期和系统设置进行处理&#xff0c;比如在我们的代…

期权如何交易?期权如何做模拟交易?

买卖期权的第一步就是要有期权账户&#xff0c;国内的期权品种有商品期权和ETF期权以及股指期权&#xff0c;每种的开户方式和要求都不同&#xff0c;下文为大家介绍期权如何交易&#xff1f;期权如何做模拟交易&#xff1f; 一、期权交易需要开立一个期权账户&#xff0c;可以…

Linux shell编程学习笔记1:关于shell的前世今生

一、什么是Shell&#xff1f; Shell英文单词的原意是“外壳”&#xff0c;在计算机领域专指在操作系统&#xff08;Operating System&#xff09;外层&#xff0c;提供用户界面&#xff08;User Interface&#xff09;的程序&#xff0c;主要负责将用户的命令&#xff08;Comma…

微信小程序与idea后端如何进行数据交互

交互使用的其实就是调用的req.get(url)方法 进行路径访问&#xff0c;你要先保证自己的springboot项目已经成功运行了&#xff1a; 如下&#xff1a; 如何交互的&#xff1f; 微信小程序&#xff1a;如下为index.js页面 在onLoad()事件中调用方法Project.findAllCities() 要…