0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于深度学习算法和哪吒开发板构建黄斑病变检测模型

英特尔物联网 来源:英特尔物联网 2024-12-09 16:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:陈佳聪

1背景介绍

黄斑病,作为一组影响视网膜黄斑区的病理性改变,是眼科常见的可致盲疾病之一。黄斑区是人眼视力最敏感的区域,主要负责精细视觉及色觉等视功能。正常情况下,外界物体光线进入眼内,投影在黄斑区中心凹处,形成清晰精确的像。一旦黄斑区发生病变,患者可表现为中心视力下降、视物扭曲变形、视野中心暗点等症状。部分黄斑病变可致盲,极大影响患者的生活质量。

黄斑病变包括多种类型,其中老年性黄斑变性(AMD)是最常见的一种,随着年龄的增长,其发病率逐渐增高。据国内患病率调查结果显示,50岁以上人群年龄相关性黄斑变性患病率为15.5%,80岁以上人群患病率高达23.5%。据此估计,我国目前年龄相关性黄斑变性患者约有数百万之多。此外,一些全身慢性疾病如糖尿病、高血压、动脉粥样硬化等也可能导致黄斑病变。黄斑病变不仅影响视力,还严重影响患者的日常生活和社会参与,给患者及其家庭带来沉重的负担。

为此本项目利用黄斑区眼底彩照及OCT扫描图像,构建基于深度学习算法的黄斑病变检测模型用于常见9类黄斑区病变的检测,为此深度学习模型在分类眼底彩照和OCT图像时都展现出了高准确度、敏感度及特异度,基于OCT图像的检测效果略优于眼底彩照。

2系统设计

2.1硬件设计

哪吒开发板搭载英特尔 N97处理器,配备8GB LPDDR5内存和64GB eMMC存储空间,支持Windows、Linux两个操作系统,支持高分辨率显示,提供HDMI接口使检测结果能更好的展示。

首先本项目使用ubuntu 20.04 LTS系统进行项目部署:

2.2环境搭建

首先部署本系统,因为哪吒开发板出厂并不带系统,需要我们进行烧录。

进入官网:

75fe0c28-b3b7-11ef-93f3-92fbcf53809c.png

ubuntu下载

接着进行openvino 配置:

首先进行基础依赖安装:

sudo apt-get install libprotobuf-dev protobuf-compiler

输出回显中碰到Do you want to continue? [Y/n] y

接着进行OpenVino下载,官网中给出了许多安装方式,大家可自行安装。

760816fa-b3b7-11ef-93f3-92fbcf53809c.png

官网openvino下载

接下来进行数据获取,本项目利用messidor 数据库

下载地址:https://www.adcis.net/en/third-party/messidor/

接下来进行模型准备:Tensorflow转ONNX模型。

首先我们进行tf2onnx的安装pip install tf2onnx onnx,然后我们使用以下代码将tensorflow转为ONNX:

import tensorflow as tf
from tf2onnx import convert, utils
from tf2onnx.tfonnx import process_tf_graph
from onnx import shape_inference
def convert_tf_to_onnx(tf_model_path, onnx_model_path):
  # 导入 TensorFlow 模型
  with tf.io.gfile.GFile(tf_model_path, "rb") as f:
    graph_def = tf.compat.v1.GraphDef()
    graph_def.ParseFromString(f.read())
  # 创建一个 TensorFlow 图
  with tf.Graph().as_default() as tf_graph:
    tf.import_graph_def(graph_def, name="")
  # 使用 tf2onnx 转换模型
  with tf2onnx.utils.make_tf_graph(tf_graph) as tfg:
    # 获取输入和输出节点
    input_names = ["input_0"] # 根据你的模型修改输入节点名称
    output_names = ["output_0"] # 根据你的模型修改输出节点名称
    # 转换模型
    model_proto, _ = convert.from_graph_def(
      tf_graph.as_graph_def(), input_names, output_names, opset=12
    )
  # 应用 ONNX 形状推断
  inferred_model = shape_inference.infer_shapes(model_proto)
  # 保存 ONNX 模型
  with open(onnx_model_path, "wb") as f:
    f.write(inferred_model.SerializeToString())
  print(f"ONNX model saved to {onnx_model_path}")
# TensorFlow 模型路径
tf_model_path = "path/to/your/tf_model.pb"
# ONNX 模型保存路径
onnx_model_path = "path/to/your/onnx_model.onnx"
# 转换模型
convert_tf_to_onnx(tf_model_path, onnx_model_path)
接着我们进行onnxruntime的安装
pip install onnx onnxruntime
接着进行模型验证,我们可以使用以下脚本(脚本上面是使用图片作为输入,大家可以自行转换)
import onnx
import onnxruntime as ort
import numpy as np
from PIL import Image
import io
def preprocess_image(image_path, target_size=(224, 224)):
  """预处理图像以匹配模型输入"""
  image = Image.open(image_path).convert('RGB')
  image = image.resize(target_size)
  image_array = np.array(image).astype(np.float32) / 255.0
  image_array = np.transpose(image_array, (2, 0, 1)) # 转换为 CHW 格式
  image_array = np.expand_dims(image_array, axis=0) # 添加批次维度
  return image_array
def load_onnx_model(model_path):
  """加载 ONNX 模型"""
  onnx_model = onnx.load(model_path)
  onnx.checker.check_model(onnx_model)
  return onnx_model
