基于NVIDIA NIM平台实现盲人过马路的demo(一)
前言:利用NVIDIA NIM平台提供的大模型进行编辑,通过llama-3.2-90b-vision-instruct模型进行初步的图片检测
step1:
部署大模型到本地,引用所需要的库
import os
import requests
import base64
import cv2
import time
from datetime import datetime
step2:
观看官方使用文档:
import requests, base64
invoke_url = ""
stream = True
with open("image.png", "rb") as f:image_b64 = base64.b64encode(f.read()).decode()
assert len(image_b64) < 180_000, \"To upload larger images, use the assets API (see docs)"
headers = {"Authorization": "","Accept": "text/event-stream" if stream else "application/json"
}payload = {"model": 'meta/llama-3.2-90b-vision-instruct',"messages": [{"role": "user","content": f'What is in this image? <img src="data:image/png;base64,{image_b64}" />'}],"max_tokens": 512,"temperature": 1.00,"top_p": 1.00,"stream": stream
}
response = requests.post(invoke_url, headers=headers, json=payload)
if stream:for line in response.iter_lines():if line:print(line.decode("utf-8"))
else:print(response.json())
其原理为将图片转换为base64后传入大模型进行识别,以及一系列参数
step3:
引入摄像头模块,并且时时进行推理,将模型的初步推理结果传入文本中,为后期的朗读进行预警
# 创建摄像头对象
cap = cv2.VideoCapture(0) # 0 是默认摄像头索引# 输出文件路径
output_file_path = "output.txt"def save_text_to_file(text):with open(output_file_path, "a", encoding="utf-8") as f: # 以追加模式打开文件timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # 获取当前时间戳f.write(f"[{timestamp}] {text}\n") # 写入时间戳和文本,换行while True:ret, frame = cap.read()if not ret:print("无法获取图像")break# 将图像编码为 PNG 格式并转换为 Base64_, buffer = cv2.imencode('.png', frame)image_b64 = base64.b64encode(buffer).decode()# 构建请求负载,确保输入中文payload = {"model": 'meta/llama-3.2-90b-vision-instruct',"messages": [{"role": 'user',"content": f'请告诉我这张图片中有什么内容。<img src="data:image/png;base64,{image_b64}" />'}],"max_tokens": 512,"temperature": 1.00,"top_p": 1.00,"stream": stream}# 发送请求response = requests.post(invoke_url, headers=headers, json=payload)if response.status_code == 200:result = response.json()# 根据返回的结果处理输出print(result) # 可以进一步提取所需的信息# 获取结果中的文本内容if 'choices' in result and len(result['choices']) > 0:description = result['choices'][0]['message']['content']print(description) # 打印描述# 保存文本到文件save_text_to_file(description)else:print(f"请求失败,状态码:{response.status_code}")time.sleep(3) # 每秒捕获一帧# 释放摄像头
cap.release()
cv2.destroyAllWindows()
原理十分简单,让我们来看一下初步的结果:
在我加入翻译模块后,发现其输出结果:
'id': 'chat-51e2e604fd944de393136f7433919ad5', 'object': 'chat.completion', 'created': 1730471625, 'model': 'meta/llama-3.2-90b-vision-instruct', 'choices': [{'index': 0, 'message': {'role': 'assistant', 'content': '这里有一张中年亚洲男性 frontal director 照片。照片截图自远程视频会议ूच意识。\n\n/ Ψ οδ HistogramDescriptionBlack / 97% Colorsunnedove Gray66BetaBLUE209peach29dark brown अपन Nogran8023825444098364103281213183791565308314594581053713508413533mntileyelo \n\n.', 'tool_calls': []}, 'logprobs': None, 'finish_reason': 'stop', 'stop_reason': None}], 'usage': {'prompt_tokens': 20, 'total_tokens': 99, 'completion_tokens': 79}, 'prompt_logprobs': None}
这里有一张中年亚洲男性 frontal director 照片。照片截图自远程视频会议ूच意识。
存在乱码的情况,后续我将进行优化,加入其他大模型进行处理,并且在考虑时时状态下进行最优化解决.
相关文章:

基于NVIDIA NIM平台实现盲人过马路的demo(一)
前言:利用NVIDIA NIM平台提供的大模型进行编辑,通过llama-3.2-90b-vision-instruct模型进行初步的图片检测 step1: 部署大模型到本地,引用所需要的库 import os import requests import base64 import cv2 import time from datetime import datetimestep2: 观看官方使用文…...

美格智能5G车规级通信模组:以连接+算力驱动智能化进阶
2023年3月,基于高通公司第二代骁龙汽车5G调制解调器及射频系统平台SA522M/SA525M,美格智能在德国纽伦堡嵌入式系统展上正式发布全新一代5G车规级C-V2X通信模组MA922系列,迅速引起行业和市场关注。随着5G高速网联逐步成为智能汽车标配…...

