由 Nvidia 提供技术支持的化疗期间的过敏性皮肤反应检测
如今,我们在医疗保健方面存在严重问题。尽管其中许多问题已经用技术解决了,但很多时候该行业不愿意改变和采用新技术。
例如,癌症患者可能必须不断接受化疗,但这个过程并不简单或愉快。最糟糕的是,可能对化疗过敏。大约 17% 接受化疗的患者对其有过敏反应,这会引发从简单的脸红到死亡的症状。这是一个经过深入研究的现象,它有几个症状和阶段。
在这种治疗中严重过敏反应之前的主要症状之一(1)是面部潮红或脸红,之后可能会出现以下症状:
如果可以更快地检测到潮红、脸红和面部发红等最初症状,我们可以通过及时进行治疗来避免大多数更严重的症状。
帮助解决此问题的技术类型并不存在。当生命体征监测仪开始检测到呼吸异常时,医院环境中的第一反应就会发生。并且如果未分配与患者相关的患者,一旦患者开始感到不适,就会在患者呼叫护士时做出反应(可能有点太晚了)。
有一些技术可以预防过敏反应,例如:
自动注射器
然而,这些解决方案是最后的资源,不推荐使用。
该解决方案在此类环境中将非常有用,因为这是一个没有人解决的问题,并且会极大地影响患者的健康。这种反应很容易导致并发症,如果在严重症状出现之前进行治疗,甚至可以挽救患者的生命。
意图
出于这些原因,我将建立一个 CV 系统,实时分析患者的面部,并能够确定该人是否正在或开始对化疗药物产生过敏反应。反过来,可以向护士发出紧急呼叫。根据医院几位护士的经验,在出现发红的第一个症状后,患者开始出现非常严重的过敏反应,护士很难察觉到这一点。
该解决方案将通过 1080p 摄像头分析患者的实时图像。图像捕获完成后,它将使用模型对其进行分析。如果患者出现过敏反应,或者如果他有过敏反应,通知将通过 AWSIoT 发送到与 AWS-SDK 集成的渐进式 Web 应用程序。该网页将使用 ReactJS 设计。
该系统将具有以下特点和特点:
要使用的模型将是 TensorFlow 模型,我将使用几张具有过敏反应(面部发红)的患者和健康患者的图像对其进行训练。
这种类型的模型可以与 Keras(TensorFlow 2.0 子模块)和 OpenCV 一起使用,以执行图像预处理、训练和分析(使用模型进行预测)。该模型的训练将在 Jupyter 笔记本中完成,并将在 NVIDIA Jetson Nano 上运行。为了能够生成越来越精确的模型,使用系统随时间收集的新图像,进而重新训练现有模型。因此,我希望生成一个模型,该模型可以在看到更多患者时进行学习。
这是系统的连接图:
因为我们通过带有插孔连接器的外部 5 伏电源为 Jetson Nano 供电,所以我们必须在 Jetson 的 J48 连接器上放置一个跳线,如图所示。
这是关于如何在 SD 卡上安装 Jetson SDK 操作系统映像的说明。您将需要一台带有 SD 读卡器的计算机来安装图像。
我们建议下载最新版本的 SDK,在本指南中我使用的是 4.3.0 版(最新版)。
官方链接:https ://developer.nvidia.com/embedded/jetpack
您需要解压缩文件以获取要写入 SD 卡的图像文件 (.img)。如果您没有要解压缩的程序,我会根据您的操作系统(在我的例子中是 Windows)推荐以下任何一种。
7-Zip(视窗):
解压器(Mac):
解压缩(Linux):
https://linuxize.com/post/how-to-unzip-files-in-linux/
Windows 和 Mac:
https://www.sdcard.org/downloads/formatter/index.html
Linux:
https://www.pcworld.com/article/3176712/how-to-format-an-sd-card-in-linux.html
我的电脑没有 SD 卡读卡器,所以我使用这个外部读卡器(任何读卡器都可以)。
这是SD卡格式化程序的软件。我特别喜欢这个程序,因为这种类型的操作系统会在 SD 内存中创建多个分区,如果我们以后要重新格式化,它们的格式可能会很复杂,但是这个程序会自动完成所有操作。
您需要使用镜像写入工具来安装您下载到 SD 卡上的镜像。我推荐 balenaEtcher,因为它适用于所有操作系统,并且无需解压缩 .zip 即可执行操作系统闪存。
下载链接:https ://www.balena.io/etcher/
正确完成该过程后,我们会看到以下消息。
将 SD 插入 Jetson Nano 的 SD 插槽。
使用HDMI线将Jetson Nano连接到屏幕,连接无线键盘接收器,连接网卡并连接电源。
我们将配置操作系统,非常简单。
超级重要的注意事项:选中“自动登录”选项
对于此步骤,我们将创建与 Jetson 的 ssh 连接,如果您的 Mac 或 Linux 已经预配置了 OpenSSH 库,那么您可以使用以下命令从终端启动连接。
ssh -L 8000:localhost:8888 youruser@yourip
在我的例子中,命令是:
ssh -L 8000:localhost:8888 vic@192.168.0.28
注意:也可以在 Windows 中激活此库,但我建议使用接下来将向您展示的说明。
如果您是 Windows 用户,我建议您使用以下程序:
该动画展示了如何完全按照上一个命令配置 Putty。
以Putty控制台为例,点击connect会出现如下信息。
点击“Yes”会弹出如下窗口,只要不格式化Jetson OS就不会再出现,此时会要求输入我们在上一节定义的密码。
在命令控制台输入密码后,会出现这个窗口,说明我们已经连接上Jetson Nano了。
建立与控制台的无线连接后,我们必须将以下命令复制并粘贴到其中并执行它们。
下载项目并获取项目所有必需文件的命令。
git clone https://github.com/altaga/Anaphylactic-Skin-Reaction-Detection-during-Chemotherapy
命令进入下载的文件夹。
cd Anaphylactic-Skin-Reaction-Detection-during-Chemotherapy/Installer
此命令将安装正确设置项目所需的所有库和配置。为了便于安装,我将制作一个自动执行所有这些操作的 .sh 文件,但是我还在附录 A 中单独附加了命令。此外,该文件可以通过任何文本编辑器查看,例如记事本、Atom、VSCode 等。 .
注意:去喝杯咖啡,吃点饼干,看看你最喜欢的系列的下一章,因为这个过程可能需要 45 分钟到 2 小时才能完成,具体取决于你的互联网连接。
sudo bash Install.sh
通过这个过程,我们将正确安装所有库:
一旦这个过程结束,我们必须检查 Jupyter notebook 是否正常工作,因为它将成为本教程其余部分的 UI。接下来,编写以下命令:
jupyter notebook
你应该在终端中看到类似这样的东西:
复制出现的令牌,在不关闭窗口的情况下转到浏览器并在地址栏输入:
localhost:8000
你应该得到一个这样的窗口:
粘贴您之前复制的令牌:
如果令牌有效,我们应该在浏览器中打开 Jetson 文件,这很重要,因为此窗口将使我们能够轻松管理文件,并允许我们执行项目文件。
首先,我们访问我们的 AWS 控制台并查找 IoT 核心服务:
获取您的 AWS 端点,保存它,因为我们将使用它来设置 JEtson 和网页。
在横向面板中选择“Onboard”选项,然后选择“Get started”。
选择“开始”。
在“Choose a platform”中选择“Linux/OSX”,在AWS IoT DEvice SDK中选择“Python”,然后点击“Next”。
在名称中写下您想要的任何名称,然后单击“下一步”。
在“下载连接工具包”部分中,按“Linux/OSX”按钮下载凭证包(我们稍后会用到),然后单击“下一步”。
单击“完成”。
单击“完成”。
在横向栏中,在 Manage/Things 部分,我们可以看到我们已经创建的东西。现在我们必须设置那个东西的策略,让它在 AWS 中不受限制地工作。
在侧边栏中,在 Secure/Policies 部分我们可以看到我们的 thing-policy,点击它进行修改:
单击“编辑策略文件”。
将以下文本复制粘贴到文档中并保存。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:*",
"Resource": "*"
}
]
}
完成此操作后,我们将转到我们的电脑并转到包含先前下载的凭据的文件夹并将其解压缩。
我们进入解压后的文件夹,我们将按照以下方式重命名文件:
ThingNAME.cert.pem -> ThingCert.cert.pem
ThingNAME.private.key -> PrivateCert.private.key
现在,文件已经重命名,我们将通过以下路径转到我们的 Jupyter Notebook:
在右上角有一个按钮,上面写着“上传”
通过单击它,我们可以将我们的两个证书上传到该文件夹。
单击每个蓝色“上传”按钮以完成文件上传。
至此,我们应该拥有所有必要的凭据。
这是通过 Python for Cloud 管理和执行操作的 AWS 库,所以我们必须像这样设置它:
在控制台,我们转到 IAM 服务。
在访问管理/用户部分,我们单击添加用户。
我们输入任何用户名,然后单击“下一步:权限”
单击“直接附加现有策略”,在搜索栏中我们输入“S3”并选择“AmazonS3FullAccess”策略。
我们单击“下一步”,直到到达成功屏幕,我们将在其中看到访问密钥 ID 和秘密访问密钥,我们必须保存这两个密钥才能设置 Awscli。
从我们的 Jupyter notebook UI 的“新建”按钮打开一个新终端。
在上面输入以下命令。
aws configure
通过以下方式配置凭据:
AWS Access Key ID [None]: YOUR ACCESS KEY ID
AWS Secret Access Key [None]: YOUR SECRET ACCESS KEY
Default region name [None]: us-east-1
Default output format [None]: json
准备好!我们现在已经配置了 Jetson Nano。
进入 AWS 控制台并搜索“Cognito”服务。
输入“管理身份池”
输入“管理身份池”
输入“创建新的身份池”
在池中键入任何名称并选中“启用对未经身份验证的身份的访问”,然后单击“创建池”
只需单击“允许”。
我们刚刚得到我们的 POOLID,保存它,因为我们以后会用到它。
转到 AWS 控制台并输入“IAM”。
在控制台中进入角色部分,在搜索栏中输入“web”并输入“Cognito_WebPagePoolUnauth_Role”。
在 Role 中,我们单击 Attach policies 按钮以添加我们的 webapp 所需的服务。
在该窗口中,我们需要添加三个服务:
现在我们拥有了所需的权限,我们分道扬镳来配置我们将拥有患者信息的数据库。我们将从 AWS 搜索 DynamoDB。
选择创建表。
使用以下参数创建一个表,重要的是名称与我们在图像中显示的名称相同。
名称:HacksterDB 分区键:PartKey 排序键:SortKey
创建表格后,我们可以在其上生成关于患者的登记簿,我们将能够在我们的平台上可视化这些登记簿,登记簿必须遵循以下结构。
{
"Age": "56",
"App": " 03/03/2020",
"Cancer": "Sarcoma",
"Comments": "Entrepreneur, if you don't have at least one TitanRTX on your computer, don't talk with him",
"Incidents": "1",
"Medicine": "Carboplatin",
"PartKey": "dev1",
"SortKey": "Jen-Hsun Huang"
}
寄存器说明:
最后我们将创建一个 S3 存储桶,它允许我们存储我们需要的任何文件或图像。从 AWS 控制台查找 S3 服务。
在 S3 上单击按钮以创建存储桶。
为存储桶键入任何名称,但请记住它,因为我们稍后会调用它。
取消选中图像中的所有块选项:
完成所有这些后,我们就可以准备好设置我们的 web 应用程序了。
取消选中所有要阻止的选项,如图所示:。
完成后,我们创建了具有以下 URL 的存储桶。
https://yourbucketname.s3.amazonaws.com/
将 Github 文件下载到您的 PC。
在项目文件夹中转到:ReactAPP\src\views\examples。
使用您喜欢的编辑器打开以下文件:
在“aws-configuration.js”中粘贴我们的 POOLID 和我们的 AWS 端点。
在“MyCard.jsx”中粘贴您的存储桶 URL。
在“Card.jsx”中粘贴您的存储桶 URL。
在“Profile.jsx”中粘贴数据库的名称,如果您将其命名为“HacksterDB”,则无需执行任何其他操作。
要在导航器中可视化数据库,您需要在计算机中安装 NodeJS。
安装后,进入名为“ReactAPP”的项目文件夹。
在那里,操作终端或在 Windows cmd 的情况下。
注意:如果您使用的是 Windows,只需在搜索栏中键入 cmd。
在 cmd 或终端中写入下一个命令。
npm install
安装所有依赖项后,在控制台写入:
npm start
从浏览器中的“localhost:8000”输入 Jupyter notebook UI。不再需要令牌。
进入“化疗期间过敏性皮肤反应检测\Jupyter Notebook\化疗期间过敏性皮肤反应检测.ipynb”文件夹
设置好所有内容后,我们现在进入浏览器,然后再执行代码修订,我们需要粘贴我们的存储桶名称和 AWS IoT 端点。
产品:
基本组件:
用户界面:
总之,在这个项目中,我们有:
但是,最重要的部分是它解决了一个实际问题。当我开始这个项目时,我不想只做一个周末项目或一个非常酷的机器人。我想要的是从问题开始倒退,然后查看我需要什么硬件来解决它。值得庆幸的是,由于我接受过生物医学工程师的教育,并且与医院、诊所和医疗保健机构合作,所以我对某些领域的某些问题有了很好的了解。这个特殊的问题(对化疗的过敏反应和快速反应)确实是我被要求制定适当解决方案的问题。它符合联合国的一项 SDG(可持续发展目标),这一事实使其变得更好。
我实际上认为该项目(用于原型)几乎已准备好进行测试,甚至可以超越它。我能提到的改进只是在美学方面(我在考虑 IP 摄像机类型的外壳)。这也意味着开发更加商业化的产品。
感谢您阅读并继续黑客攻击!
链接:
(2) https://www.ncbi.nlm.nih.gov/books/NBK333506/table/ch04.sec1.table1/
(3) https://medium.com/@alexrachnog/using-caffe-with-your-own-dataset-b0ade5d71233
(4) https://www.pyimagesearch.com/2017/08/21/deep-learning-with-opencv/
安装.sh内容:
export PATH=$PATH:~/.local/bin
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev -y
sudo apt-get install python3-pip -y
sudo pip3 install -U pip testresources setuptools
sudo pip3 install -U numpy==1.16.1 future==0.17.1 mock==3.0.5 h5py==2.9.0 keras_preprocessing==1.0.5 keras_applications==1.0.8 gast==0.2.2 enum34 futures protobuf
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v43 tensorflow-gpu
sudo pip3 install notebook awscli paho-mqtt
sudo apt-get install python3-matplotlib python3-opencv python3-scipy -y
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !