头部姿态检测避坑指南:Mediapipe关键点选择与OpenCV相机参数的那些坑

【头部姿态】头部姿态检测(一) 头部姿态检测是通过2D图像映射到3D图像,得到人脸姿态的朝向,主要检测的参数有三个,分别是pitch(围绕X轴旋转),yaw(围绕Y轴旋转)和roll(围绕Z轴旋转),分别学名俯仰角、偏航角和滚转角,就是抬头、摇头和转头。 主要的检测方法有三种: 1、经典版:2D人脸关键点检测--->3D人脸模型匹配求解--->3D点和对应2D点的转换关系--->根据旋转矩阵求... 阅读详情

头部姿态检测避坑指南:Mediapipe关键点选择与OpenCV相机参数的那些坑

在计算机视觉的实际应用中,头部姿态检测是一个既迷人又充满挑战的领域。它像是一扇窗,让我们能够通过普通的摄像头窥探三维空间中人脸的方向,为专注度分析、人机交互、虚拟试戴等场景提供了无限可能。然而,当你兴致勃勃地打开教程,复制粘贴代码,准备大展拳脚时,却常常发现结果飘忽不定,角度抖动得像在跳舞,或者在某些极端姿态下直接“罢工”。这背后的原因,往往不是算法本身的问题,而是隐藏在代码细节中的一个个“坑”。对于已经迈过入门门槛,正在追求更高精度和稳定性的开发者来说,这些坑尤为恼人。今天,我们就来聊聊那些在Mediapipe关键点选择和OpenCV相机参数设置中,最容易让人栽跟头的地方,以及如何优雅地绕过去。

1. 关键点选择:并非越多越好,稳定才是王道

Mediapipe的FaceMesh模型提供了多达468个面部关键点,这丰富的点云数据在带来高精度人脸轮廓描绘的同时,也给头部姿态估计带来了“选择困难症”。很多初学者的第一反应是:既然点这么多,我多选几个,取个平均,精度肯定更高。但现实往往事与愿违。

1.1 为什么经典的6点模型依然流行?

你会在很多开源项目和教程中看到一组固定的6个关键点索引:[1, 9, 57, 130, 287, 359],分别对应额头中心、鼻尖、左右嘴角和左右眼角。这套方案之所以经典,背后有深刻的几何和鲁棒性考量。

首先,这六个点分布在人脸的不同区域,构成了一个在三维空间中相对稳定的刚性结构。额头和鼻尖定义了头部的前向和垂直方向,左右眼角和嘴角则定义了面部的水平基线。它们受表情变化的影响相对较小(相比于脸颊或嘴唇内部的点)。一个简单的对比可以说明问题:

关键点组包含点数量对表情变化的敏感性计算速度大角度下的稳定性
经典6点6低快较好
全脸选取(如20点)20中中可能因局部点丢失而变差
依赖轮廓点10-15高(张嘴、眯眼影响大)中差

注意:Mediapipe的关键点索引是固定的,但不同版本间可能有微调。务必确认你使用的mediapipe版本对应的关键点语义。最稳妥的方式是运行一个检测,将468个点可视化出来,亲自核对1号点是否在额头中央,9号点是否在鼻尖。

1.2 经典方案的“阿喀琉斯之踵”与优化策略

然而,经典6点方案并非完美。当头部偏转角度过大(例如Yaw超过45度)时,一侧的眼角和嘴角可能会被严重遮挡,导致Mediapipe无法检测到或坐标严重失真。此时,如果仍然使用这6个点进行PnP求解,结果会急剧恶化。

解决方案一:动态关键点选择 与其固定使用6个点,不如根据可见性动态选择。一个更健壮的策略是:

  1. 始终使用1(额头)和9(鼻尖)这两个最稳定、最难被遮挡的点作为核心。
  2. 对于左右对称的点(眼角、嘴角),检测其可见性。可以通过判断该点是否在图像边界内,或者其检测置信度(如果Mediapipe提供)是否高于阈值来决定。
  3. 构建一个动态的点集。例如,如果左眼可见,则加入左眼角;如果右眼可见,则加入右眼角。嘴角同理。
  4. 确保最终用于PnP求解的点数至少为4个(这是solvePnP函数SOLVEPNP_AP3P等方法的最低要求)。虽然4点解算的稳定性不如6点,但在极端角度下,有解总比无解或错误解要好。

