作者:陳佳聰
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環境搭建
首先部署本系統,因為哪吒開發板出廠并不帶系統,需要我們進行燒錄。
進入官網:
ubuntu下載
接著進行openvino 配置:
首先進行基礎依賴安裝:
sudo apt-get install libprotobuf-dev protobuf-compiler
輸出回顯中碰到Do you want to continue? [Y/n] y
接著進行OpenVino下載,官網中給出了許多安裝方式,大家可自行安裝。
官網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 【目標路徑】
接著就可以進行部署
部署頁面
-
處理器
+關注
關注
68文章
19406瀏覽量
231160 -
英特爾
+關注
關注
61文章
10007瀏覽量
172324 -
開發板
+關注
關注
25文章
5121瀏覽量
98183 -
深度學習
+關注
關注
73文章
5513瀏覽量
121540
原文標題:開發者實戰|深度學習+哪吒開發板,讓黃斑病變遠離我們的眼睛
文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論