[MRCTF2020]PYWebsite1
如果输入的密钥是对的那么我们就直接跳转到flag.php页面 那么我们直接访问😎,他不带我们去我们自己去. 那就用XFF呗. 知识点: 定义:X-Forwarded-For是一个HTTP请求头字段,用于识别通过HTTP代理或负载均衡方式连接到W…...
无源元器件-磁珠选型参数总结
🏡《总目录》 目录 1,概述2,磁珠选型参数2.1,电学参数2.1.3,阻抗(Impedance)2.1.2,额定电流(Rated Current)2.1.3,直流电阻(DC Resistance)2.2,机械性能参数2.2.1,外观和尺寸(Appearance and Dimensions)2.2.2,粘接强度( Bonding Strength)2.2.3,弯曲强度…...

宝顶白芽,慢生活的味觉盛宴
在快节奏的生活中,人们愈发向往那种悠然自得、返璞归真的生活方式。白茶,以其独特的韵味和清雅的风格,成为了现代人追求心灵宁静与生活品质的象征。而在众多白茶之中,竹叶青茶业出品的宝顶白芽以其甘甜醇爽的特质,成为…...
已知三角形三边长求面积用仓颉语言作答
仓颉语言 https://cangjie-lang.cn/ linux和win和mac均有sdk,在本机deepinlinuxv23下载到本地解压缩到目录下设置环境变量 source envsetup.sh 比java方便太多了,java每次都是要自己搞很久,当然,打开看一下envsertup.sh,和我们…...
【JavaScript】匿名函数及回调函数总结
JavaScript 匿名函数 匿名函数没有显式的名称, 被视为一个函数表达式,可以在不需要额外命名的情况下进行定义和使用, 通常被用作回调函数, 即将函数作为参数传递给其他函数。 回调函数是在特定事件或条件发生时被调用的函数,回调函数通常用于异步编程中…...

HTML鼠标移动的波浪线动画——页面将会初始化一个Canvas元素,并使用JavaScript代码在Canvas上绘制响应鼠标移动的波浪线动画
代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Wave Animation</title><style&…...

树莓派开发相关知识八-其他传感器
1、蜂鸣器 #!/usr/bin/env python #coding:utf-8import RPi.GPIO as GPIO import time OUT5 def init():GPIO.setwarnings(False)GPIO.setmode(GPIO.BCM)GPIO.setup(OUT,GPIO.OUT)#蜂鸣器鸣叫函数 def beep(seconds):GPIO.output(OUT,GPIO.HIGH)time.sleep(seconds)GPIO.output…...

ComfyUI - ComfyUI 工作流中集成 SAM2 + GroundingDINO 处理图像与视频 教程
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/143359538 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 SAM2 与…...

STM32G4 双ADC模式之常规同步模式独立注入模式
目录 概述 1 认识双ADC模式 2 功能实现 2.1 原理介绍 2.2 实现方法 概述 本文主要介绍STM32G4 双ADC模式之常规同步模式&独立注入模式相关内容,包括ADC模块的功能介绍,实现框架结构,以及常规同步模式&独立注入模式ADC的转换的实…...
深入理解网络协议:OSPF、VLAN、NAT与ACL详解
OSPF工作过程与基础配置 一、OSPF的工作过程 OSPF(开放最短路径优先)是一个广泛使用的路由协议,它的工作过程可以总结为以下几个步骤: 启动与邻居发现 OSPF在配置完成后,会通过本地组播地址224.0.0.5发送HELLO包。HE…...

idea 配置tomcat 服务
选择tomcat的安装路径 选到bin的文件夹的上一层就行...

