特斯拉自动驾驶看懂了行人手势 | 初探行人决策和手势识别

作者 | ahrs365  编辑 | 哎嗨人生

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

>>点击进入→自动驾驶之心技术交流群

本文只做学术分享,如有侵权,联系删文

1.特斯拉礼让行人并看懂行人手势

在下图中,行人速度比较快,特斯拉将其横穿马路的意图预测的很准确,并且做出了减速让行的决策。

70d2cdae00649dab5a752e9f36db4d57.png

行人停下脚步以后,可以看到,渲染的行人变成了迎面走来的姿态。(当然,这个是渲染的行人,算法里真正拿到的行人意图可能与它不一致)。特斯拉做出了继续等待行人的决策。

0f9ebb2debe44d9bd89b3cbd5f2504c1.png

随后,行人挥手示意车辆通过,特斯拉做出了相应的决策,输出了轨迹,并加速离开。

5970956d956285dc405cca498439bc6c.png

2.自动驾驶中关于行人的决策

在自动驾驶中,高动态的障碍比如车辆和行人,自车需要与它们进行交互甚至博弈。对于车辆的行驶意图,它受到路沿、黄线、车辆运动学等等众多的约束,并且还有转向灯、刹车灯、倒车灯等信号提示,对于这类障碍物的意图预测,是比较准确的。但是对于行人的意图预测就很难了。

这个场景就是一个典型的自车与横穿行人交互的场景,按照传统的方法,也可以实现。首先是感知模块检查到动态行人,然后预测模块预测出行人横穿的意图,接下来,决策模块做出礼让行人的决策(比如在车前方加上停止线),最后规划模块优化出轨迹。那特斯拉基于端到端的方法,可能就没有这么多模块了,直接拿数据去驱动,只要训练的数据里有这种场景,它就能处理。

如果用传统的方法,怎么实现在行人挥手后,加速离开呢。这个好说,在预测模块中,增加人类手势识别的功能,将识别到的手势,给到决策模块,决策模块再根据这个场景,手写一些规则,如果满足这些规则,比如

if 行人速度为零 && 行人挥手 && 行人与自车一定距离 && 其他
   决策-->加速绕行
else 
   停车等待

如果用端到端的方法,无论是完全的端到端,还是类似于UniAD那种分成几个模块端到端的,通过大量的训练后,自动驾驶车辆在看到这个场景时,就会做出相应的决策和行为。

大部分场景,基于数据驱动的方式能做的,手写规则也能做,只是手写规则毕竟是人脑想出来的,一旦规则变得越来越多,各种规则之间相互影响,就很难再增加新的规则了。而基于数据驱动的方式,数据集可以一直加,模型可以一直训练。

3.手势识别的方法

本文重点还是记录一下手势识别的方法,通过这个来进一步了解机器学习的相关知识。重点学习基于视觉的手势识别。

3.1 基于雷达的手势识别

这个比较有名的是goolge的Soli项目,Soli雷达是由谷歌和英飞凌合作,专门为近距离感知任务研发的一款60GHz毫米波雷达产品。将各个特征沿着多普勒维连接在一起,利用3x3卷积提取运动信息。提取到的特征被送入LSTM模型进行分类预测,时间序列长度被设置为12帧。

d1b32810d04f6318872fa85c714b9606.png

算法就是CNN+LSTM。利用8层的CNN进行特征提取,利用LSTM对CNN提取的特征进行时序特征的提取和手势分类。

fecd9c243542fa9862b70579a2304475.png

可能是由于手势定义过于精细,雷达精度达不到,最终这个手势识别的功能没有完整的应用到google手机上。不过CNN+LSTM的套路,是值得学习的,之后有时间我会实践一下,看下效果。

3.2 基于视觉的手势识别

opencv,CNN都可以做手势识别,本文重点记录一下google的开源框架MediaPipe,可以方便的在安卓,web,嵌入式设备中部署使用。

论文:https://arxiv.org/pdf/2111.00038
项目:https://ai.google.dev/edge/mediapipe/framework?hl=zh-cn

f2b1569fd4f205164dedff547800c87d.png

0b1af23d13522a8d6bd03f5486b30bbb.png

下边是实践代码,用opencv和MediaPipe实现的手部检测,只涉及手部追踪,下一次再学习手势分类。

需要安装:

1. 下载安装python
2. 下载安装vscode(其他ide也可以)
3. pip install opencv-python
4. pip install mediapipe
import cv2
import mediapipe as mp
import time


cap = cv2.VideoCapture(0)
mpHands = mp.solutions.hands
hands = mpHands.Hands()
mpDraw = mp.solutions.drawing_utils
handLmsStyle = mpDraw.DrawingSpec(color=(0,0,255), thickness=5)
handConStyle = mpDraw.DrawingSpec(color=(0,255,0), thickness =10)
pTime = 0
cTime = 0


while True:
   ret, img = cap.read()
   if ret:
        imgRGB = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
        result = hands.process(imgRGB)
        # print(result.multi_hand_landmarks)


        imgHeight = img.shape[0]
        imgWidth = img.shape[1]


        if result.multi_hand_landmarks:
            for handLms in result.multi_hand_landmarks:
                mpDraw.draw_landmarks(img,handLms,mpHands.HAND_CONNECTIONS, handLmsStyle,handConStyle)
                for i, lm in enumerate(handLms.landmark):
                    xPos = int(lm.x * imgWidth)
                    yPos = int(lm.y * imgHeight)
                    cv2.putText(img,str(i),(xPos-25,yPos+5),cv2.FONT_HERSHEY_SIMPLEX,0.4,(0,0,255),2)
                    print(i,xPos, yPos)


        cTime = time.time()
        fps = 1/ (cTime-pTime)
        pTime = cTime
        cv2.putText(img,f"FPS : {int(fps)}",(30,50), cv2.FONT_HERSHEY_SIMPLEX,1,(255,0,0),3)
        cv2.imshow('img',img)
        
   if cv2.waitKey(1) == ord('q'):
        break

下边是代码参考的视频,感兴趣的可以看一看:

https://www.youtube.com/watch?v=x4eeX7WJIuA
https://www.bilibili.com/video/BV1GR4y1W7KS/?spm_id_from=333.337.search-card.all.click&vd_source=c22e088abc8e5f41edd4d4ebc99ecc48

投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!

① 全网独家视频课程

BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署大模型与自动驾驶Nerf语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

2505c91380020bb54d2d0ca2cf9b0fd8.png

网页端官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频

d3367223cf9e8b1311449d81f65bb365.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

c4325d73a02e4fb7985c8303f70d091f.jpeg

④【自动驾驶之心】全平台矩阵

103bee81ae2f4aa92c0159e914a10068.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值