下面是一个动态选择的代码片段示例:

def get_visible_landmarks(landmarks, image_shape, indices_of_interest):
    """
    根据关键点位置和图像边界,筛选出可见的点。
    """
    h, w = image_shape[:2]
    visible_points = []
    visible_indices = []
    for idx in indices_of_interest:
        lm = landmarks[idx]
        # 将归一化坐标转换为像素坐标
        x, y = int(lm.x * w), int(lm.y * h)
        # 简单的可见性判断:点在图像内部
        if 0 <= x < w and 0 <= y < h:
            # 更复杂的判断可以加入:与邻接点形成的局部结构是否合理
            visible_points.append([x, y])
            visible_indices.append(idx)
    return np.array(visible_points, dtype=np.float64), visible_indices

# 在循环中
if results.multi_face_landmarks:
    face_landmarks = results.multi_face_landmarks[0]
    # 我们关心的点:额头、鼻尖、左右眼角、左右嘴角
    all_indices = [1, 9, 57, 130, 287, 359]
    image_points_2d, visible_idx = get_visible_landmarks(face_landmarks.landmark, image.shape, all_indices)
    # 获取对应的3D点
    # 需要预先准备好一个包含所有可能点3D坐标的数组,顺序与all_indices对应
    world_points_3d = np.array([...], dtype=np.float64) # 形状为(6,3)
    visible_world_points = world_points_3d[visible_idx]

解决方案二:引入面部中心点 另一个思路是加入面部中心或鼻子底部等不易受偏转影响的点。例如,Mediapipe的4号点(鼻梁)或168号点(下巴中心下方)在偏转时变化相对平缓。你可以实验将这些点加入你的3D-2D对应集中,看看是否能提升大角度下的稳定性。

2. 相机内参矩阵:别再简单假设焦距等于图像宽度

几乎所有入门教程都会告诉你,相机内参矩阵可以这样简单初始化:

focal_length = w # 图像宽度
cam_matrix = np.array([[focal_length, 0, w/2],
                       [0, focal_length, h/2],
                       [0, 0, 1]], dtype=np.float64)

这个假设在快速验证原型时没问题,但它正是精度提升道路上最大的绊脚石之一。这个假设成立的条件是你的相机是理想针孔模型,且图像没有畸变,传感器像素是完美的正方形。现实中的摄像头,尤其是手机摄像头和USB网络摄像头,与这个理想模型相去甚远。

2.1 焦距(fx, fy)的真相

focal_length = w 意味着你认为相机的焦距在x和y方向上都等于图像的像素宽度。这通常是不准确的。焦距的单位是像素,它表示的是相机光学中心到成像平面的距离,以像素为单位。它的真实值取决于相机的物理焦距和传感器的像素尺寸。

对于未知参数的普通USB摄像头,更合理的做法是进行相机标定。OpenCV提供了非常方便的标定工具。你需要打印一张棋盘格图案,从不同角度拍摄十几到二十张照片,然后使用cv2.calibrateCamera函数计算得到相机内参矩阵和畸变系数。

# 相机标定示例代码框架
import cv2
import numpy as np
import glob

# 准备棋盘格角点的世界坐标 (0,0,0), (1,0,0), (2,0,0) ..., 假设方格边长为1个单位
objp = np.zeros((6*9, 3), np.float32) # 假设棋盘格是9x6内角点
objp[:,:2] = np.mgrid[0:9, 0:6].T.reshape(-1,2)

objpoints = [] # 3D点
imgpoints = [] # 2D点

images = glob.glob('calibration_photos/*.jpg')

