用 Gemini Pro Vision 打造医疗助手,守护你的健康

用 Gemini Pro Vision 打造医疗助手,守护你的健康

引言

如今,AI 在几乎所有领域都得到了应用。从银行到医疗应用,AI 无处不在。在了解到 ChatGPT 的可能性之后,其他几家公司也开始努力构建一个更好的 transformer,以提高准确性。在本文中,我们将看到如何使用谷歌的 Gemini Pro 模型来分析图像并给出医疗诊断。这将非常令人兴奋,让我们开始吧。

学习目标
  • 我们将对上传的图像进行医学分析
  • 我们将通过使用 Gemini Pro 来获得实践经验
  • 我们将构建一个基于 Streamlit 的应用程序,在交互环境中查看结果。

目录

什么是 Gemini?

Gemini 是谷歌推出的一系列新的基础模型。与 PaLM 相比,这是迄今为止谷歌最大的一组模型,并且从一开始就专注于多模态。这使得 Gemini 模型能够处理不同类型的信息组合,包括文本、图像、音频和视频。目前,API 支持图像和文本。Gemini 在基准测试中证明了其达到了最先进的性能,并在许多测试中击败了 ChatGPT 和 GPT4-Vision 模型。

配置 Gemini Pro Api Key

我们将按照以下步骤创建 Gemini Pro Api Key:

步骤 1:访问 Google AI Studio 并使用您的 Google 帐号登录。

步骤 2:登录后,您将看到类似于下面的界面。点击“创建 API 密钥”。

步骤 3:然后您将看到类似于下面的界面。如果您是第一次创建 Google 项目,请点击“在新项目中创建 API 密钥”。

点击该按钮后,将生成一个可用于我们项目的 API 密钥。

在文件结构中,创建一个名为 google_api_key.py 的 Python 文件,内容如下,用于存储 API 密钥。

google_api_key='YOUR_API_KEY'

配置 Gemini Pro 设置并部署为 Streamlit 应用

在开始编写代码之前,我们需要了解 prompt 的概念。prompt 是向语言模型提交的自然语言请求,用于接收响应。prompt 可以包含问题、指令、上下文信息、示例和模型完成或继续的部分输入。模型接收到 prompt 后,可以生成文本、嵌入、代码、图像、视频、音乐等,具体取决于所使用的模型。

我们可以在这里找到详细的说明。我们还可以在这里找到一些高级策略。需要记住的关键是,如果我们想构建一个更好的模型,我们需要为 Gemini Pro 模型 提供更好的提示,以便它理解。

我们将向我们的模型提供以下提示:

"""
    你是一位医学图像分析领域的专家。你的任务是检查一家知名医院的医学图像。
    你的专业知识将有助于识别或发现图像中可能存在的任何异常、疾病、状况或健康问题。
    你的主要职责:
    1. 详细分析:仔细检查每个图像,重点查找任何异常。
    2. 分析报告:记录所有发现,并以结构化的格式清晰地表达。
    3. 建议:根据分析,提出适用的疗法、检查或治疗建议。
    4. 治疗方案:如果适用,提供详细的治疗方案,以帮助更快康复。
    注意事项:
    1. 响应范围:只在图像涉及人类健康问题时回应。
    2. 图像清晰度:如果图像不清晰,请注意某些方面是“根据上传的图像无法正确确定的”。
    3. 免责声明:在分析中附上免责声明:“在做出任何决定之前,请咨询医生。”
    4. 您的见解对指导临床决策非常宝贵。请按照上述结构化方法进行分析。
    请使用以下 4 个标题提供最终的回应:详细分析、分析报告、建议和治疗方案
"""

我们可以添加更多的指令来提高性能。然而,目前这应该是一个很好的起点。

现在,我们将专注于基于streamlit的部署代码。

代码:

import streamlit as st
from pathlib import Path
import google.generativeai as genai
from google_api_key import google_api_key
## Streamlit App
genai.configure(api_key=google_api_key)
# https://aistudio.google.com/app/u/1/prompts/recipe-creator
# 设置模型
generation_config = {
  "temperature": 1,
  "top_p": 0.95,
  "top_k": 0,
  "max_output_tokens": 8192,
}
safety_settings = [
  {
    "category": "HARM_CATEGORY_HARASSMENT",
    "threshold": "BLOCK_MEDIUM_AND_ABOVE"
  },
  {
    "category": "HARM_CATEGORY_HATE_SPEECH",
    "threshold": "BLOCK_MEDIUM_AND_ABOVE"
  },
  {
    "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
    "threshold": "BLOCK_MEDIUM_AND_ABOVE"
  },
  {
    "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
    "threshold": "BLOCK_MEDIUM_AND_ABOVE"
  },
]
system_prompts = [
    """
    你是一位医学图像分析领域的专家。你的任务是检查一家知名医院的医学图像。
    你的专业知识将有助于识别或发现图像中可能存在的任何异常、疾病、状况或健康问题。
    你的主要职责:
    1. 详细分析:仔细检查每张图像,重点寻找任何异常。
    2. 分析报告:记录所有发现,并以结构化的方式清晰地表达出来。
    3. 建议:根据分析结果,提出适用的治疗、检测或治疗方法。
    4. 治疗:如果适用,提供详细的治疗方案,以帮助更快康复。
    注意事项:
    1. 回答范围:只回答与人类健康问题相关的图像。
    2. 图像清晰度:如果图像不清晰,请注意某些方面是“无法根据上传的图像正确确定的”。
    3. 免责声明:在进行任何决策之前,请咨询医生。
    4. 你的见解在指导临床决策方面是无价的。请按照上述结构化方法进行分析。
    请使用以下四个标题提供最终的回答:详细分析、分析报告、建议和治疗。
    """
]
model = genai.GenerativeModel(model_name="gemini-1.5-pro-latest",
                              generation_config=generation_config,
                              safety_settings=safety_settings)
