news 2026/9/24 8:59:47

眼底疾病智能辅助诊断系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
眼底疾病智能辅助诊断系统

眼底疾病智能辅助诊断系统

1. 项目概述

本项目是一个基于深度学习的眼底疾病智能辅助诊断系统。系统利用计算机视觉技术(主要是 YOLOv11-cls 图像分类模型)对眼底相机拍摄的图像进行自动分析,识别包括正常眼底、糖尿病视网膜病变、青光眼、白内障、老年性黄斑变性(AMD)、高血压视网膜病变、高度近视及其他异常在内的多种眼部状况。

项目旨在为医生提供快速、客观的辅助诊断参考,减轻医疗工作负担,并帮助患者进行初步的眼健康筛查。


2. 技术栈

本项目采用了前后端分离的架构设计,使用了目前主流的开发技术:

后端 (Backend)

  • 语言: Python 3.12
  • 框架: Django 5.2.9 + Django REST Framework (DRF)
  • 深度学习框架: PyTorch, Ultralytics YOLO
  • 图像处理: OpenCV, Pillow (PIL)
  • 数据库: SQLite3 (开发环境) / 可扩展至 PostgreSQL 或 MySQL

前端 (Frontend)

  • 框架: Vue 3 (Composition API)
  • 构建工具: Vite
  • UI 组件库: Element Plus
  • 图表库: ECharts (用于数据可视化)
  • HTTP 客户端: Axios

3. 数据集与算法

3.1 数据集 (Dataset)

数据集来源于公开的眼科医疗影像数据库(如 ODIR 等),经过清洗和标注,主要包含以下类别:

  • Normal (N): 正常眼底
  • Diabetes (D): 糖尿病视网膜病变
  • Glaucoma (G): 青光眼
  • Cataract ©: 白内障
  • 以及 AMD, Hypertension, Myopia, Other 等补充类别。

图解: 上图展示了数据集中各类眼底疾病的样本数量分布情况。了解样本分布对于评估模型的平衡性和泛化能力至关重要。

3.2 核心算法与模型 (Algorithm & Model)

本项目主要使用的核心模型是YOLOv11-cls(You Only Look Once - Classification)。YOLO 系列通常以目标检测闻名,但其分类头(Classification Head)在特征提取方面同样表现优异,具有推理速度快、精度高的特点,非常适合实时性要求较高的医疗辅助诊断场景。

此外,系统架构还支持扩展其他经典卷积神经网络模型,如:

  • MobileNetV2: 轻量级网络,适合移动端部署。
  • EfficientNet-B3: 在参数量和精度之间取得了极佳的平衡。
训练过程可视化

在模型训练过程中,我们通过 Batch(批次)输入图像进行特征学习。

图解: 以上三张图片展示了模型训练过程中,输入到神经网络中的一个 Batch 的图像数据。这些图像经过了预处理(如 Resize、归一化),包含了对应的标签(如 Normal, Cataract 等),模型通过不断学习这些样本来更新权重。


4. 训练与评估 (Training & Evaluation)

4.1 训练结果曲线

图解: 该图展示了模型在训练过程中的各项指标变化曲线:

  • train/loss & val/loss: 训练集和验证集的损失值,随 Epoch 增加而下降,表明模型正在收敛。
  • metrics/accuracy_top1: Top-1 准确率,随训练进行逐渐上升,最终趋于稳定,代表模型预测最可能的类别与真实标签一致的概率。

4.2 混淆矩阵 (Confusion Matrix)

图解: 混淆矩阵是评估分类模型性能的重要工具。

  • 横轴: 预测类别 (Predicted)。
  • 纵轴: 真实类别 (True)。
  • 对角线: 颜色越深数值越大,表示模型预测正确的数量越多。
  • 非对角线: 表示模型预测错误的数量(误判)。例如,如果“Normal”行的“Diabetes”列有数值,说明将正常眼底误判为了糖尿病病变。

5. 数据库设计 (Database Design)

系统使用关系型数据库存储图像记录、诊断结果、训练日志和用户信息。以下是核心数据表的详细设计。

5.1 眼底图像记录表 (api_eyeimage)

用于存储用户上传的眼底图像及其诊断结果。

字段名类型长度非空 (Null)唯一 (Unique)说明
idInteger-NoYes主键,自增 ID
imageVarchar100NoNo图像文件的存储路径 (media/eye_images/…)
uploaded_atDateTime-NoNo记录创建/上传时间,自动生成
predicted_labelVarchar50YesNo模型预测的疾病名称 (如 ‘Diabetes’)
confidenceFloat-YesNo预测置信度 (0.0 - 1.0)
true_labelVarchar50YesNo真实标签 (用于后续人工校对或半监督学习)

5.2 训练日志表 (api_traininglog)

用于记录模型训练过程中的性能指标,用于前端可视化训练进度。

字段名类型长度非空 (Null)唯一 (Unique)说明
idInteger-NoYes主键,自增 ID
model_nameVarchar50NoNo模型名称 (如 ‘mobilenet_v2’)
epochInteger-NoNo当前训练轮次
lossFloat-NoNo损失值
accuracyFloat-NoNo准确率
timestampDateTime-NoNo日志记录时间

5.3 用户表 (auth_user)

Django 内置的用户认证表,用于管理管理员和普通用户。

字段名类型长度非空 (Null)唯一 (Unique)说明
idInteger-NoYes用户 ID
usernameVarchar150NoYes用户名,登录凭证
passwordVarchar128NoNo加密后的密码哈希值
emailVarchar254NoNo电子邮箱
is_superuserBoolean-NoNo是否为超级管理员
is_staffBoolean-NoNo是否允许登录后台
date_joinedDateTime-NoNo注册时间

6. 系统界面与功能 (System Interface & Functions)

6.1 登录与注册

功能:

  • 提供用户身份认证入口,保障系统数据安全。
  • 用户可以通过注册创建新账号,或直接登录进入系统。
  • 支持 Token 认证机制,登录成功后获取访问令牌。

6.2 系统仪表盘 (Dashboard)

功能:

  • 数据概览: 展示系统总样本数、已诊断数量等关键指标。
  • 疾病分布图: 使用 ECharts 饼图/柱状图直观展示当前数据库中各类眼底疾病的比例。
  • 快捷入口: 提供快速跳转至诊断、历史记录等核心功能的卡片。

6.3 智能诊断 (Model View)

功能:

  • 图像上传: 用户可上传本地眼底图像。
  • 实时预测: 后端模型实时处理图像,返回预测结果。
  • 结果展示:
    • 显示预测的疾病类别(如“糖网病变”)。
    • 显示置信度条(Confidence),直观反映模型的确信程度。
    • 提供针对性的医疗建议(Suggestion)。
  • 可视化: 同时展示模型训练的混淆矩阵和训练结果图,增强用户对模型性能的信任。

6.4 历史诊断记录

功能:

  • 记录归档: 自动保存每一次诊断的图像、结果、置信度和时间。
  • 多维筛选: 支持按疾病类型(如只看“青光眼”)、日期范围进行筛选。
  • 视图切换: 提供“列表视图”和“卡片视图”两种展示方式。
  • 数据管理: 支持单条删除和批量删除操作。

6.5 个人中心

功能:

  • 展示当前登录用户的基本信息(用户名、邮箱、角色)。
  • 提供修改密码功能。
  • 显示用户的最后登录时间。

6.6 用户管理 (管理员专属)

功能:

  • 仅管理员权限可见。
  • 用户列表: 查看系统中所有注册用户的信息。
  • 权限控制: 可以将普通用户提升为管理员,或禁用违规账号。
  • 账号维护: 支持删除用户或重置用户信息的后台操作。

7. 总结

本系统通过整合先进的深度学习算法与现代化的 Web 开发技术,构建了一个功能完备、交互友好的眼底疾病辅助诊断平台。从底层的数据库设计到前端的可视化交互,再到后端的模型推理,各环节紧密配合,能够有效地辅助医生进行筛查工作,具有较高的实用价值和扩展潜力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 18:08:27

Solidity入门(7)- 合约继承

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1. 为什么需要继承1.1 代码复用的问题1.2 继承的解决方案1.3 继承的实际应用场景2. 单继承2.1 单继承基础语法2.2 访问权限3. 多重继承3.1 多重继承基础3.2 C3线性化…

作者头像 李华
网站建设 2026/9/24 17:30:45

CTF比赛含金量高吗?(非常详细),零基础入门CTF,看这一篇就够了

文章目录 前言 关于我一、基础环境二、常用工具三、Web 安全四、加密解密五、密码爆破六、文件工具七、隐写图片八、隐写音频九、隐写取证十、逆向工具十一、Java 反编译十二、Python反编译十三、PWN二进制 前言 CTF(Capture The Flag)比赛在网络安全…

作者头像 李华
网站建设 2026/9/24 15:21:21

7.2 深度研究:利用大模型高级检索与分析能力

7.2 深度研究:利用大模型高级检索与分析能力 在上一节课中,我们学习了如何整合NotebookLM、大语言模型和Cursor等工具,构建完整的AI辅助开发工作流。本节课我们将深入探讨如何利用大模型的高级检索与分析能力,提升技术研究和方案设计的效率与质量。 大模型检索能力概述 …

作者头像 李华
网站建设 2026/9/23 6:22:15

restTemplate发送POST

HttpHeaders headers new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);// 2. 构建请求参数&#xff08;与文档示例完全一致&#xff09;Map<String, Object> requestBody new HashMap<>();requestBody.put("grant_type", "…

作者头像 李华
网站建设 2026/9/24 13:34:17

4、深入现实世界:包过滤网关配置指南

深入现实世界:包过滤网关配置指南 1. 从单机到网关 在之前的基础上,我们现在要进入更常规的领域——包过滤网关的设置。虽然本章的很多内容在单机设置中也可能有用,但我们现在的主要重点是搭建一个能处理常见网络服务的网关。 2. 简单网关与NAT 我们开始构建通常所说的防…

作者头像 李华