发新帖本帖赏金 50.00元(功能说明)我要提问
返回列表
[uCOS/RTOS]

基于vision板子并在OpenMV工程基础上进行多模态机器人的开发

[复制链接]
1381|5
手机看帖
扫描二维码
随时随地手机跟帖
ly87802541|  楼主 | 2024-9-19 12:38 | 显示全部楼层 |阅读模式
本帖最后由 ly87802541 于 2024-9-19 13:15 编辑

#申请原创#
经过对rtthread社区的官方文档学习后,发现目前vision板子上openmv工程已经很完善,甚至可以WiFi图传。
这对我的方案实现很有帮助,可以极大加快开发的速度和效率。按照教程描述,打开了mjpeg_streamer.py这个WiFi的例程,就很顺畅的跑起来了。
7729166ebb361bff92.png
当然上图所示的结果,也是需要按照教程中说的,修改了自己相应的WiFi联网热点名字和密码才能正确运行。之后就是在另一台Linux服务器上去连接同一个WiFi-AP路由器,vision板子必须和服务器互相ping通,才能打开浏览器访问WiFi图传的mjpeg流。
4585966ebb376eed3b.png
从上图可以看到,虽然因为操作不太方便造成的截图有点模糊,但是在另一台Linux服务器上浏览器已经正确的获取了mjpeg流。
到这里就很容易了,接下来的流程就是在服务器上处理WiFi图传流中的某一帧图片,截图保存后并把这张图片进行token化,准备作为多模态大模型vllm的query,传送给vllm然后获取到它的answer。
接下来,我尝试了几个ollama中的本机运行的多模态大模型vllm,例如llava-phi3/bakllava/llava-llama3等等。
82f582dbc8aa8e8854309d9ac6eaa2ed
dd2c339914d54279f8eba3ca64e0e988
dd2c339914d54279f8eba3ca64e0e988
运行测试结果都不如人意,主要是这台Linux服务器作为我自己用的测试服,只是开发和测试环境里用的,算力性能和内存资源等等都比较受限制,推理时间特别长。所以我干脆把图片传给了云端的Qwen2-vl多模态大模型,下面来看看它的答案answer情况(主要想看下它是如何开始胡说八道的哈哈(不是))。
首先我把获取到jmpeg流中的截取出来一个整体的截屏图片,如下所示。
27962d57af36b830ad441cdb6a92c283
然后我的prompt为------Q:请描述一下图片中的大概内容,从Qwen2-VL得到的答案如下所示。
A:图中是一个网页,地址栏写着192.168.2.103:8080,下面显示的是一段代码,代码内容如下:
c0318bd7bb07a1dcbf6ab087e872da22
b8a4acba422793c5da9edcdba59a3e29
这是一段Python代码,使用了picamera和HTTPServer库,实现了启动一个web服务,端口8080,可以实现实时显示Raspberry Pi的摄像头画面(你看看哈哈)。
这是不是已经接近了一本正经的胡说八道呢?代码部分完全是它自己生产。
    然后我把这个整体图片再做一次中心截取,上传给它。
fa3bdfe94a1cf376a19b413dacacb934
这次我的prompt为------Q:这个图片里面是什么呢?从Qwen2-VL得到的答案如下所示。
A:这张图片显示的是一段计算机代码,看起来像是Python语言编写的。虽然图片有些模糊,但我可以尝试解读一下其中的部分内容。代码似乎与网络通信有关,包括导入了一些库,比如os、sys、time、picamera以及两个HTTP相关的库。此外,还定义了一个CameraServer类,继承自SimpleHTTPRequestHandler,处理GET请求。这个类有两个方法do_GET,分别对应于不同的路径。一个是根路径'/',另一个是'/stream.jpg'。根路径返回一个HTML页面,该页面包含一个指向'stream.jpg'的图片元素。而'/stream.jpg'路径则返回一个JPEG图片。整个程序看起来像是一个简易的HTTP服务器,用于提供实时的图片流服务。
那这一次的答案就还是算比较靠谱了,而且它并没有自己胡编乱造,要给Qwen2-VL多模态大模型点赞!
最后呢作为比对基准,当然我们是用直接截屏的方式,获取了omv-ide中的图片上传的。
f58c0c09eb2dc75996a24ad606e5840c
这次我的prompt为------Q:这个图片里面是什么东西呢?从Qwen2-VL得到的答案如下所示。
A::图中是OpenMV IDE的界面,左侧是代码编辑区,右侧是图像预览区。代码是用python语言编写的,主要功能是通过WiFi传输视频流。
具体来说:
第23行到第30行是初始化摄像头模块并设置分辨率;
第31行到第40行是连接WiFi;
第41行到第57行是创建服务器套接字并开始发送视频流;
最后一行是串口输出的数据。
代码的具体含义如下:
58e53b807802953668c1805c33d4caa4
39e3b7c891d9411836202ad5cca05269
这段代码用于将OpenMV Cam连接到指定的Wi-Fi网络,并通过HTTP协议将压缩后的JPEG图像流发送到主机。首先初始化摄像头传感器和WLAN模块,然后尝试连接到指定的Wi-Fi网络。一旦成功连接,就创建一个TCP/IP套接字并监听端口8080上的连接请求。当有客户端连接时,就开始发送压缩后的JPEG图像流。最后关闭连接。
可以看出来,这次才是最靠谱的答案状态,并且根据实际的omv-mpy源码进行解释。
PS:通过上述的操作流程和编码实现等等,我们已经完成了实测vision板子的多模态对话聊天全流程。并且做了三项对比,由此我们可以熟知当前多模态大模型在具身智能机器人应用场景里的局限性,当然也包含了先进性。

最后,尚未未实现的流程也有,例如扩展iis接口的Dmic硅麦,或者USB接口的mic采集语音音频,再用其他支持音视频交互的多模态大模型进行对话聊天的chatbot流程等。


使用特权

评论回复

打赏榜单

21小跑堂 打赏了 50.00 元 2024-10-10
理由:恭喜通过原创审核!期待您更多的原创作品~~

评论
21小跑堂 2024-10-10 15:41 回复TA
实测vision开发板多模态对话聊天测试,作者通过多项对比,测试大模型再机器人应用场景里的局限性和先进性。 (ps:大佬后续再申请原创时请@21小跑堂,以便您的文章能及时审核~~) 

相关帖子

ly87802541|  楼主 | 2024-9-19 13:16 | 显示全部楼层

使用特权

评论回复
dukedz| | 2024-9-20 11:23 | 显示全部楼层
本帖最后由 dukedz 于 2024-9-20 11:27 编辑

用 openmv 主要是用它的边缘计算吧,直接算好输出结果,如果只是传图,对于机器人这样的应用,我的选择是直接 rs485 传图,wifi 传还要配网、担心无线网络稳定性问题。

https://bbs.21ic.com/icview-3338010-1-1.html

使用特权

评论回复
ly87802541|  楼主 | 2024-9-20 13:39 | 显示全部楼层
本帖最后由 ly87802541 于 2024-9-20 13:40 编辑
dukedz 发表于 2024-9-20 11:23
用 openmv 主要是用它的边缘计算吧,直接算好输出结果,如果只是传图,对于机器人这样的应用,我的选择是直 ...


485玩这个?我不清楚你的需求点了,我要求流式的传输来的,后续可能还有音频流。

这里图传的过程,主要是测试流程。

使用特权

评论回复
发新帖 本帖赏金 50.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

346

帖子

5

粉丝