st.set_page_config(page_title="Visual Medical Assistant", page_icon="🩺", layout="wide")
st.title("Visual Medical Assistant 👨‍⚕️ 🩺 🏥")
st.subheader("一个用于使用图像进行医学分析的应用程序")
file_uploaded = st.file_uploader('上传要分析的图像', type=['png','jpg','jpeg'])
if file_uploaded:
    st.image(file_uploaded, width=200, caption='上传的图像')
submit=st.button("生成分析结果")
if submit:
    image_data = file_uploaded.getvalue()
    image_parts = [
        {
            "mime_type" : "image/jpg",
            "data" : image_data
        }
    ]
    prompt_parts = [
        image_parts[0],
        system_prompts[0],
    ]
    response = model.generate_content(prompt_parts)
    if response:
        st.title('基于上传图像的详细分析')
        st.write(response.text)

以下是逐行解释:

第1-4行 -> 我们导入必要的库和google_api_key。

第7行 -> 我们必须传递在第2步中创建的API密钥。

第11-35行 -> 在这里,我们定义了Gemini模型的基本配置和安全设置。不用担心,你可以访问Google AI Studio并点击获取代码以获取所有这些代码片段。

第37-71行 -> 在这里,我们为模型定义了提示。

第73-76行 -> 在这里,我们初始化了我们的Gemini模型。

第78-81行 -> 在这里,我们在streamlit应用程序上显示一些文本。

第83-87行 -> 注意我们将上传的图像存储在file_uploaded变量中。我们允许’png’、‘jpg’、'jpeg’图像类型。因此,如果提供其他类型的图像,上传将失败。如果图像成功上传,我们将在浏览器上显示它。

第89-113行 -> 我们创建了一个文本为“生成分析结果”的提交按钮。一旦点击该按钮,真正的魔力就会发生。我们将图像和提示传递给我们的Gemini模型。Gemini模型将返回响应给我们。然后,我们将在浏览器上显示响应。

我将此文件保存为app.py。

看它如何运行

我们需要打开Python终端并执行以下命令来调用streamlit应用程序。确保将目录更改为与app.py相同的目录。

streamlit run app.py

输出:

现在,我们将上传一些图片并尝试查看输出。让我们尝试查看一张歪曲图片的分析结果。我从谷歌下载了同样的图片。

让我们点击“浏览文件”按钮上传这张图片。

图片上传后,点击“生成分析”按钮。您将在下方看到详细的分析结果:

我知道图片可能有点难以阅读,所以我将分享每个标题的放大图片,以便更容易理解。

图片1:

图片2:

图片3:

通过仔细观察图片,我们可以对潜在的医疗诊断进行深入分析。此外,考虑到这与牙齿问题有关,建议的行动方案是咨询正畸医生并进行一些牙齿X光检查。此外,在这种情况下,佩戴牙套和保持器等多种治疗选择似乎是明智的选择。

让我们看一下整个过程的样子(从头到尾)

同样,让我们使用另一个例子。这里我们将上传下面的脚踝肿胀图片并检查医疗分析结果。

上传图片并点击生成的分析后,整个过程如下所示:

让我们看一下标题的放大图片:

图片1:

图片2:

图片3:

因此,我们可以通过观察图片来进行深入的详细分析,从而得出可能的医疗诊断。我们可以看到模型如何捕捉到左脚肿胀的问题。模型建议咨询医生,因为仅仅通过观察这种肿胀很难得出很多结论。然而,我们可以看到一些治疗选择,如使用压缩包和抬高左脚以减轻肿胀,在这种情况下似乎是合理的选择。

我们可以尝试分析更多类似的图片。

应用场景

这样的应用在医生不易接触的偏远地区非常有用。它们也有助于远离诊所或医院的患者。虽然我们不能完全依赖这些系统,但它们提供了相当准确的医疗指标和指导。我们可以进一步完善我们的提示,并将家庭疗法作为一个部分加入进来。如果我们能定义复杂的提示,Gemini Pro模型可以提供最先进的性能。

结论

在本文中,我们探讨了谷歌的Gemini Pro模型在医学图像分析方面的能力。我们演示了如何配置API,创建有效的提示,并部署一个用于交互式结果的Streamlit应用程序。Gemini Pro模型提供了最先进的性能,使其成为远程医学诊断和临床决策的强大工具。虽然它不能替代专业医疗建议,但它提供了有价值的见解,并可以显著提高医疗评估在服务不足地区的可访问性。随着人工智能技术的进步,像Gemini Pro这样的工具将在医疗创新中发挥越来越重要的作用。

主要观点

  1. 在本文中,我们演示了如何使用Gemini Pro对图像进行医学检查。

  2. 我们讨论了配置Gemini Pro API密钥以及如何通过定义提示来提高模型性能。

  3. 此外,我们使用Streamlit部署了迷你项目,使我们能够进行实验并观察结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数智笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值