admin管理员组文章数量:1445122
多模态大模型驱动的类特斯拉FSD自动驾驶实践
近年来,多模态大模型层出不穷,但鲜有令人耳目一新的实际应用。那么,多模态大模型究竟能做什么?许多人最常见的用法是:对话时给它一张图片,它告诉你图片里有什么。但这仅仅是开始,真正的潜力远不止于此!本文将带你探索如何借助视觉大模型开发一个有趣的实际应用,驱动自动驾驶。
前言
前几天,我在 X(Twitter)上刷到一个非常有趣的视频。视频展示了一辆特斯拉在路口等待红灯,绿灯亮起后仍然静候对向车道的警车通过。整个视频采用第一视角,生动展现了特斯拉 FSD 自动驾驶系统的表现。
众所周知,特斯拉的自动驾驶系统依赖纯视觉方案。那么,是否可以基于这个视频,结合视觉大模型开发一个有趣的 demo 呢?让我们一探究竟!
.f10002.mp4?
1. 系统设计
尽管我们对特斯拉 FSD 自动驾驶系统的内部逻辑知之甚少,但可以推测其基本原理:先感知环境,基于感知数据进行决策,再输出指令进行执行。基于这一逻辑,我们设计了一个基于视觉大模型的小型自动驾驶方案(虽然只是一个 demo,但未来可能真的会出现类似的玩具!)。
2. 准备工作
认识视觉大模型
视觉大模型不仅能识别图像中的内容,还能像语言大模型(LLM)一样进行规划、反思和推理工作。因此,它在结合多模态输入时展现出了强大的潜力。
在本次实验中,我们采用了 BigModel 智谱 AI 大模型开放平台[1] 提供的免费在线视觉大模型 GLM-4V-Flash。它支持语言理解、图像理解和生成等多维度应用场景,能够快速实现实验目标。据了解 BigModel 的 Flash 系列免费模型全家桶上线,覆盖语言、图像理解、图像生成、视频生成,均可免费调用 API,多能力多维度应用场景,实现理想效果。
相关模型与链接:语言模型 GLM-4-Flash[2]、多模态理解模型 GLM-4V-Flash[3]、文生图模型 CogView-3-Flash[4]、文生视频模型 CogVideoX-Flash[5]:
点击原文访问BigModel开放平台,登录平台后,进入控制台,点击右上角的钥匙图标即可生成 API Key,用于后续调用。
3. 实现过程
根据设计方案,我们的实现流程包括以下几个步骤:解析视频、调用 GLM-4V-Flash 进行感知与决策、以及将结果进行可视化输出。在此之前,我们需要初始化一下客户端。
代码语言:javascript代码运行次数:0运行复制client = openai.OpenAI(
api_key="你的智谱API KEY",
base_url=";
)
3.1 视频读取
使用 OpenCV 从视频中逐帧读取图像。你可以通过以下命令安装 OpenCV:
代码语言:javascript代码运行次数:0运行复制pip install opencv-python
通过以下代码读取视频和遍历视频帧:
代码语言:javascript代码运行次数:0运行复制cap = cv2.VideoCapture(video_path)
while True:
ret, frame = cap.read()
...
assistant_reply = process_frame_with_model(frame, user_command)
cv2.imshow("实时视频帧", frame)
cv2.waitKey(1)
cap.release()
cv2.destroyAllWindows()
3.2 感知与决策
通过视觉大模型 GLM-4V-Flash 进行感知与决策。我们需要为大模型设定角色和任务,以便其理解当前的工作背景。按照我们之前的文章《敲黑板!吴恩达LLM Agent工作流Prompt精华全解析》,显然要给大模型设定一些角色和任务,这里按照大家自己的理解或者请大模型辅助编写。例如:
代码语言:javascript代码运行次数:0运行复制sysmte_prompt = """
你是一套 Tesla 的 Full Self-Driving (FSD) 系统,负责实时处理车辆摄像头和传感器捕获的数据,以辅助自动驾驶决策。
你首先需要环境感知,其次根据感知的内容提供驾驶决策,最后输出清晰简介的指令。
你的职责包括:
### 环境感知:
- 分析实时传输的单帧图像,识别车道线、交通标志、红绿灯、行人、车辆和障碍物等。
....
### 决策支持:
- 根据目标物体的位置、车辆的当前速度和环境状态,评估是否需要立即采取行动(如停车、减速或变道)。
...
### 反馈输出:
- 输出清晰、简洁的驾驶环境描述...
- 返回格式示例:
{
"objects": [
{"label": "Traffic Light", "bbox": [50, 30, 100, 80], "distance": 25, "priority": "high"}
],
"action": "stop"
}
"""
为了上传图像数据,我们需要将帧图像编码为 Base64 格式:
代码语言:javascript代码运行次数:0运行复制def encode_image_from_frame(frame):
_, buffer = cv2.imencode(".jpg", frame)
return base64.b64encode(buffer).decode("utf-8")
然后,将图像和提示文本一并发送至大模型:
代码语言:javascript代码运行次数:0运行复制def process_frame_with_model(frame, user_text=None):
base64_image = encode_image_from_frame(frame)
if user_text is None:
user_text = "我目前行驶在右车道,请分析这张图像,告诉我当前环境的驾驶风险,并建议下一步行动。"
messages = [
{"role": "system","content": system_prompt},
{"role": "user","content": [{"type": "text","text": user_text},{"type": "image_url","image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}]}
]
response = client.chatpletions.create(model="glm-4v-flash",messages=messages,temperature=0,)
return response.choices[0].message.content
3.3 输出解析与可视化
从模型输出的 JSON 中提取关键信息,并将结果可视化在帧图像上:
代码语言:javascript代码运行次数:0运行复制def parse_and_draw_response(frame, response_text):
json_content = extract_json_from_response(response_text)
response_data = json.loads(json_content)
objects = response_data.get("objects", [])
action = response_data.get("action", "")
height, width, _ = frame.shape
if action:
frame_height, frame_width = frame.shape[:2]
cv2.putText(frame, action, (frame_width // 2, frame_height // 2), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 3)
...绘制物体边框和标签...
4. 运行
在运行过程中,每帧图像都会被分析并生成对应的决策指令。以下是某一帧的输出示例:
代码语言:javascript代码运行次数:0运行复制{
"objects": [
{
"label": "Car",
"bbox": [200, 150, 300, 250],
"distance": 70,
"priority": "medium"
},
{
"label": "Traffic Light",
"bbox": [400, 350, 500, 450],
"distance": 120,
"priority": "high"
}
],
"action": "go"
}
你可以通过以下视频查看实际运行效果,其中红色字体显示了模型生成的行动指令。
.f10002.mp4?
5. 总结
通过本次实验,我们初步探索了多模态大模型在自动驾驶中的潜力。虽然这只是一个简单的 demo,但它展示了视觉大模型在环境感知、决策和指令输出方面的强大能力。未来,随着技术的不断发展,类似的方案或许能在实际应用中大放异彩!
参考资料
[1]
BigModel 智谱 AI 大模型开放平台: /
[2]
GLM-4-Flash:
[3]
GLM-4V-Flash:
[4]
CogView-3-Flash:
[5]
CogVideoX-Flash:
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-01-08,如有侵权请联系 cloudcommunity@tencent 删除系统自动驾驶模型实践视频本文标签: 多模态大模型驱动的类特斯拉FSD自动驾驶实践
版权声明:本文标题:多模态大模型驱动的类特斯拉FSD自动驾驶实践 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1748221183a2828393.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论