2026/4/16 12:12:49
网站建设
项目流程
做网站用域名不备案怎么弄,贸易公司网站制作,深圳坪山很偏僻吗,网站开发 专有名词原文#xff1a;towardsdatascience.com/leveraging-gemini-1-5-pro-latest-for-smarter-eating-64eeb4012ce7 你是否曾经想过当你吃晚餐时摄入了多少卡路里#xff0c;例如#xff1f;我总是这样做。如果你能简单地通过一个应用程序传递你盘子的图片#xff0c;并在决定你…原文towardsdatascience.com/leveraging-gemini-1-5-pro-latest-for-smarter-eating-64eeb4012ce7你是否曾经想过当你吃晚餐时摄入了多少卡路里例如我总是这样做。如果你能简单地通过一个应用程序传递你盘子的图片并在决定你想要吃多远之前得到总卡路里数的估计那岂不是很好我创建的这个卡路里计数器应用程序可以帮助你实现这一点。它是一个使用 Google 的 Gemini-1.5-Pro-Latest 模型来估计食物项目卡路里数的 Python 应用程序。该应用程序接受两个输入关于食物的问题以及食物或食物项目的图片或者简单地说是一盘食物。它输出问题的答案图片中的总卡路里数以及图片中每个食物项目的卡路里分解。在这篇文章中我将解释从头开始构建应用程序的整个端到端过程使用 Google 的 Gemini-1.5-pro-latestGoogle 发布的大型语言生成式人工智能模型以及我是如何使用 Streamlit 开发应用程序的前端的。值得注意的是随着人工智能领域的进步数据科学家有责任逐步从传统的深度学习转向生成式人工智能技术以革新他们的角色。这是我在此主题上教育的主要目的。让我先简要解释一下 Gemini-1.5-pro-latest 和 Streamlit 框架因为它们是此卡路里计数器应用基础设施的主要组成部分。Gemini-1.5-pro-latestGemini-1.5-pro-latest 是由 Google 开发的高级人工智能语言模型。由于它是最新版本它在自然语言处理和构建应用程序方面具有更快的响应时间和更高的准确性因此比之前的版本具有增强的功能。这是一个多模态模型可以同时处理文本和图像——这是从仅使用文本提示的 Google Gemini-pro 模型的一大进步。该模型通过理解和生成文本类似于人类基于其收到的提示来工作。在这篇文章中我们将使用此模型为我们的卡路里计数器应用生成文本。Gemini-1.5-pro-latest 可以集成到其他应用程序中以增强它们的 AI 功能。在这个当前的应用程序中该模型使用生成式人工智能技术将上传的图像分解成单个食物项目。基于其对营养数据库中食物项目的上下文理解它使用图像识别和目标检测来估计卡路里数然后计算图像中所有项目的总卡路里数。StreamlitStreamlit 是一个开源的 Python 框架它将管理用户界面。这个框架简化了前端开发因此在整个项目中你不需要编写任何 HTML 和 CSS 代码。让我们深入构建这个应用。构建 Calorie 计数器应用我将分 5 个清晰的步骤向你展示如何构建这个应用。1. 设置文件夹结构首先进入你喜欢的代码编辑器我的编辑器是 VS Code并创建一个项目文件。例如可以将其命名为 Calories-Counter。这是当前工作目录。创建一个虚拟环境venv在终端中激活它然后创建以下文件.env, calories.py, requirements.txt。这里有一个关于文件夹结构的建议Calories-Counter/├── venv/│ ├── xxx │ ├── xxx ├──.env ├── calories.py └── requirements.txt请注意Gemini-1.5-Pro 与 Python 3.9 及更高版本配合使用效果最佳。2. 获取 Google API 密钥与其他 Gemini 模型一样Gemini-1.5-pro-latest 目前对公众免费。访问它需要你获得一个 API 密钥你可以通过访问 Google AI Studio 中的“获取 API 密钥”来获取这个密钥。链接。一旦密钥生成复制它以便在代码中后续使用。按照以下方式将此密钥保存为 .env 文件中的环境变量。GOOGLE_API_KEYpaste the generated key here3. 安装依赖项将以下库输入到你的 requirements.txt 文件中。streamlitgoogle-generativeaipython-dotenv在终端中使用以下命令安装 requirements.txt 中的库python-m pip install-r requirements.txt4. 编写 Python 脚本现在让我们开始编写 calories.py 中的 Python 脚本。使用以下代码导入所有必需的库# import the librariesfromdotenvimportload_dotenvimportstreamlitasstimportosimportgoogle.generativeaiasgenaifromPILimportImage下面是如何使用导入的各种模块dotenv – 由于此应用将从 Google API 密钥环境变量中进行配置因此使用 dotenv 从 .env 文件中加载配置。Streamlit – 用于创建前端交互式用户界面os 模块用于在执行文件操作如从 .env 文件获取 API 密钥时处理当前工作目录。google.generativeai 模块当然为我们提供了使用即将使用的 Gemini 模型的权限。PIL 是一个用于管理图像文件格式的 Python 图像库。以下行将配置 API 密钥并从环境变量存储中加载。genai.configure(api_keyos.getenv(GOOGLE_API_KEY))load_dotenv()定义一个函数当调用时将加载 Gemini-1.5-pro-latest 并获取响应如下所示defget_gemini_reponse(input_prompt,image,user_prompt):modelgenai.GenerativeModel(gemini-1.5-pro-latest)responsemodel.generate_content([input_prompt,image[0],user_prompt])returnresponse.text在上述函数中你可以看到它接受输入即将在脚本中进一步指定的输入提示一个将由用户提供的图像以及一个将由用户提供的用户提示/问题。所有这些都会输入到 Gemini 模型中以返回响应文本。由于 Gemini-1.5-pro 预期输入图像为字节数组形式接下来要做的事情是编写一个函数来处理上传的图像将其转换为字节数组。definput_image_setup(uploaded_file):# Check if a file has been uploadedifuploaded_fileisnotNone:# Read the file into bytesbytes_datauploaded_file.getvalue()image_parts[{mime_type:uploaded_file.type,# Get the mime type of the uploaded filedata:bytes_data}]returnimage_partselse:raiseFileNotFoundError(No file uploaded)接下来指定输入提示这将确定您应用程序的行为。在这里我们只是告诉 Gemini 如何处理应用程序将由用户提供的文本和图片。input_prompt You are an expert nutritionist. You should answer the question entered by the user in the input based on the uploaded image you see. You should also look at the food items found in the uploaded image and calculate the total calories. Also, provide the details of every food item with calories intake in the format below: 1\. Item 1 - no of calories 2\. Item 2 - no of calories ---- ---- 下一步是初始化 streamlit 并为您的卡路里计数器应用程序创建一个简单的用户界面。st.set_page_config(page_titleGemini Calorie Counter App)st.header(Calorie Counter App)inputst.text_input(Ask any question related to your food: ,keyinput)uploaded_filest.file_uploader(Upload an image of your food,type[jpg,jpeg,png])imageifuploaded_fileisnotNone:imageImage.open(uploaded_file)st.image(image,captionUploaded Image.,use_column_widthTrue)#show the imagesubmitst.button(Submit amp; Process)#creates a Submit amp; Process button上述步骤包含了应用程序的所有组件。此时用户可以打开应用程序输入问题并上传图片。最后让我们将所有部件组合起来以便在点击“提交并处理”按钮后用户将获得所需响应文本。# Once submitamp;Process button is clickedifsubmit:image_datainput_image_setup(uploaded_file)responseget_gemini_reponse(input_prompt,image_data,input)st.subheader(The Response is)st.write(response)5. 运行脚本并与您的应用程序交互现在应用程序开发完成您可以在终端中使用以下命令执行它streamlit run calories.py要与您的应用程序交互并查看其性能请使用本地 URL 或生成的网络 URL 在浏览器中查看您的 Streamlit 应用程序。Chrome 浏览器上的 Calorie Counter App 演示图片这就是您的 Streamlit 应用程序在浏览器首次打开时的样子。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/fd2bd8b4c603ad07732ffdf58b9deb41.pngCalories Counter App 初始显示的演示图片作者照片当用户提问并上传图片后显示如下https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3d4641d3b553a0fd41d35e50025a6596.pngCalories Counter App 的演示图片包含用户输入问题和用户上传的图片作者照片。应用中加载的食物图片Odiseo Castrejon在Unsplash上的照片当用户点击“提交并处理”按钮后下面的图像中显示的响应将在屏幕底部生成。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2cf644dd4edc1402001c6967b0aa027c.pngCalories Counter App 的演示图片显示生成的响应作者照片下一步对于外部访问考虑使用像 AWS、Heroku、Streamlit Community Cloud 这样的云服务来部署您的应用程序。在这种情况下让我们使用 Streamlit Community Cloud 免费部署应用程序。在应用程序屏幕右上角点击“部署”并按照提示完成部署。部署后您可以将生成的应用程序 URL 分享给其他用户。Calories Counter App 的限制就像其他 AI 应用程序一样输出的结果是最优模型估计因此在完全依赖应用程序之前请注意以下潜在风险卡路里计数应用可能会错误分类某些食品项目从而给出错误的卡路里数值。应用没有参考点来根据上传的图像估计食品份量的大小。这可能导致错误。过度依赖该应用可能导致压力和心理健康问题因为一个人可能会着迷于计算卡路里并担心可能不太准确的结果。缓解应用局限性为了帮助减少使用卡路里计数应用带来的风险以下是一些可能集成到其开发中的改进措施添加图像的上下文分析这将有助于评估正在分析的食品份量的大小。例如应用可以被构建成包含在食品图像中的标准物体如勺子可以作为测量食品项目大小的参考点。这将减少最终总卡路里计算中的误差。Google 可以提高其训练集中食品项目的多样性以减少错误分类。他们可以将其扩展到包括更多文化的食品这样甚至罕见的非洲食品项目也能被识别。在我忘记之前如果你喜欢你刚刚阅读的内容请在这里点击我的“关注”按钮或者在LinkedIn上给我一些点赞突出吸引你注意的地方或者更好的是留下一些评论任何或所有这些都将非常感激。