基于深度学习的手势控制模型

news2025/1/31 8:08:45

关于深度实战社区

我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万+粉丝,拥有2篇国家级人工智能发明专利。

社区特色:深度实战算法创新

获取全部完整项目数据集、代码、视频教程,请进入官网:zzgcz.com。竞赛/论文/毕设项目辅导答疑,v:zzgcz_com


1. 项目简介

该项目是一个基于深度学习的虚拟交互系统,旨在实现手势控制、面部识别和背景模糊等高级图像处理功能。它使用了Mediapipe作为主要的手部和面部特征检测工具,通过捕捉摄像头图像流进行实时处理。项目的主要目标是创建一个能够识别手势动作的虚拟摄像头,用户可以通过比出特定手势来控制视频的播放、暂停、放大和模糊等操作。系统能够识别诸如“拳头闭合”、“手上移”、“手下移”、“两指显示”和“三指显示”等手势信号,并根据这些手势动态调整摄像头画面的状态。此外,项目还集成了面部识别与背景模糊功能,使其能够在人脸存在时自动模糊背景,提升用户隐私保护。此项目的应用场景非常广泛,可以用于视频会议、虚拟课堂以及其他需要实时手势交互的场景。项目通过将不同的图像处理模块(如handsutilsfaceutilszoomutils)整合为一体,提供了一个多功能的虚拟摄像系统,实现了手势识别和虚拟交互的有效结合。

在这里插入图片描述

2.技术创新点摘要

  1. 多手势识别和控制机制的集成:项目中使用了Mediapipe的手部检测模块,能够实时跟踪手部关键点并识别多种手势信号(如“拳头闭合”、“手上移”、“两指显示”和“三指显示”)(fingerutils)。这些手势信号不仅被用于控制虚拟摄像头的状态(如启用或禁用视频流),还实现了精细的手势控制操作(如放大、缩小、背景模糊)。特别是通过判断两指间距动态调整缩放比例的创新设计,使得用户可以通过手势精确地控制图像的变焦(zoomutils)。
  2. 面部识别与背景模糊的组合应用:在面部检测方面,项目通过Mediapipe的面部检测模块实现了对单人和多人的识别(face_detection)。结合背景模糊算法(使用faceutils.background_blur),当系统检测到有人脸存在时,能够自动进行背景虚化,从而提升隐私保护效果(faceutils)。这一功能对远程办公和视频会议场景特别有用,因为它能有效避免背景中敏感信息的泄露。
  3. 虚拟摄像头实时效果展示:项目利用pyvirtualcam库将处理后的图像流实时输出到虚拟摄像头设备上(main)。这一技术使得经过手势控制和人脸处理的画面可以被其他应用程序(如Zoom或Teams)直接使用,极大地扩展了系统的适用场景。这种模块化输出方式不仅提高了系统的集成度,还为后续的扩展提供了可能。
  4. 自定义手势识别规则与复合信号判断机制:项目中的手势识别规则是基于多点位置关系进行的复合判断(如两指显示与手势方位组合)(fingerutils)。该机制通过逐帧分析手部关键点之间的空间关系,定义了多种自定义手势信号,并能在不同手势之间平滑切换。这种规则判定方式能够根据用户的手部动态调整输出行为,使其具备较高的交互响应精度和稳定性。

3. 数据集与预处理

该项目的数据主要来源于实时摄像头捕捉的视频帧,而非预定义的静态数据集。因此,每个数据输入都具有高度的动态性和随机性,这给模型的实时响应提出了较高的要求。该项目使用OpenCV捕捉视频流,并通过Mediapipe进行关键点检测和图像处理,涉及的主要数据类型包括手部和面部关键点坐标、视频帧图像以及特征点的状态数据。

