YOLOv7与MediaPipe在人体姿态估计上的对比
前期文章的分享,我们介绍了YOLOv7人体姿态估计的文章以及MediaPipe人体姿态估计方面的文章。由于YOLOv7与MediaPipe都可以进行人体姿态估计,我们本期就对比一下2个算法的不同点。
利用机器学习,进行人体33个2D姿态检测与评估
人工智能领域也卷了吗——YOLO系列又被刷新了,YOLOv7横空出世
MediaPipe
基于深度学习的人体姿态估计
自2014年Google首次发布DeepPose以来,基于深度学习的姿态估计算法已经取得了较大的进步。这些算法通常分两个阶段工作。人员检测 关键点定位
根据设备[CPU/GPU/TPU]的不同,不同框架的性能有所不同。有许多两阶段姿态估计模型在基准测试中表现良好,例如:Alpha Pose、OpenPose、Deep Pose等等。然而,由于两阶模型相对复杂,获得的实时性能非常昂贵。这些模型在GPU上运行得很快,但在CPU上运行的较慢。就效率和准确性而言,MediaPipe是一个很好的姿态估计框架。它在CPU上生成实时检测,且速度很快。
YOLOv7
与传统的姿态估计算法不同,YOLOv7姿态是一个单级多人关键点检测器。它具有自顶向下和自底向上两种方法中的优点。YOLOv7姿态是在COCO数据集上训练的,前期的文章我们也分享过YOLOv7人体姿态检测的代码。
YOLOv7 是 YOLO 系列中最先进的新型物体检测器。根据论文,它是迄今为止最快、最准确的实时物体检测算法。根据 YOLOv7 论文,最好的模型获得了 56.8% 的平均精度(AP),这是所有已知对象检测算法中最高的。各种模型的速度范围为 5-160 FPS。与基础模型相比,YOLOv7 将参数数量减少到40%,计算量减少 50%。
MediaPipe人体姿态检测
MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌,一系列重要产品,如 、Google Lens、ARCore、Google Home 以及 ,都已深度整合了 MediaPipe。
MediaPipe 的核心框架由 C++ 实现,并提供 Java 以及 Objective C 等语言的支持。MediaPipe 的主要概念包括数据包(Packet)、数据流(Stream)、计算单元(Calculator)、图(Graph)以及子图(Subgraph)。
MediaPipe Pose是用于高保真人体姿势跟踪的ML解决方案,利用BlazePose研究成果,还从ML Kit Pose Detection API中获得了RGB视频帧的整个33个2D标志(或25个上身标志)。当前最先进的方法主要依靠强大的桌面环境进行推理,而MediaPipe Pose的方法可在大多数现代手机,甚至是Web上实现实时性能。
MediaPipe中有三个模型用于姿势估计。BlazePose GHUM Heavy BlazePose GHUM Full BlazePose GHUM Lite
YOLOv7 vs MediaPipe特征对比
YOLOv7
MediaPipe
Topology
17 Keypoints COCO
33 Keypoints COCO + Blaze Palm + Blaze Face
Workflow
Detection runs for all frames
Detection runs once followed by tracker until occlusion occurs
GPU support
CPU and GPU
CPU
Segmentation
Segmentation not integrated to pose directly
Segmentation integrated
Number of persons
Multi-person
Single person
YOLOv7是一个多人检测框架。MediaPipe是一个单人检测框架(主要原因是只用于CPU,速度较快),因此在我们实现人体姿态检测时,需要关注是否只检测多人,或者单人,当然对自己的硬件配置也有较高的要求。
MediaPipe 代码实现人体姿态检测 cap = cv2.VideoCapture(0) time.sleep(2) while cap.isOpened(): success, image = cap.read() if not success: print("Ignoring empty camera frame.") continue image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB) image.flags.writeable = False results = pose.process(image) image.flags.writeable = True image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) mp_drawing.draw_landmarks( image, results.pose_landmarks, mp_pose.POSE_CONNECTIONS) cv2.imshow("MediaPipe Pose", image) if cv2.waitKey(5) & 0xFF == ord("q"): break pose.close() cap.release()
由于MediaPipe是一个单人检测框架,因此在视频中,MediaPipe只检测单个人的姿态,其他人体姿态则会忽略,当然,软件会检测哪个人体姿态,理论上是最前面的人体姿态,但是通过实验后,其实并不完全是这样。从上图可以看出,虽然MediaPipe仅支持使用在CPU上,但是检测速度与精度相当快,缺点是智能进行单人体姿态检测。
YOLOv7 代码实现人体姿态检测
从 YOLOv7-Tiny 模型开始,参数刚刚超过 600 万。它的验证 AP 为 35.2%,击败了具有相似参数的 YOLOv4-Tiny 模型。具有近 3700 万个参数的 YOLOv7 模型提供了 51.2% 的 AP,再次击败了具有更多参数的 YOLOv4 和 YOLOR 的变体。
YOLO7 系列中较大的模型,YOLOv7-X、YOLOv7-E6、YOLOv7-D6 和 YOLOv7-E6E。所有这些都击败了 YOLOR 模型,它们的参数数量相似,AP 分别为 52.9%、55.9%、56.3% 和 56.8%。
def pose_video(frame): mapped_img = frame.copy() img = letterbox(frame, input_size, stride=64, auto=True)[0] print(img.shape) img_ = img.copy() img = transforms.ToTensor()(img) img = torch.tensor(np.array([img.numpy()])) img = img.to(device) with torch.no_grad(): t1 = time.time() output, _ = model(img) t2 = time.time() fps = 1/(t2 - t1) output = non_max_suppression_kpt(output, 0.25, # Conf. Threshold. 0.65, # IoU Threshold. nc=1, # Number of classes. nkpt=17, # Number of keypoints. kpt_label=True) output = output_to_keypoint(output) nimg = img[0].permute(1, 2, 0) * 255 nimg = nimg.cpu().numpy().astype(np.uint8) nimg = cv2.cvtColor(nimg, cv2.COLOR_RGB2BGR) for idx in range(output.shape[0]): plot_skeleton_kpts(nimg, output[idx, 7:].T, 3) return nimg, fps
由于YOLOv7是一个多人检测框架,因此在单个视频帧中,YOLOv7框架会实时检测多人体姿态。从上图可以看出,检测速度也是很快的,这是因为此例子使用的是GPU模型运行,若YOLOv7应用在CPU上面,则检测速度很慢。
MediaPipe与YOLOv7对比检测
从以上的介绍,我们知道,mediapipe是一个单人检测框架,因此检测速度特别快,同样的的一段检测对象,同样的使用CPU进行人体姿态检测,则mediapipe完全占绝对优势。
CPU人体姿态检测
但是一旦上GPU,yolov7的优势就会大大的提高,可以看到,一旦用上了GPU,yolov7的检测速度就达到了84FPS,而由于mediapipe仅仅用于CPU,就算加上GPU,也发挥不到GPU的优势。
其他文章参考
Transformer模型注意力机制的概念
利用机器学习,进行人体33个2D姿态检测与评估
利用机器学习,进行人手的21个3D手关节坐标检测
利用机器学习进行人脸468点的3D坐标检测,并生成3D模型
MediaPipe 集成人脸识别,人体姿态评估,人手检测模型
颠覆2D对象检测模型,MediaPipe 3D对象检测还原真实的对象特征
MediaPipe Face Detection可运行在移动设备上的亚毫秒级人脸检测
高大上的YOLOV3对象检测算法,使用python也可轻松实现
使用python轻松实现高大上的YOLOV4对象检测算法
基于python的YOLOV5对象检测模型实现
古人发明的关于时间的神秘魔法,就在这套岁末献给孩子们的书里我们的职责是平整土地,而非焦虑时光。你做三四月的事,在八九月自有答案。余世存每当岁末,我们都会跟孩子讨论一个特别重要的关键词,那就是时间。特别在岁末年初时,大家总是喜欢盘点,总是想
冬季进补原则虚者补之,寒者温之都说冬季进补,广东省第二中医院白云院区大内科主任李桂明指出,四时养生认为春养肝夏养心秋养肺冬养肾。冬季的饮食调养要遵循虚者补之,寒者温之的传统,在养肾上可适当吃一些坚果,同时根据体
三浦友和才是反油腻男人梳大背头,西服混搭,70岁也不显老女人最大的天敌是年龄,随着年龄的增长会伴随着身材发福长皱纹等衰老问题的出现。男人最忌讳的则是油腻,这种油腻不是年龄导致,可能是因为你不注重穿衣打扮,气质油腻更毁颜值!因此,你会发现
墨色男人,包罗万象在鳞次栉比的城市勾勒一场时装大梦,暗墨为底色,心思却赤诚。极盛极简,一念之间,包罗万象,微光漫射。当梦醒交错,日月起落,黑色一隅,亦有天地。3D立体玫瑰花蔓藤刺绣西装长裤纱质衬衫均
克拉拉身材真好多少男人喜欢这样的身材娱评大赏克拉拉真是人间尤物,穿蓝色连衣裙性感高挑,身材怎么样?对于许多成熟女性来说,紧身裙是一种非常流行的服装,穿紧身衣可以展示女性的身体优势,更好地提升女性气质,克拉拉身材高大,
ColorOS13升级机型时间表ColorOS13正式版公测版适配进度绿厂OPPO系全新的水生设计ColorOS13操作系统于2022年8月份发布以来,时间已过4个月,现如今ColorOS13正式版公测版适配进度如何了?以下为你汇总截至目前的Colo
奥杜尔难度翻倍,Boss数值逆天无人能过,251武器太难拿了目前在WLK怀旧服的PTR测试服上,暴雪已经将版本更新到Build47014,并且发布了最新蓝帖,详细地向玩家解释了分析了被其成为PreNerf(削弱前)版本的奥杜尔各大Boss的
Scout离开EDG?前FPX打野爆料,老岳带来好消息岁月如歌,LPLLCK冬季转会期步入收官阶段,目前已经有7支LCK战队确定了自己在新赛季的主力阵容,包括Faker领衔的T1签下LOL冠军ADC羊驼Deft的DK将Viper招入麾
总觉得肚子胀气?医生帮你分析了这5个原因虽然肚子胀气是普遍现象,但也不能忽视。一般胀气的原因可以分为两种,一种是饮食不当引起的胀气,一种是疾病引起的胀气。前者可以通过健康的饮食和生活管理来改善,后者需要及时去医院治疗。那
冬令进补,粥疗最好冬天滋补身体不用花大钱,古代养生学家推荐,早起一碗粥就能健脾胃养气血,好处多多!冬天冷飕飕,想要强健身体,除了吃姜母鸭羊肉炉进补,中医告诉你,其实一碗粥,就能达到顾胃养肾的功效,健
龚克AI可帮助城市抵御风险,但要避免技术异化为权利2022年12月9日,第三届人工智能合作与治理国际论坛在清华大学正式召开。主论坛于今日上午以线上的方式进行,期间,多名学者专家围绕人工智能引领韧性治理与未来科技的主题,进行了多项讨