for fname in images:
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 查找棋盘格角点
    ret, corners = cv2.findChessboardCorners(gray, (9,6), None)
    if ret:
        objpoints.append(objp)
        corners2 = cv2.cornerSubPix(gray, corners, (11,11), (-1,-1), criteria)
        imgpoints.append(corners2)

# 标定相机
ret, camera_matrix, dist_coeffs, rvecs, tvecs = cv2.calibrateCamera(
    objpoints, imgpoints, gray.shape[::-1], None, None)

print("相机内参矩阵:\n", camera_matrix)
print("畸变系数:\n", dist_coeffs)

运行后,你会得到一个类似这样的矩阵:

[[fx, 0,  cx],
 [0,  fy, cy],
 [0,  0,  1]]

这里的fx和fy很可能不相等(因为像素不是完美的正方形),并且它们的值也绝不会恰好等于图像的宽度w。使用这个真实的矩阵,你的头部姿态估计结果会稳定和准确得多。

2.2 主点(cx, cy)与畸变校正

主点(cx, cy)是光轴与成像平面的交点,理论上在图像中心(w/2, h/2)。但实际相机由于组装误差,主点会有所偏移。上面的标定过程也会精确计算出这个值。

畸变系数更是至关重要。镜头畸变(尤其是广角镜头)会使直线变弯,严重破坏透视几何关系。solvePnP的输入应该是经过畸变校正的“理想”图像坐标。因此,正确的流程是:

  1. 使用标定得到的camera_matrix和dist_coeffs。
  2. 在将Mediapipe检测到的2D点输入solvePnP之前,先使用cv2.undistortPoints函数(或直接在整幅图像上使用cv2.undistort)对这些点进行畸变校正。
# 假设我们已经有了标定参数:camera_matrix, dist_coeffs
# 以及从Mediapipe获取的原始图像点 image_points (N, 1, 2) 格式

# 校正畸变
image_points_undistorted = cv2.undistortPoints(image_points, camera_matrix, dist_coeffs, P=camera_matrix)
# 现在使用 image_points_undistorted 作为2D输入点进行solvePnP计算

忽略畸变校正,在靠近图像边缘的区域,你的姿态估计误差会明显增大。

3. 3D参考模型:别忽视尺度与对齐

PnP问题求解的是旋转和平移,但这一切都建立在3D模型点坐标准确的基础上。很多代码直接使用一组来自某个未知来源的“经验值”,比如:

face_3d_model = np.array([
    [285, 528, 200],
    [285, 371, 152],
    ... ], dtype=np.float64)

这些数字的单位是什么?毫米?厘米?它们是基于一个多大尺寸的“平均人脸”?坐标系原点在哪里?这些问题不搞清楚,你求出的平移向量tvec就毫无物理意义,甚至可能影响旋转矩阵的求解。

3.1 建立你自己的标准模型

一个更严谨的做法是,建立一个基于标准人脸模型的3D参考点集。你可以使用公开的3D人脸模型(如Basel Face Model),或者使用一个简单但物理意义明确的模型:以一个半径为R的球体来近似头部,将关键点放置在这个球面上。

更实用的方法是通过标定来反推模型尺度。你可以让一个人正对相机,保持头部直立,记录下此时Mediapipe检测到的2D点。假设此时真实的旋转矩阵是单位矩阵(无旋转),平移向量只有Z分量(人脸沿光轴方向距离相机为d)。利用这个假设和solvePnP,可以反解出一组尺度一致的3D点。虽然这组点的绝对尺寸可能不准确,但它们的相对比例是正确的,这对于只关心旋转角的场景已经足够。

3.2 坐标系一致性问题

确保你的3D模型点坐标系与相机坐标系一致。通常,我们定义:

  • 相机坐标系:Z轴沿光轴指向场景,X轴向右,Y轴向下。
  • 模型坐标系:需要与之匹配。常见的定义是,人脸朝前时,模型坐标系的Z轴指向人脸前方(从屏幕里出来),X轴指向人的右侧,Y轴指向下方。