数据预处理流程
  1. 图像标准化:项目使用OpenCV获取摄像头输入,并通过调整图像大小(1280×720像素)和帧率(30FPS)来确保输入数据的格式一致(main)。这种标准化的图像格式便于后续的关键点检测和特征提取。
  2. 颜色空间转换:在进行Mediapipe处理之前,所有输入图像会被从BGR格式转换为RGB格式。颜色空间的转换能够提升Mediapipe模型的处理效率,并确保模型能够更精确地识别图像中的手部和面部特征(face_detection)。
  3. 数据增强与裁剪:为了提高系统的实时性和降低冗余计算量,项目在检测手部动作时采用了局部裁剪策略。该策略通过只分析图像中的特定区域(如手部所在的区域)来减少数据维度,并提高了手势识别的速度(handsutils)。
  4. 特征点提取与归一化:对于每一帧图像,系统会提取手部和面部的特征点,并根据图像的宽高进行归一化处理(特征点坐标被标准化到0~1的范围内)。这种归一化的处理方式能够消除不同分辨率图像输入带来的影响,使模型能够在不同设备上保持一致的精度和效果。
  5. 多模态数据的融合:系统整合了手部与面部检测数据,实现了多模态特征的联合应用。通过判断手部关键点与人脸状态的关系(如手部姿态与面部位置),系统能够对复杂场景进行多维度的解析。

4. 模型架构