def run_onnx_model(onnx_model_path, image_path):
  """运行 ONNX 模型并打印输出"""
  # 加载 ONNX 模型
  onnx_model = load_onnx_model(onnx_model_path)
  session = ort.InferenceSession(onnx_model_path)
  # 预处理图像
  input_data = preprocess_image(image_path)
  # 获取输入和输出名称
  input_name = session.get_inputs()[0].name
  output_name = session.get_outputs()[0].name
  # 运行模型
  outputs = session.run([output_name], {input_name: input_data})
  # 打印输出
  print("Model Output:", outputs[0])
# ONNX 模型路径
onnx_model_path = "path/to/your/onnx_model.onnx"
# 输入图像路径
image_path = "path/to/your/input_image.jpg"
# 运行验证
run_onnx_model(onnx_model_path, image_path)

接着使用openvino中的mo_onnx.py将onnx转为IR中间模型

python mo_onnx.py --input_model 【.onnx模型路径】 --output_dir 【目标路径】

接着就可以进行部署

76161552-b3b7-11ef-93f3-92fbcf53809c.png

部署页面

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20148

    浏览量

    247144
  • 英特尔
    +关注

    关注

    61

    文章

    10275

    浏览量

    179308
  • 开发板
    +关注

    关注

    25

    文章

    6123

    浏览量

    113346
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123907

原文标题:开发者实战|深度学习+哪吒开发板,让黄斑病变远离我们的眼睛

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Nanopi深度学习之路(1)深度学习框架分析

    学习,也就是现在最流行的深度学习领域,关注论坛的朋友应该看到了,开发板试用活动中有【NanoPi K1 Plus试用】的申请,介绍中NanopiK1plus的高大上优点之一就是“可运行
    发表于 06-04 22:32

    【HarmonyOS HiSpark AI Camera】基于深度学习的目标检测系统设计

    项目名称:基于深度学习的目标检测系统设计试用计划:尝试在硬件平台实现对Yolo卷积神经网络的加速运算,期望提出的方法能够使目标检测技术更便捷,运用领域更广泛。针对课题的研究一是研究基于
    发表于 09-25 10:11

    labview深度学习PCB插件光学检测

    `labview在检测PCBA插件的错、漏、反等缺陷中的应用检测原理通过高精度彩色工业相机不停板实时抓取板卡图像,采取卷积神经网络算法处理图像,智能判定元器件不良。采用最新的深度
    发表于 07-13 15:27

    深度学习在医学图像分割与病变识别中的应用实战

    帮助解释模型的决策过程。 总结起来,基于深度学习的医学图像分割与病变识别是医疗领域中的重要应用之一。通过适当的数据准备、模型设计和性能评估,
    发表于 09-04 11:11

    基于深度学习的疲劳驾驶检测算法模型

    为实现复杂驾驶环境下驾驶人员疲劳状态识别与预警,提出基于深度学习的疲劳驾驶检测算法。利用基于 shuffle- channel思想的 MTCNN模型
    发表于 03-30 09:17 25次下载
    基于<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的疲劳驾驶<b class='flag-5'>检测算法</b>及<b class='flag-5'>模型</b>

    什么是深度学习算法深度学习算法的应用

    什么是深度学习算法深度学习算法的应用 深度
    的头像 发表于 08-17 16:03 3004次阅读

    20210520原理图全志D1-H哪吒开发板

    20210520原理图D1-H哪吒开发板
    发表于 03-21 09:50 20次下载

    20210520位号图全志D1-H哪吒开发板

    20210520位号图D1-H哪吒开发板
    发表于 03-21 09:51 2次下载

    20210520定位图全志D1哪吒开发板

    20210520定位图D1哪吒开发板
    发表于 03-21 09:51 2次下载

    全志20210520定位图D1哪吒开发板

    全志20210520定位图D1哪吒开发板
    发表于 10-19 15:11 0次下载

    全志20210520位号图D1-H哪吒开发板

    全志20210520位号图D1-H哪吒开发板
    发表于 10-19 15:11 1次下载

    全志20210520原理图D1-H哪吒开发板

    全志20210520原理图D1-H哪吒开发板
    发表于 10-19 15:11 7次下载

    深度学习模型训练过程详解

    详细介绍深度学习模型训练的全过程,包括数据预处理、模型构建、损失函数定义、优化算法选择、训练过程
    的头像 发表于 07-01 16:13 3783次阅读

    OpenVINO™ C++ 在哪吒开发板上推理 Transformer 模型开发者实战

    信用卡大小(85x56mm)的开发板-『哪吒』(Nezha)为核心,『哪吒』采用IntelN97处理器(AlderLake-N),最大睿频3.6GHz,Intel
    的头像 发表于 09-28 08:01 1154次阅读
    OpenVINO™ C++ 在<b class='flag-5'>哪吒</b><b class='flag-5'>开发板</b>上推理 Transformer <b class='flag-5'>模型</b>|<b class='flag-5'>开发</b>者实战

    基于哪吒开发板部署YOLOv8模型

    2024英特尔 “走近开发者”互动活动-哪吒开发套件免费试 用 AI 创新计划:哪吒开发板是专为支持入门级边缘 AI 应用程序和设备而设计,
    的头像 发表于 11-15 14:13 1541次阅读
    基于<b class='flag-5'>哪吒</b><b class='flag-5'>开发板</b>部署YOLOv8<b class='flag-5'>模型</b>