如果你的3D模型点是在另一个坐标系下定义的(比如Y轴向上),那么在计算前需要进行旋转,否则得到的欧拉角含义将是混乱的。

4. 求解与后处理:稳定输出的艺术

即使前面所有步骤都正确,直接输出的欧拉角也可能噪声很大,特别是在光线不佳或人脸部分遮挡的情况下。

4.1 选择合适的PnP求解方法

OpenCV的solvePnP函数有多种求解标志:

  • SOLVEPNP_ITERATIVE: 默认方法,基于Levenberg-Marquardt优化,需要较好的初始值。
  • SOLVEPNP_EPNP: 效率高,对于平面或非平面点都适用,通常不需要初始值。
  • SOLVEPNP_AP3P: 只需要3个点,适合点少的情况。

对于头部姿态,点数量固定且非共面,SOLVEPNP_EPNP是一个稳健且快速的选择。你可以通过cv2.SOLVEPNP_EPNP参数指定。

success, rvec, tvec = cv2.solvePnP(model_points_3d,
                                     image_points_2d,
                                     camera_matrix,
                                     dist_coeffs,
                                     flags=cv2.SOLVEPNP_EPNP)

4.2 滤波是必需品,不是奢侈品

原始的欧拉角信号会包含高频抖动。一个简单的低通滤波器(如移动平均、一阶滞后滤波)能极大改善视觉体验。对于实时应用,卡尔曼滤波器(Kalman Filter)是更优的选择,它不仅能平滑数据,还能根据运动模型进行预测,在短暂丢失跟踪时提供合理的估计。

# 一个简单的一阶滞后滤波器(指数平滑)示例
class SimpleExponentialFilter:
    def __init__(self, alpha=0.5):
        self.alpha = alpha  # 平滑因子,越小越平滑,但延迟越大
        self.filtered_value = None

    def update(self, new_value):
        if self.filtered_value is None:
            self.filtered_value = new_value
        else:
            self.filtered_value = self.alpha * new_value + (1 - self.alpha) * self.filtered_value
        return self.filtered_value

# 对Pitch, Yaw, Roll分别应用滤波器
filter_pitch = SimpleExponentialFilter(0.6)
filter_yaw = SimpleExponentialFilter(0.6)
filter_roll = SimpleExponentialFilter(0.6)

# 在每帧循环中
pitch, yaw, roll = calculate_angles(...) # 你的计算函数
smoothed_pitch = filter_pitch.update(pitch)
smoothed_yaw = filter_yaw.update(yaw)
smoothed_roll = filter_roll.update(roll)

4.3 理解并处理欧拉角奇点

欧拉角存在著名的“万向节死锁”问题。当俯仰角Pitch接近±90度(即头部完全向上或向下)时,偏航角Yaw和翻滚角Roll的定义会失去唯一性,导致角度跳变。虽然头部姿态很少达到这种极端,但需要意识到这一点。如果你的应用场景包含大幅度仰头(如检测打哈欠),可能需要考虑使用四元数(Quaternion)来内部表示旋转,只在最终显示时转换为欧拉角并处理奇点区域。

5. 实战:构建一个健壮的头部姿态检测流程