本项目采用了Mediapipe提供的预训练模型与OpenCV实现手部和面部检测与图像处理,并将其集成到虚拟摄像头系统中。该项目的架构主要由手部识别、面部检测和背景处理三个子模块组成。由于Mediapipe内部封装了大量的深度学习模型和图像处理操作,因此该项目没有进行自定义模型的训练,但使用了特定规则的算法组合来实现多模式交互功能。以下是每个模块的具体逻辑与功能说明:

  1. 模型结构逻辑
  1. 手部识别模型
    • Mediapipe的Hands模型由三个主要部分组成:手部检测器(Hand Detection)手部关键点检测(Hand Landmark Model)和手势分类(Gesture Classification)
    • 手部检测器使用了轻量级CNN(卷积神经网络)架构对图像进行二值化分类,输出手部边界框(Bounding Box)坐标。
    • 关键点检测模块基于特征点预测网络,提取21个关键点(Landmarks),其输出公式为: L i = ( x i , y i , z i ) , i = 1 , 2 , … , 21 L_i = (x_i, y_i, z_i), \quad i = 1, 2, \ldots, 21 Li=(xi,yi,zi),i=1,2,,21 其中,(xi,yi,zi)代表手部第 i 个特征点的三维坐标位置。
    • 手势分类模块通过对关键点间的相对距离和方向进行计算,输出手势类别(如“握拳”、“手上移”、“两指显示”等),公式为: D i , j = ( x i − x j ) 2 + ( y i − y j ) 2 + ( z i − z j ) 2 D_{i, j} = \sqrt{(x_i - x_j)^2 + (y_i - y_j)^2 + (z_i - z_j)^2} Di,j=(xixj)2+(yiyj)2+(zizj)2 该公式计算手部两个特征点 i 和 j 之间的欧几里得距离,以判断手指的相对位置关系。
  1. 面部检测模型
    使用了Mediapipe的FaceDetection模型,其核心结构是一个单阶段目标检测网络(Single-Stage Detector),用来检测图像中的面部位置。该模型输出的是每个人脸的边界框和人脸特征点。
    检测框的预测公式为: B = ( x , y , w , h ) B = (x, y, w, h) B=(x,y,w,h) 其中,(x,y)是人脸中心坐标,w 和 h 分别是宽度和高度。
  1. 背景模糊模型
    使用了Mediapipe的SelfieSegmentation模型,该模型将图像分割为前景(用户)和背景两部分。其核心结构为基于深度学习的自监督分割网络,输出的分割掩码(Segmentation Mask)表示像素是否属于前景: M ( x , y ) = { 1 , 若  ( x , y )  属于前景 0 , 若  ( x , y )  属于背景 M(x, y) = \begin{cases} 1, & \text{若 } (x, y) \text{ 属于前景} \\ 0, & \text{若 } (x, y) \text{ 属于背景} \end{cases} M(x,y)={1,0, (x,y) 属于前景 (x,y) 属于背景 最终通过掩码将背景区域进行模糊处理。
  1. 模型的整体流程
  1. 数据预处理
    • 捕捉摄像头的实时视频流,并标准化图像格式(如分辨率、帧率等)。
    • 使用mediapipe的颜色空间转换与局部裁剪策略减少冗余数据量,并根据用户手势与人脸特征进行图像局部处理。
  1. 手部与面部检测
    • 调用Hands模块和FaceDetection模块同时进行手部与面部的多模态特征检测,并通过判断手部特征点与面部特征的相对位置关系,实现多种手势组合控制功能(如图像缩放与背景模糊切换)。
  1. 图像处理与输出
    • 当手势识别模型检测到特定手势信号时(如“握拳”或“三指”),调用相应图像处理模块(如背景模糊、图像放大等)进行动态调整。
    • 将处理后的图像实时输出到虚拟摄像头设备中,供其他应用程序(如Zoom、Teams)使用。
  1. 模型评估与性能指标

由于该项目是一个实时视频处理系统,其主要评估指标包括:

  1. 帧率(FPS) :衡量系统在不同设备上的处理速度,确保能够达到30帧每秒以上的实时性能。
  2. 手势识别准确率:手部关键点检测和手势分类的准确性,该指标由手势判断的误差率(手势识别错误率)衡量。
  3. 延迟(Latency) :在手势发生与系统响应之间的时间差,理想情况下延迟应小于100毫秒。

5. 核心代码详细讲解

1. main.py 中的核心代码

文件:main.py(main)

with pyvirtualcam.Camera(width, height, fps, device=device_val, fmt=PixelFormat.BGR) as cam:print('Virtual camera device: ' + cam.device)while True:
        success, img = cap.read()  # 从摄像头中读取一帧图像
        cropped_img = img[0:720, 0:400]  # 裁剪图像,保留720x400区域用于手部检测
        img = handsutils.mediapipe_gestures(img, cropped_img)  # 调用手势检测模块,对图像进行手势识别处理
        img = cv2.resize(img, (1280, 720))  # 将处理后的图像调整回1280x720分辨率
        cam.send(img)  # 将图像发送至虚拟摄像头
        cam.sleep_until_next_frame()  # 保持每帧的输出时间一致
  • pyvirtualcam.Camera() :创建一个虚拟摄像头对象,将处理后的图像输出到虚拟摄像头设备中。width, height, fps 分别设置图像的宽度、高度和帧率;fmt=PixelFormat.BGR 指定图像格式为BGR。
  • cap.read() :从摄像头捕捉一帧图像。success 表示捕捉是否成功,img 是读取的图像帧。
  • cropped_img = img[0:720, 0:400] :裁剪图像,只保留高度为720像素、宽度为400像素的区域,这样做是为了减少手势检测时的计算量。
  • handsutils.mediapipe_gestures() :调用handsutils模块中的手势识别功能,将原始图像 img 和裁剪后的图像 cropped_img 传入,返回经过手势处理后的图像帧。
  • cv2.resize() :将处理后的图像恢复到原始大小(1280x720),确保输出图像与摄像头设置的分辨率匹配。
  • cam.send() :将处理后的图像发送到虚拟摄像头,供其他应用程序(如Zoom)使用。
  • cam.sleep_until_next_frame() :保持帧与帧之间的时间间隔一致,避免视频流出现跳帧或延迟。
2. face_detection.py 中的面部检测代码

文件:face_detection.py(face_detection)

with mp_face_detection.FaceDetection(model_selection=0, min_detection_confidence=0.5) as face_detection:
    image.flags.writeable = False  # 设置图像为不可写状态,提升处理速度
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)  # 转换图像颜色空间,从BGR变为RGB
    results = face_detection.process(image)  # 进行面部检测,返回检测结果if results.detections:  # 检查是否有面部检测结果return len(results.detections)  # 返回检测到的面部数量
  • mp_face_detection.FaceDetection() :调用Mediapipe的FaceDetection模块进行面部检测。model_selection=0表示选择第一个预训练模型,min_detection_confidence=0.5表示最低检测置信度为0.5。
  • image.flags.writeable = False:将图像设置为不可写状态,这样可以提高Mediapipe模型处理的速度。
  • cv2.cvtColor() :将图像从BGR格式转换为RGB格式,这是Mediapipe模型所需的输入格式。
  • face_detection.process() :将图像传入Mediapipe模型进行面部检测,并返回结果。
  • results.detections:检测结果中包含每个检测到的面部特征信息,判断是否有面部被检测到。
  • return len(results.detections) :返回检测到的面部数量。
3. handsutils.py 中的手势检测代码

文件:handsutils.py(handsutils)

cropped_img_rgb = cv2.cvtColor(cropped_img, cv2.COLOR_BGR2RGB)  # 转换裁剪图像的颜色空间为RGB
results = hands.process(cropped_img_rgb)  # 使用Mediapipe的手部检测模块进行手势识别
  • cv2.cvtColor() :将裁剪后的图像 cropped_img 转换为RGB格式。Mediapipe的手部检测模型需要RGB格式的输入图像。
  • hands.process() :调用Mediapipe的 Hands 模块进行手部关键点检测,并返回包含所有检测到的手部特征的 results 对象。
if fingerutils.hand_down(landmarks):  # 检查手势是否为“手下移”
    video_status = Trueif fingerutils.three_signal(landmarks):  # 检查手势是否为“三指显示”
    blur_status = Trueif fingerutils.two_signal(landmarks):  # 检查手势是否为“两指显示”
    blur_status = False
  • fingerutils.hand_down() :判断手部关键点的坐标是否符合“手下移”手势的条件。如果满足,则设置 video_statusTrue,表示视频流暂停。
  • fingerutils.three_signal() :判断手部关键点是否符合“三指显示”手势,如果满足,则设置 blur_statusTrue,表示启动背景模糊。
  • fingerutils.two_signal() :判断是否符合“两指显示”手势,如果满足,则设置 blur_statusFalse,表示关闭背景模糊。
if len(zoom_arr) > 1 and fingerutils.is_fist_closed(landmarks) and fingerutils.hand_up(landmarks):  # 检查握拳手势
    p1 = zoom_arr[0]
    p2 = zoom_arr[1]
    dist = math.sqrt(pow(p1[0] - p2[0], 2) + pow(p1[1] - p2[1], 2))  # 计算两指间的欧几里得距离if 150 <= dist <= 300:  # 如果距离在150到300像素之间
        zoom_factor = zoomutils.fetch_zoom_factor(dist)  # 调用zoomutils模块计算缩放因子
  • fingerutils.is_fist_closed() :判断手势是否为“握拳”状态,意味着用户有意调整图像缩放。
  • math.sqrt() :计算两指尖坐标的欧几里得距离。这个距离被用来衡量用户手势的“缩放”程度。
  • zoomutils.fetch_zoom_factor() :根据两指间的距离计算缩放因子 zoom_factor,用来动态调整图像的放大或缩小。
4. zoomutils.py 中的缩放计算代码

文件:zoomutils.py(zoomutils)

zoom_fact = (addval and (((distance - 150) * zoom_range) / finger_range)) + 1  # 计算缩放因子
  • zoom_fact:根据手势间的距离 distance 计算图像的缩放比例。如果 distance 在150到300像素之间,则缩放因子 zoom_fact 随着 distance 增加而增加,使得图像在用户缩放手势中动态放大或缩小。

6. 模型优缺点评价

该模型的优点主要体现在其多功能集成和实时性方面。首先,项目利用Mediapipe的手势识别和面部检测模型,通过简化的逻辑实现了多种复杂的交互功能(如手势控制、背景模糊等),而且该模型对计算资源的要求较低,能够在普通的个人计算机上实现30帧每秒的实时处理效果。其次,通过虚拟摄像头的输出,将处理后的图像流与视频会议软件无缝集成,为实际应用提供了便利。此外,模型的手势识别逻辑基于手部关键点坐标进行自定义手势的判断,在手势识别精度和灵活性方面具有优势。

然而,该模型也存在一些缺点。首先,由于依赖Mediapipe的预训练模型,无法针对特定场景进行微调,导致手势识别在光照和姿态变化较大的情况下准确率下降。其次,模型的交互逻辑依赖于多种手势组合,当手势切换频繁时,可能出现响应延迟或识别错误。此外,背景模糊功能是基于简单的图像分割,无法处理复杂背景或动态环境,效果可能不够自然。

改进方向包括以下几点:1) 引入卷积神经网络(CNN)或Transformer架构对手势进行更精确的分类,从而提升模型的鲁棒性;2) 针对不同的光照和背景情况,使用数据增强(如随机旋转、亮度调整等)来扩展训练数据集,以提高模型在复杂环境下的表现;3) 通过超参数调优(如优化模型的置信度阈值、调整输入图像大小)来减少识别错误和延迟问题,从而提升系统的整体稳定性。通过这些优化,模型能够更好地适应多种复杂场景,进一步提升其应用效果。