.net core 接口,动态接收各类型请求的参数
[HttpPost] public async Task<IActionResult> testpost([FromForm] object info) { //Postman工具测试结果: //FromBody,Postman的body只有rawjson时才进的来 //参数为空时,Body(form-data、x-www-form-urlencoded)解析到的数据也有所…...

关注!这些型号SSD有Windows蓝屏问题需要修复
近期,在闪迪官方有一个SSD FW升级提醒,主要是为了解决Windows 11 24H2系统蓝屏的问题: Fix问题:这些SSD的主机内存缓冲区(Host Memory Buffer,简称HMB)功能可能会导致系统出现蓝屏死机ÿ…...
go语言gin框架平滑关闭——思悟项目技术2
目录 前言 直接关闭的缺陷 平滑关闭的使用场景 例子 思悟项目: golang qq邮件发送验证码——思悟项目技术1 前言 平滑关闭(graceful shutdown)是指在停止服务时,能够让现有的连接、任务或者操作优雅地完成,而不是…...

K8S flannel网络模式对比
K8S flannel网络模式对比 VXLAN 模式Host-GW 模式如何查看 Flannel 的网络模式?如何修改 Flannel 的网络模式?如何修改flannel vxlan端口?Flannel 是一个 Kubernetes 中常用的网络插件,用于在集群中的节点之间提供网络连接。Flannel 提供了多种后端实现方式,vxlan 和 host…...
Vue前端框架:Vue前端项目文件目录
文章目录 package.json 文件node_modulessrc(Source Code 的缩写)文件夹主要子文件夹及内容 publicdist package.json 文件 所在文件夹(通常是项目根目录) 虽然 package.json 本身不是一个文件夹,但它所在的文件夹&a…...
git回滚到指定的提交
如果你想回滚到特定的提交(例如 aa0ca72c),并且丢弃之后的所有更改,可以使用 git reset 命令。请注意,git reset 会改变你的提交历史,所以在多人协作项目中应谨慎使用。如果已经推送到远程仓库,…...

手机怎么玩森林之子?远程玩森林之子教程
你喜欢《森林之子》这款开放世界恐怖生存模拟游戏吗?玩家会被派到一座孤岛上,寻找一位失踪的亿万富翁,并深陷被食人生物占领的地方。你需要制作工具和武器、建造房屋,倾尽全力生存下去,无论独自一人还是与朋友一起。如…...

[科研实践] VS Code (Copilot) + Overleaf (使用 Overleaf Workshop 插件)
科研圈写文档常用 Latex 环境,尤其是 Overleaf 它自带的 AI 润色工具 Writefull 太难用了。如果能用本地的 CoPilot / Cursor 结合 Overleaf,那肯定超高效! 于是我们找到了 VS Code 里的 Overleaf Workshop 插件。这里已经安装好了࿰…...
《重塑认知:Django MVT架构的多维剖析与实践》
MVT,即Model - View - Template,是Django框架独特的架构模式。它看似简单的三个字母,实则蕴含着深刻的设计哲学,如同古老智慧的密码,解开了Web应用开发的复杂谜题。 模型,是MVT架构中的数据核心࿰…...

IoTDB 集成 DBeaver,简易操作实现时序数据清晰管理
数据结构一目了然,跨库分析轻松实现,方便 IoTDB “内部构造”管理! 随着物联网场景对时序数据处理需求激增,时序数据库与数据库管理工具的集成尤为关键。作为数据资产的 “智能管家”,借助数据库管理工具的可视化操作界…...

【笔记】Trae+Andrioid Studio+Kotlin开发安卓WebView应用
文章目录 简介依赖步骤AS(Andriod Studio)创建项目AS创建虚拟机TRAE CN 修改项目新增按键捕获功能 新增WebViewWebView加载本地资源在按键回调中向WebView注入JS代码 最终关键代码吐槽 简介 使用Trae配合Andriod Studio开发一个内嵌WebView的安卓应用, 在WebView中加载本地资源…...
go并发编程| channel入门
channel 介绍 channel 是在 Go 的并发编程中使用的,这个工具的作用之一是 goroutine 之间通信(线程通信指的是多个线程之间通过共享数据或协作机制来协调操作,通常需要借助锁来保证同步)。Go 中推荐使用 channel(不同…...
wsl2 docker重启后没了
参考这篇文章:wsl2 docker重启后没了_mob64ca12f55920的技术博客_51CTO博客...

Vert.x学习笔记-什么是Handler
Vert.x学习笔记 在Vert.x中,Handler是一个核心概念,用于处理异步事件和回调。它是Vert.x响应式编程模型的核心组件之一,通过函数式接口的方式简化了异步编程的复杂性。 1. Handler的定义 Handler是一个函数式接口,定义如下&#…...
斗地主游戏出牌逻辑用Python如何实现
在Python中实现斗地主的出牌逻辑需要结合游戏规则与数据结构设计,以下是核心实现思路和代码示例: 一、基础数据结构设计 1. 扑克牌表示 用类或字典表示每张牌的花色和点数,例如: class Card: def __init__(self, suit, rank): sel…...

ST MCU CAN模块--TTCAN模式浅析
ST MCU CAN模块使用总结 1 前言 传统CAN 采用事件触发消息传输机制,CSMA/ CD AMP( Carrier-Sense Mult iple Access w ith Co llision Detect ion and Arbit ration on Message Priorit ies, 载波侦听、多路访问、冲突检测、优先级仲裁) 介质访问控制机制, 即多个消息同时…...
【NLP基础知识系列课程-Tokenizer的前世今生第一课】Tokenizer 是什么?为什么重要?
语言的“颗粒度”:我们到底在切什么? 我们都知道模型要处理文本,第一步是把一段段字符变成“token”。但这些 token 究竟应该是句子、单词,还是更小的片段,比如“un break able”? 这背后涉及的是一个非…...