结合以上所有要点,我们可以勾勒出一个更健壮、更适合生产环境的头部姿态检测流程框架:

  1. 离线准备:

    • 使用棋盘格对所用摄像头进行标定,获取精确的camera_matrix和dist_coeffs。
    • 定义或获取一组物理尺度合理、坐标系定义清晰的3D人脸模型点。
  2. 初始化:

    • 初始化Mediapipe FaceMesh。
    • 初始化相机,并读取其分辨率。
    • 为欧拉角初始化滤波器(如卡尔曼滤波器)。
  3. 实时处理循环:

    • 捕获帧,并校正镜头畸变(或对检测到的点进行畸变校正)。
    • 运行Mediapipe,获取468个2D人脸关键点。
    • 动态关键点选择:根据可见性(是否在图像内、置信度)从预定义的子集中选择稳定的点(如额头、鼻尖、可见的眼角/嘴角)。
    • 检查选择的2D点数量是否≥4。如果否,则判定为跟踪丢失,使用滤波器预测或输出上一帧结果。
    • 使用标定好的camera_matrix、dist_coeffs、3D模型点、筛选后的2D点,调用solvePnP(..., flags=cv2.SOLVEPNP_EPNP)。
    • 检查solvePnP的返回值success。如果失败,使用滤波器预测。
    • 将旋转向量rvec转换为旋转矩阵,再分解为欧拉角(Pitch, Yaw, Roll)。
    • 将欧拉角送入滤波器进行平滑处理。
    • 输出或使用平滑后的角度值。

这个流程增加了对异常情况的处理(点丢失、求解失败),通过动态选择和滤波提升了鲁棒性,并使用标定参数提高了精度。它可能比最初的十几行代码复杂不少,但换来的是在各种真实场景下稳定可靠的表现。

头部姿态检测从“跑通Demo”到“稳定可用”,中间隔着的就是对这些细节的深入理解和处理。每一个“坑”的填平,都意味着你的系统离实际应用更近了一步。下次当你的角度输出又开始“跳舞”时,不妨先检查一下关键点是不是被遮挡了,或者回忆一下,你的相机参数真的标定过吗?

用Python+OpenCV+Mediapipe实现实时头部姿态检测(附完整代码) 本文详细介绍了如何使用Python结合OpenCV和Mediapipe库,从零构建一个实时头部姿态检测系统。通过解析PnP问题原理、选取关键人脸特征点、建立3D模型与摄像机参数,并提供了完整的代码实现,帮助开发者快速掌握基于普通摄像头的头部朝向(Pitch, Yaw, Roll)检测技术,适用于人机交互、专注度分析等多种应用场景。 阅读详情

相关推荐

Mediapipe+OpenCV实战:5分钟搞定头部姿态检测(附完整代码)

本文详细介绍了如何使用Mediapipe和OpenCV快速实现高精度头部姿态检测系统。通过5分钟实战教程,开发者可以掌握从环境配置到核心算法(PnP问题求解、欧拉角计算)的完整流程,并获取可直接运行的Python代码。该技术可广泛应用于虚拟试妆、智能驾驶监控等领域,显著提升计算机视觉应用的开发效率。

zz67890的博客 1064

Head Pose Estimation头部姿态估计任务的基本了解:从数据集开始

为了检测司机的疲劳状态,除了基于人脸关键点的检测去判断是否闭眼,是否打哈欠,还可以基于头部的姿态取判断是否正视前方,或者低头睡觉.那么准确的头部姿态估计,必不可少.此前,我们基于PnP算法取估计HPE,但误差较大.因此,我们决定在YOLOLandmark基础上添加额外的任务,即人脸检测,人脸关键点检测以及头部姿态检测,三个任务整合到一起.。

wqthaha的专栏 3113

利用Opencv+Mediapipe实现实时头部姿态追踪与可视化

本文详细介绍了如何利用Opencv和Mediapipe实现实时头部姿态追踪与可视化。通过核心原理分析、环境搭建、代码实现及性能优化,帮助开发者快速掌握头部姿态检测技术,并应用于课堂专注度分析、虚拟现实交互等场景。

weixin_30632089的博客 379

【目标检测系列】基于yolov8的头部姿态估计算法

在一些监控场景或者会议场景中,如课堂监控、视频会议中,人们往往容易出现东张西望、走神等注意力不集中的现象。本项目通过预测其头部的各种角度即可发现这个人是否存在走神现象,并加以提醒。本项目在yolov8的基础上实现,通过引入头部角度分支,将头部检测和头部姿态两个任务进行合二为一。在多人或者单人场景中,无论是何种头部姿态均可以准确检测,直接达到商用级别。

qq_42782701的博客 2888