↓↓↓更多热门推荐:
YOLOv4和Darknet实现坑洼检测

全部项目数据集、代码、教程进入官网zzgcz.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2192332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

理解递归和回溯

文章目录 什么是递归回溯 什么是递归 回溯 //使用递归回溯来给小球找路//说明//1. map 表示地图//2. i,j 表示从地图的哪个位置开始出发 (1,1)//3. 如果小球能到 map[6][5] 位置&#xff0c;则说明通路找到.//4. 约定&#xff1a; 当map[i][j] 为 0 表示该点没有走过 当为 1 表…

【Python】wxPython 高 DPI 缩放问题(笔记本上字体模糊问题)

问题 使用 wxPython 编写的程序在某些高 DPI 的电脑&#xff08;通常是笔记本&#xff09;上显示出来的字体会非常模糊&#xff1a; 事实上 wxPython 是支持高 DPI 的&#xff0c;但是由于我们的程序没有显式指明支持高 DPI&#xff0c;因此系统默认不支持高 DPI&#xff0c;…

Bolt.new:终极自动化编程工具

兄弟们&#xff0c;终极写代码工具来了—— Bolt.new&#xff01;全方位的编程支持&#xff1a; StackBlitz 推出了 Bolt․new&#xff0c;这是一款结合了 AI 与 WebContainers 技术的强大开发平台&#xff0c;允许用户快速搭建并开发各种类型的全栈应用。 它的主要特点是无需…