用Python玩转头部姿态检测:基于Mediapipe的3D角度可视化教程

本文详细介绍了如何使用Python、Mediapipe和OpenCV实现头部姿态检测,并构建3D角度可视化系统。教程从Mediapipe提取人脸关键点开始,深入讲解PnP问题原理与相机模型,最终通过Matplotlib实现动态3D头部朝向可视化,为交互设计、游戏开发等创意应用提供核心技术方案。

lstm7chronicler的博客 230

基于头部姿态估计的免接触光标控制:从MediaPipe到PyAutoGUI的完整实现

计算机视觉中的人脸关键点检测是理解面部几何结构的基础技术,它通过识别面部特征点的位置来构建面部的数字表示。其核心原理通常依赖于深度学习模型,如MediaPipe Face Mesh,能够实时追踪数百个3D面部标志点。这项技术的工程价值在于将视觉感知转化为可操作的交互指令,为人机交互开辟了新的途径。在应用场景上,它特别适用于辅助技术、双手占用环境下的计算机操作以及沉浸式体验开发。本文聚焦于一个具体的工程实践:利用头部姿态估计技术,通过计算面部朝向的偏航和俯仰角,并将其映射为屏幕坐标,最终借助PyAutoGUI

weixin_26775679的博客 597

OpenVINO头部姿态评估网络应用演示

姿态评估技术与框架 姿态评估(Pose estimation)是计算机视觉的研究热点之一,姿态评估的算法应用主要可以分为两部完成,第一步是对象检测,对象区域的定位与查找,截取图像ROI,第二步是根据对象检测定位截取ROI区域作为输入,完成姿态评估与预测。当前主要用于姿态评估的深度学习网络框架有以下几种: OpenPose框架 是一个开源的姿态评估算法框架,支持多任姿态评估,可以实现实时的人体对象检测、身体、头部、手部姿态评估与人脸关机点检测,支持2D与3D,简易的C++接口调用与自定义训练。 DeepCut

英特尔开发人员专区 8135

MediaPipe+OpenCV三合一姿态追踪工程:手部关键点、全身骨架、人脸网格实时识别与结果可视化