【小沐学GIS】QGIS导入导出OpenStreetMap数据(QuickMapServices、OSM)

文章目录 1、简介1.1 OpenStreetMap地图1.2 QGIS 2、安装插件2.1 QuickMapServices2.2 OSMDownloader2.3 Qgis2threejs 3、使用插件结语 1、简介 1.1 OpenStreetMap地图 https://www.openstreetmap.org/ https://extract.bbbike.org/ Openstreetmap是一种开源地图&#xff0c…

微服务swagger解析部署使用全流程

1、介绍 swagger是一个在线接口说明文档&#xff0c;在代码中通过注解的方式将说明问题集成到项目&#xff0c;代码发生修改&#xff0c;说明文档同步修改&#xff0c;前后台联调可以快速同步数据。 2、应用 1、引入依赖 <dependency><groupId>io.springfox<…

如何使用ssm实现基于Web的穿戴搭配系统的设计与实现+vue

TOC ssm784基于Web的穿戴搭配系统的设计与实现vue 第1章 绪论 1.1 研究背景 互联网概念的产生到如今的蓬勃发展&#xff0c;用了短短的几十年时间就风靡全球&#xff0c;使得全球各个行业都进行了互联网的改造升级&#xff0c;标志着互联网浪潮的来临。在这个新的时代&…

新机配置Win11

Win11跳联网 在连接网络的界面输入ShiftF10打开命令行&#xff0c;然后输入oobe\bypassnro然后会重启&#xff0c;在联网的界面就可以进行跳过了。 编码 在中国大陆Windows使用的编码是GBK编码 查看电脑系统版本 WinR输入winver即可 桌面图标 设置->个性化->主题…

Art. 1 | 信号、信息与消息的区别及其在通信中的应用

信号、信息与消息的区别及其在通信中的应用 通信技术是现代社会的基石&#xff0c;其广泛应用于日常生活的各个方面。从手机、互联网到企业信息管理&#xff0c;通信系统无处不在。在这一技术领域中&#xff0c;信号、信息和消息是三大基础概念&#xff0c;支撑着整个通信系统…

03 去重排序

题目&#xff1a; 桶排序变体&#xff1a; #include<iostream> #include<algorithm> using namespace std; #define M 100005 int a[M];int main() {int N;cin>>N;int count0;for(int i1;i<N;i){int temp;cin>>temp;if(a[temp]1){continue;}else{a…

[C语言]第十一节 函数递归一基础知识到高级技巧的全景探索

目录 11.1. 递归是什么&#xff1f; 11.1.1 递归的思想&#xff1a; 11.2 递归的限制条件 举例1&#xff1a;求n的阶乘 画图推演 举例2&#xff1a;顺序打印⼀个整数的每⼀位 画图推演 11.3. 递归与迭代 举例3&#xff1a;求第n个斐波那契数 11.1. 递归是什么&#xff…

oh-topic-editor: OpenHarmony HarmonyOS平台上基于RichEditor实现的支持添加话题、@用户的文本编辑组件

需求 在App开发中&#xff0c;我们常常会遇到发布文章、评论的时候需要添加话题或者用户的需求&#xff0c;就像微博那样。这在Android、iOS或者其他平台上都有现成的组件可供使用&#xff0c;但是HarmonyOS NEXT作为一个新兴平台&#xff0c;三方库实在匮乏&#xff0c;连微博…

SpringBoot中,接口签名,通用方案,以确保接口的安全性

1. 为什么需要接口签名&#xff1f; 接口签名目的&#xff1a;防止第三方伪造请求。请求伪造&#xff1a;未经授权的第三方构造合法用户的请求来执行不希望的操作。转账接口示例&#xff1a;展示了如果接口没有安全措施&#xff0c;第三方可以轻易伪造请求&#xff0c;例如将资…

用户在网页上输入一个网址,它整个页面响应的流程是什么?

目录 一、流程的大致过程 二、流程的详细分析 1. 浏览器先分析超链接中的URL 2. DNS解析 3. 建立TCP连接 建立连接&#xff08;三次握手&#xff09; HTTP中的请求报文 4. 浏览器发送HTTP请求 5. 服务器处理请求并发送响应 HTTP的响应报文 6. 浏览器接收响应 7. 渲…

After-kaoyan

知乎 - 安全中心 有态度&#xff0c;有回应&#xff0c;有温度&#xff0c;是跟双鱼相处的基础 我今天跟大家泄漏一个秘密&#xff0c;这个秘密也很简单&#xff0c;就是我每次遇到困难险阻时候我从不退缩&#xff0c;我也不会想着&#xff1a;“算了吧&#xff0c;我做不到&a…

基于Springboot+Vue的零食批发商仓库管理系统(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 在这个…

Python调试技巧:高效定位与修复问题

Python调试技巧&#xff1a;高效定位与修复问题 在Python编程过程中&#xff0c;调试是不可避免的重要环节。无论是刚接触编程的初学者还是经验丰富的开发者&#xff0c;都可能会遇到代码运行不符合预期的情况。高效的调试技巧不仅能帮助我们快速找到问题&#xff0c;还能减少…

Graphiti:如何让构建知识图谱变得更快、更具动态性?

扩展大语言模型数据提取&#xff1a;挑战、设计决策与解决方案 Graphiti 是一个用于构建和查询动态、时间感知的知识图谱的 Python 库。它可以用于建模复杂、不断演变的数据集&#xff0c;并确保 AI 智能体能够访问它们完成非平凡任务所需的数据。它是一个强大的工具&#xff…

9个微服务最佳实践

1⃣分离数据存储&#xff1a;独立数据库&#xff0c;提升灵活性。 2⃣代码成熟度一致&#xff1a;质量稳定&#xff0c;避免技术债务 3⃣独立构建流程&#xff1a;独自构建&#xff0c;快速部署。 4⃣单一职责原则&#xff1a;业务功能单一&#xff0c;简化维护。 5⃣容器化部署…

Android车载——VehicleHal初始化(Android 11)

1 概述 VehicleHal是AOSP中车辆服务相关的hal层服务。它主要定义了与汽车硬件交互的标准化接口和属性管理&#xff0c;是一个独立的进程。 2 进程启动 VehicleHal相关代码在源码树中的hardware/interfaces/automotive目录下 首先看下Android.bp文件&#xff1a; cc_binary …

大模型公司对标:360

公司档案 360成立于2005年&#xff0c;初期以提供免费的杀毒软件“360安全卫士”而迅速获得市场认可&#xff0c;并逐渐发展成为一家提供全面互联网安全解决方案的企业。2015年成立人工智能研究院&#xff0c;开展人工智能技术探索&#xff0c;成为国内布局研究开发人工智能较…