直接运行就能看到效果的Python姿态识别工具包,整合MediaPipe预训练模型与OpenCV图像处理能力,支持手部21点动态追踪、身体33个关键点的2D/3D姿态估计、以及人脸468点网格建模与面部动作跟踪。每个功能都封装成独立模块(hand_tracking_module.py、body_tracking_module.py、face_mesh_detection_module.py),调用简单,参数可配置。附带多张实测效果图(hand_tracking_demo.jpg、body_tracking_

s1t2u3的博客 234

通过文件夹输入图片进行头部姿态检测(dlib+opencv)

关于自己负责实验室项目的一个小记录,希望有人工智能大佬看到,可以教教孩子怎么改进输入这边的问题!我想实现通过摄像头进行输入实时监测

zhang2gongzi的博客 4615

用PyCharm+Scrapy打造你的第一个爬虫:从安装到实战(附完整代码)

本文详细介绍了如何使用PyCharm和Scrapy框架从零开始构建高效网络爬虫。通过环境配置、项目创建、核心爬虫逻辑编写到数据处理与存储的完整流程,帮助Python开发者快速掌握爬虫开发技巧,并附有实战代码示例。特别适合想要学习Scrapy框架和提升爬虫技能的开发者。

weixin_29038345的博客 868

结构光三维重建(一)条纹结构光三维重建

在近景三维重建领域,结构光技术可以说是应用最广泛的,尤其在工业领域。该技术目前具有高精度和无视弱纹理等优点,但复杂的室外环境还是会对该技术造成一定程度的干扰。目前用的比较多的结构光分别两大类:线结构光以及条纹结构光。接下来我先来简单介绍一下条纹结构光三维重建,事实上,条纹结构光的原理与双目立体匹配是非常相似的。...

AAAA202012的博客 1万+

Mediapipe+OpenCV实战:5分钟搞定实时头部姿态检测(附完整代码)

本文详细介绍了如何利用Mediapipe和OpenCV快速构建实时头部姿态检测系统。通过清晰的步骤讲解和完整的代码示例,读者可在5分钟内完成环境配置与核心算法实现,轻松获取头部的俯仰、偏航和翻滚角度,适用于交互应用与专注度分析等场景。

ujm56789012的博客 242

告别手动转换!用腾讯云轻量服务器+QMT插件,5分钟搞定聚宽策略实盘(附完整源码)

本文详细介绍如何利用腾讯云轻量服务器和QMT插件快速实现聚宽策略的自动化实盘部署。通过云端信号中转站解决协议转换、信号缓存等核心问题,5分钟完成服务器配置,并附完整源码实现零改造实盘方案,显著提升量化交易效率。

weixin_28707739的博客 659

基于LattePanda Mu与OpenCV的实时头部姿态检测系统实现

计算机视觉中的姿态估计是理解物体在三维空间中方向的关键技术,其核心原理是通过2D图像信息反推3D姿态。基于特征点的几何方法,结合PnP(Perspective-n-Point)算法,是实现实时姿态检测的高效方案,该方案依赖精准的2D-3D点对应关系与相机标定。在边缘计算与嵌入式AI应用场景中,这种轻量级方法具有重要价值,它能够在资源受限的设备上实现低功耗、实时的视觉感知。本文以头部姿态检测为具体案例,详细阐述了如何在LattePanda Mu这类x86架构迷你主机上,通过优化编译OpenCV与Dlib库,部

weixin_30876945的博客 593

SAP PO开发-端到端配置

1.登录PO系统,选择system landscape,将外围系统的系统信息(Software Component以下简称SC)注册到PO系统中。2.点击products注册外围系统信息。3.选择New 新建 按钮:创建一个新的系统和版本。4.输入产品名称、供应商、版本号等信息。然后点击:Next。5.设置instance 名称,然后点击Next。6.最后设置软件组件的名称,然后点击Finish。

P9QCer的博客 1578

hcaptcha-challenger:基于本地AI模型自动破解验证码的工程实践

验证码作为区分人类与机器的经典安全机制,其核心原理是通过图像识别、行为分析等交互式挑战来阻挡自动化程序。传统绕过方法依赖第三方打码平台或脚本,存在成本高、稳定性差的问题。随着多模态大语言模型和计算机视觉技术的发展,本地化AI求解成为新的技术方向,它通过集成YOLO、ResNet等模型,在本地完成图像语义理解,实现了高隐私、低成本、可进化的验证码自动化解决方案。这种范式尤其适用于需要大规模稳定处理网页交互的场景,如电商数据采集和社交媒体管理。hcaptcha-challenger项目正是这一理念的工程实践,它

weixin_42587866的博客 1026

AI动作分析实战:MediaPipe Pose与Unity3D结合

本文介绍了基于星图GPU平台自动化部署AI人体骨骼关键点检测镜像的实践方法,结合MediaPipe Pose与Unity3D实现动作捕捉与虚拟角色驱动。该方案支持本地化实时推理,适用于健身指导、AI应用开发等场景,具备低延迟、高兼容性优势。

weixin_35516624的博客 788

网络虚拟化介绍(OVS、DVS)

网络虚拟化概念网络虚拟化就是把网络层的一些功能从硬件中剥离出来,建立新的网络虚拟层;该虚拟层可以接管网络服务和配置,实现网络服务与物理层的解耦,打破物理资源限制;通过网络虚拟层能够在一个物理网络上模拟出多个逻辑网络,并且多用户在逻辑网络上相互隔离,保证网络安全网络虚拟化的特点隔离性:不同租户的流量相互之间不能互访;但是IP/MAC地址都可以独立规划可移动性:虚拟机可以跨二层/三层迁移,甚至可以跨广域网迁移(迁移前后虚拟机Vlan和IP地址都不会发生变化)可扩展性:逻辑网络的规模和数量可扩展。

m0_49864110的博客 1万+

5分钟跑通MediaPipe人脸检测与姿态跟踪:从安装到参数调优的完整路径

如果你只需要在视频流里实时定位人脸、手部和全身姿态,MediaPipe 5分钟就能跑通:pip装一个包,20行代码,关键点坐标直接输出。它是Google开源的实时媒体机器学习方案,底层图引擎负责并行调度,你只调API。 ## 30秒认知:MediaPipe是什么、怎么工作 MediaPipe干的事很简单:把一张图片或视频帧,变成结构化的感知结果——人脸框、21个手部关键点、33个身体关键点、物

gitblog_00732的博客 406

ASPICE标准快速掌握「总目录」

欢迎大家来到雪云飞星的《ASPICE标准快速掌握》,开始前博主先列出本专栏学习的大纲,同时这也可以作为大家学习ASPICE协议知识点的参考。本专栏可以帮助大家快速掌握如何在项目中使用ASPICE,ASPICE的学习通常仅需要半天时间左右,掌握方法后完全就可以结合快查表来指导具体项目的质量提升了。

雪云飞星的博客 3010

【读代码】深入解析Ragas:RAG应用效果评估最好的工具

Ragas是由Exploding Gradients团队开发的专业LLM应用评估框架,通过自动化测试和量化指标帮助开发者构建可靠的AI系统。# 典型架构模块 ├── metrics # 50+评估指标实现 ├── testset # 测试集生成系统 ├── embeddings # 多模态嵌入支持 ├── integrations # 主流框架集成 ├── optimizers # 遗传算法优化器 └── experimental # 前沿功能实验区。

kakaZhui的博客 850

AI骨骼检测部署:MediaPipe Pose边缘计算

本文介绍了基于星图GPU平台自动化部署AI人体骨骼关键点检测镜像的实践方法,结合MediaPipe Pose实现轻量级、高精度的姿态估计。该方案支持在边缘设备上离线运行,适用于动作识别、健身指导等场景,助力AI应用快速开发与落地。

weixin_35935514的博客 1036

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MediaPipe Pose实战:虚拟试衣间系统

本文介绍了基于星图GPU平台自动化部署AI人体骨骼关键点检测镜像的实践应用,结合MediaPipe Pose实现高精度姿态识别。该方案可高效支持虚拟试衣间系统开发,适用于模型微调、AI应用开发等场景,具备低延迟、本地化运行和易集成等优势,助力智能零售与AR体验创新。

weixin_42284380的博客 846

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MediaPipe 完整上手指南:10分钟跑通人脸、手势与实时姿态检测

上周我给一个视频通话应用加"虚拟背景"功能,第一反应是找服务器端推理方案,结果一来一回网络延迟把体验拖垮了。后来我在浏览器和笔记本上直接用 MediaPipe 做端侧实时人脸检测,十几行 Python 就出结果,单帧耗时低到肉眼根本感觉不到卡顿。这篇文章把我从零到上线的完整路径写下来,不聊概念,只讲怎么做。 ## 它到底能帮你解决什么 一句话定位:MediaPipe 是一套跨平台的端侧视觉与音

gitblog_00034的博客 536

别再死记硬背Yaw、Pitch、Roll了!用Python+OpenCV从人脸关键点反推姿态角(附完整代码)

本文详细介绍了如何使用Python和OpenCV从人脸关键点反推姿态角(Yaw、Pitch、Roll),避免死记硬背概念。通过实战代码演示了从2D关键点到3D欧拉角的完整计算流程,包括环境准备、数学原理、代码实现及常见问题调试技巧,适用于计算机视觉领域的姿态估计任务。

weixin_30321709的博客 835
上一篇: 【新手入门】Hook(钩子)在Python中的实战应用
下一篇: 深入排查:如何精准定位并解决Linux系统中inotify监视器耗尽问题
sql99
博客等级 码龄19年 168粉丝 1905原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值