AI全身全息感知场景应用:从虚拟主播到元宇宙交互的完整解决方案

news2026/3/25 3:48:44
AI全身全息感知场景应用从虚拟主播到元宇宙交互的完整解决方案1. 引言当AI能“看见”你的全部想象一下你站在摄像头前屏幕里的虚拟角色不仅能模仿你的每一个手势还能同步你的面部表情甚至捕捉到你眼神的微妙变化。这不再是科幻电影的场景而是今天就能实现的技术。这就是AI全身全息感知技术带来的变革。它让机器真正“看懂”人类从单一的肢体动作识别升级到表情、手势、姿态的同步感知。无论是打造一个栩栩如生的虚拟主播还是构建沉浸式的元宇宙交互体验这项技术都成为了核心驱动力。本文要介绍的正是基于Google MediaPipe Holistic模型的“AI全身全息感知”解决方案。它就像一个视觉领域的“缝合怪”将人脸、手势、身体姿态三大感知能力融为一体一次推理就能捕捉543个关键点。更重要的是它经过优化能在普通CPU上流畅运行让这项前沿技术变得触手可及。接下来我将带你深入了解这项技术如何从实验室走向实际应用并展示它在多个场景下的完整解决方案。2. 技术核心MediaPipe Holistic如何实现全维度感知2.1 三大模块的智能协同MediaPipe Holistic之所以强大在于它巧妙地将三个独立的感知模块整合到一个统一的流程中。这不仅仅是简单的模型叠加而是一个精心设计的协同工作系统。身体姿态检测Pose这是整个流程的“侦察兵”。它首先在图像中定位人体的存在并找到33个关键的身体关节点包括肩膀、肘部、手腕、膝盖、脚踝等。这些点勾勒出人体的基本骨架为后续的精细识别划定范围。面部网格生成Face Mesh一旦身体姿态被确定系统就会根据头部位置提取面部区域进行深度分析。Face Mesh模块会生成468个高密度网格点覆盖整个面部包括眉毛、眼睛、鼻子、嘴唇甚至眼球的转动都能被捕捉。这让虚拟角色的表情能够达到电影级的细腻程度。手势追踪Hands同样基于身体姿态检测出的手部位置系统会分别对左右手进行21个关键点的追踪。这42个点能够精确还原手指的弯曲、伸展、握拳等各种手势为精细的交互操作提供了可能。2.2 “先粗后细”的流水线设计这套系统的精妙之处在于它的工作流程第一步全局定位系统先运行轻量级的身体检测器快速判断图像中是否有人并框出大致的人体范围。第二步区域提取基于检测到的身体关键点系统会计算出面部和双手所在的精确区域ROI。第三步精细分析将提取出的面部和手部区域图像分别送入专门的Face Mesh和Hands模型进行高精度关键点预测。这种“先粗后细”的设计有两个核心优势效率高避免了在全图上运行所有高精度模型带来的巨大计算开销。精度准专注于特定区域进行分析减少了背景干扰提升了关键点定位的准确性。2.3 543个关键点的数据融合最终系统将三个模块的输出进行融合形成一套包含543个关键点的完整数据流33个身体姿态点468个面部网格点42个手部关键点左右手各21个这些数据在时间上是完全同步的空间坐标也是统一的。这意味着你可以同时知道一个人在某一时刻的身体姿势、面部表情和手势动作为后续的应用开发提供了完整、一致的数据基础。3. 核心应用场景从概念到落地3.1 虚拟主播与数字人驱动这是目前最成熟、需求最旺盛的应用领域。传统的虚拟主播驱动往往需要昂贵的动作捕捉设备和复杂的后期处理而AI全身全息感知技术彻底改变了这一局面。低成本内容创作个人创作者或小型团队只需要一个普通的网络摄像头就能驱动一个精致的虚拟形象。系统实时捕捉你的表情和动作并映射到3D模型上。无论是直播、录课还是短视频创作都能大幅降低技术门槛和制作成本。表情驱动的自然交互468个面部网格点让虚拟角色的表情极其丰富和自然。微笑时嘴角的弧度、思考时眉毛的微蹙、惊讶时眼睛的睁大都能被精确还原。这让虚拟主播不再是“面瘫”而是有了鲜活的情感表达能力。手势增强的表现力虚拟主播在讲解时手势是重要的辅助表达工具。系统捕捉的42个手部关键点能让虚拟形象做出指物、计数、比心等各种手势大大增强了直播的互动性和观赏性。3.2 元宇宙与沉浸式社交在元宇宙的概念中用户的虚拟化身Avatar是其数字身份的核心载体。一个能够真实反映用户动作和表情的化身是沉浸式体验的基础。全身动捕的平民化传统的专业级全身动捕设备价格昂贵且使用复杂。AI视觉方案让普通用户通过消费级设备就能获得不错的动捕效果为元宇宙的大规模普及扫清了技术障碍。社交互动的自然化在虚拟社交场景中点头、挥手、鼓掌等肢体语言以及微笑、惊讶等面部表情是沟通的重要组成部分。全息感知技术让这些非语言交流成为可能使虚拟世界的互动更加接近现实。跨平台的一致性体验由于模型轻量且兼容性好可以在手机、电脑、VR头显等多种设备上运行确保用户在不同终端都能获得一致的虚拟化身体验。3.3 智能健身与动作评估健身和运动领域对动作规范性有很高要求AI全息感知为此提供了创新的解决方案。实时动作纠正用户面对摄像头进行健身动作练习系统实时分析其身体姿态、关节角度。当检测到动作不标准时如深蹲时膝盖过度前伸可以立即给出语音或视觉提示。训练数据量化系统可以记录每次训练时关键点的运动轨迹生成角度、幅度、对称性等量化数据。用户可以通过数据图表直观了解自己的进步情况教练也能进行远程精准指导。康复训练辅助对于运动康复患者系统可以监测其动作是否在安全范围内避免二次伤害。同时通过对比健康动作模型评估康复进展。3.4 交互式娱乐与教育体感游戏开发开发者可以利用这套技术快速开发不需要额外外设的体感游戏。玩家通过身体动作控制游戏角色获得更沉浸的游戏体验。儿童教育互动在教育应用中系统可以识别孩子的手势指令如举手、鼓掌或通过表情判断其专注度和情绪状态实现更智能的互动教学。手势控制界面在特定的应用场景中用户可以定义一套手势指令来控制软件。比如在空中划动手指翻页PPT握拳确认选择等实现无接触交互。4. 实战部署极速CPU版WebUI使用指南4.1 环境准备与快速启动基于CSDN星图镜像的“AI全身全息感知 - Holistic Tracking”镜像已经做好了所有环境配置和优化工作你只需要简单的几步就能启动服务。系统要求操作系统Linux推荐Ubuntu 20.04或WindowsWSL2内存至少4GB RAM存储2GB可用空间网络能正常访问互联网以下载依赖一键启动服务如果你使用的是预构建的Docker镜像启动过程非常简单# 拉取镜像如果尚未拉取 docker pull [镜像仓库地址]/holistic-tracking:cpu-optimized # 运行容器 docker run -d \ --name holistic-tracking \ -p 7860:7860 \ -v ./uploads:/app/static/uploads \ [镜像仓库地址]/holistic-tracking:cpu-optimized服务启动后在浏览器中访问http://你的服务器IP:7860就能看到Web界面。4.2 WebUI界面详解与使用技巧主界面功能区域上传区域支持拖拽或点击选择图片文件预览区域显示上传的原始图片结果区域显示分析后生成的全息骨骼图下载按钮可将结果图片保存到本地最佳实践建议为了获得最好的分析效果在上传图片时需要注意以下几点人物姿态确保人物全身在画面中且没有被严重裁剪动作幅度可以适当大一些便于系统识别关节位置避免完全正面或完全侧面的极端角度45度角通常效果最好光照条件光线均匀避免强烈的逆光或侧光造成阴影面部光照充足便于捕捉细微表情避免过暗或过曝的环境图像质量分辨率建议在640x480以上但不要超过1920x1080图片格式支持JPG、PNG、BMP等常见格式文件大小建议在5MB以内过大的文件处理速度会变慢服装与背景穿着与背景对比度明显的衣物有助于身体轮廓识别避免过于宽松或遮挡关节的服装背景尽量简洁减少干扰元素4.3 结果解读与数据应用系统分析完成后会生成一张覆盖了543个关键点的骨骼图。不同颜色的点代表不同类型的关节点绿色点身体姿态关键点33个蓝色点面部网格点468个红色点左手关键点21个黄色点右手关键点21个数据输出格式除了可视化结果系统还会以JSON格式返回所有关键点的坐标数据方便开发者进一步处理{ pose_landmarks: [ {x: 0.512, y: 0.234, z: 0.001, visibility: 0.98}, // ... 共33个点 ], face_landmarks: [ {x: 0.345, y: 0.567, z: -0.012}, // ... 共468个点 ], left_hand_landmarks: [ {x: 0.123, y: 0.456, z: 0.002}, // ... 共21个点 ], right_hand_landmarks: [ {x: 0.789, y: 0.123, z: 0.001}, // ... 共21个点 ], image_size: {width: 800, height: 600} }这些数据可以直接用于驱动3D虚拟角色分析动作规范性识别特定手势指令计算关节角度和运动范围5. 进阶开发将感知能力集成到你的应用中5.1 Python API快速集成如果你需要在自己的Python项目中调用全息感知能力可以使用以下简化代码import cv2 import numpy as np import mediapipe as mp class HolisticTracker: def __init__(self): # 初始化MediaPipe Holistic模型 self.mp_holistic mp.solutions.holistic self.holistic self.mp_holistic.Holistic( static_image_modeFalse, # 视频流模式 model_complexity1, # 模型复杂度0-2 smooth_landmarksTrue, # 平滑关键点 enable_segmentationFalse, # 是否启用分割 smooth_segmentationTrue, # 平滑分割 refine_face_landmarksTrue # 细化面部关键点 ) # 初始化绘图工具 self.mp_drawing mp.solutions.drawing_utils self.mp_drawing_styles mp.solutions.drawing_styles def process_frame(self, image): 处理单帧图像 # 转换颜色空间BGR转RGB image_rgb cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 进行推理 results self.holistic.process(image_rgb) # 绘制关键点 annotated_image image.copy() # 绘制身体姿态 if results.pose_landmarks: self.mp_drawing.draw_landmarks( annotated_image, results.pose_landmarks, self.mp_holistic.POSE_CONNECTIONS, landmark_drawing_specself.mp_drawing_styles.get_default_pose_landmarks_style() ) # 绘制面部网格 if results.face_landmarks: self.mp_drawing.draw_landmarks( annotated_image, results.face_landmarks, self.mp_holistic.FACEMESH_TESSELATION, landmark_drawing_specNone, connection_drawing_specself.mp_drawing_styles.get_default_face_mesh_tesselation_style() ) # 绘制手部关键点 if results.left_hand_landmarks: self.mp_drawing.draw_landmarks( annotated_image, results.left_hand_landmarks, self.mp_holistic.HAND_CONNECTIONS, self.mp_drawing_styles.get_default_hand_landmarks_style(), self.mp_drawing_styles.get_default_hand_connections_style() ) if results.right_hand_landmarks: self.mp_drawing.draw_landmarks( annotated_image, results.right_hand_landmarks, self.mp_holistic.HAND_CONNECTIONS, self.mp_drawing_styles.get_default_hand_landmarks_style(), self.mp_drawing_styles.get_default_hand_connections_style() ) return annotated_image, results def release(self): 释放资源 self.holistic.close() # 使用示例 if __name__ __main__: # 初始化追踪器 tracker HolisticTracker() # 打开摄像头 cap cv2.VideoCapture(0) while cap.isOpened(): success, frame cap.read() if not success: break # 处理帧 annotated_frame, results tracker.process_frame(frame) # 显示结果 cv2.imshow(Holistic Tracking, annotated_frame) # 按q退出 if cv2.waitKey(5) 0xFF ord(q): break # 清理资源 cap.release() tracker.release() cv2.destroyAllWindows()5.2 实时视频流处理优化对于需要处理实时视频流的应用性能优化至关重要。以下是一些实用的优化技巧分辨率调整# 降低处理分辨率以提升速度 def resize_for_processing(frame, target_width640): height, width frame.shape[:2] scale target_width / width new_height int(height * scale) return cv2.resize(frame, (target_width, new_height))异步处理模式import threading import queue class AsyncHolisticProcessor: def __init__(self): self.input_queue queue.Queue(maxsize2) self.output_queue queue.Queue(maxsize2) self.process_thread threading.Thread(targetself._process_loop) self.process_thread.start() def _process_loop(self): tracker HolisticTracker() while True: frame self.input_queue.get() if frame is None: # 终止信号 break result tracker.process_frame(frame) self.output_queue.put(result) tracker.release() def process_async(self, frame): self.input_queue.put(frame) return self.output_queue.get() def stop(self): self.input_queue.put(None) self.process_thread.join()关键点平滑滤波class LandmarkSmoother: 使用指数移动平均平滑关键点 def __init__(self, alpha0.5): self.alpha alpha self.previous_landmarks None def smooth(self, landmarks): if landmarks is None: return None if self.previous_landmarks is None: self.previous_landmarks landmarks return landmarks # 应用指数移动平均 smoothed [] for prev, curr in zip(self.previous_landmarks, landmarks): smoothed.append(prev * self.alpha curr * (1 - self.alpha)) self.previous_landmarks smoothed return smoothed5.3 与3D引擎集成示例将2D关键点数据转换为3D空间坐标用于驱动虚拟角色import bpy # Blender Python API示例 import numpy as np class BlenderDriver: def __init__(self, armature_nameArmature): 初始化Blender驱动 self.armature bpy.data.objects[armature_name] self.bones self.armature.pose.bones # 定义2D到3D的映射关系 self.bone_mapping { shoulder.L: 11, # 左肩 shoulder.R: 12, # 右肩 elbow.L: 13, # 左肘 elbow.R: 14, # 右肘 wrist.L: 15, # 左腕 wrist.R: 16, # 右腕 hip.L: 23, # 左髋 hip.R: 24, # 右髋 knee.L: 25, # 左膝 knee.R: 26, # 右膝 ankle.L: 27, # 左踝 ankle.R: 28, # 右踝 } def update_pose(self, pose_landmarks): 根据姿态关键点更新骨骼位置 if pose_landmarks is None: return for bone_name, landmark_idx in self.bone_mapping.items(): if landmark_idx len(pose_landmarks): landmark pose_landmarks[landmark_idx] # 将2D坐标转换为3D位置简化示例 # 实际应用中需要更复杂的坐标转换 x landmark.x * 2 - 1 # 归一化到[-1, 1] y landmark.y * 2 - 1 z landmark.z if hasattr(landmark, z) else 0 # 更新骨骼位置 bone self.bones.get(bone_name) if bone: bone.location (x, y, z) def update_face(self, face_landmarks): 根据面部关键点更新表情简化示例 if face_landmarks is None: return # 计算嘴巴张开程度 mouth_top face_landmarks[13] # 上嘴唇中点 mouth_bottom face_landmarks[14] # 下嘴唇中点 mouth_open mouth_bottom.y - mouth_top.y # 驱动嘴巴形状键 if mouth_open in self.armature.data.shape_keys.key_blocks: self.armature.data.shape_keys.key_blocks[mouth_open].value mouth_open * 106. 性能优化与最佳实践6.1 CPU环境下的性能调优虽然MediaPipe Holistic已经针对CPU进行了优化但通过一些技巧可以进一步提升性能模型配置优化# 根据场景选择合适的模型复杂度 holistic_config { static_image_mode: False, # 视频流设为False单张图片设为True model_complexity: 1, # 0:轻量1:均衡2:高精度 smooth_landmarks: True, # 平滑关键点减少抖动 min_detection_confidence: 0.5, # 检测置信度阈值 min_tracking_confidence: 0.5, # 跟踪置信度阈值 }多线程处理from concurrent.futures import ThreadPoolExecutor import time class ParallelProcessor: def __init__(self, num_workers2): self.executor ThreadPoolExecutor(max_workersnum_workers) self.trackers [HolisticTracker() for _ in range(num_workers)] def process_batch(self, frames): 批量处理多帧图像 start_time time.time() # 将帧分配给不同的工作线程 futures [] for i, frame in enumerate(frames): tracker_idx i % len(self.trackers) future self.executor.submit( self.trackers[tracker_idx].process_frame, frame ) futures.append(future) # 收集结果 results [future.result() for future in futures] processing_time time.time() - start_time fps len(frames) / processing_time return results, fps6.2 错误处理与稳定性保障在实际应用中需要处理各种异常情况以确保服务稳定性图像预处理与验证def validate_and_preprocess_image(image_path, max_size_mb5): 验证图像有效性并进行预处理 # 检查文件大小 file_size_mb os.path.getsize(image_path) / (1024 * 1024) if file_size_mb max_size_mb: raise ValueError(f图像文件过大: {file_size_mb:.1f}MB {max_size_mb}MB) # 检查文件格式 valid_formats [jpeg, png, bmp, jpg] img_format imghdr.what(image_path) if img_format not in valid_formats: raise ValueError(f不支持的图像格式: {img_format}) # 读取并验证图像 try: img cv2.imread(image_path) if img is None: raise ValueError(无法读取图像文件) # 检查图像尺寸 height, width img.shape[:2] if height 100 or width 100: raise ValueError(图像尺寸过小) # 检查图像通道 if len(img.shape) ! 3 or img.shape[2] ! 3: # 转换为3通道RGB img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) return img except Exception as e: raise ValueError(f图像处理失败: {str(e)})服务降级策略class RobustHolisticService: def __init__(self): self.primary_tracker HolisticTracker() self.fallback_mode False def process_with_fallback(self, image): 带降级策略的处理方法 try: # 尝试使用完整模型 if not self.fallback_mode: return self.primary_tracker.process_frame(image) except Exception as e: print(f完整模型处理失败: {e}, 切换到降级模式) self.fallback_mode True # 降级模式只进行姿态检测 try: # 使用轻量级姿态检测器 mp_pose mp.solutions.pose with mp_pose.Pose( static_image_modeFalse, model_complexity0, # 最轻量级 enable_segmentationFalse, min_detection_confidence0.5 ) as pose: results pose.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) return image, {pose_landmarks: results.pose_landmarks} except Exception as e: print(f降级模式也失败: {e}) return image, None6.3 数据后处理与增强原始的关键点数据可能需要进一步处理才能满足应用需求关键点滤波与平滑class KalmanFilter: 使用卡尔曼滤波平滑关键点轨迹 def __init__(self, process_noise1e-5, measurement_noise1e-2): self.kf cv2.KalmanFilter(4, 2) # 状态4维观测2维 self.kf.transitionMatrix np.array([ [1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1] ], np.float32) self.kf.measurementMatrix np.array([ [1, 0, 0, 0], [0, 1, 0, 0] ], np.float32) self.kf.processNoiseCov np.eye(4, dtypenp.float32) * process_noise self.kf.measurementNoiseCov np.eye(2, dtypenp.float32) * measurement_noise self.kf.errorCovPost np.eye(4, dtypenp.float32) def update(self, measurement): 更新滤波器状态 if measurement is None: # 预测下一状态 prediction self.kf.predict() return prediction[:2].flatten() else: # 校正状态 self.kf.correct(np.array(measurement, dtypenp.float32)) prediction self.kf.predict() return prediction[:2].flatten() class MultiPointSmoother: 多关键点平滑器 def __init__(self, num_points, filter_classKalmanFilter): self.filters [filter_class() for _ in range(num_points)] def smooth_landmarks(self, landmarks): 平滑所有关键点 if landmarks is None: return None smoothed [] for i, landmark in enumerate(landmarks): if i len(self.filters): measurement [landmark.x, landmark.y] smoothed_point self.filters[i].update(measurement) smoothed.append(type(landmark)(xsmoothed_point[0], ysmoothed_point[1], zlandmark.z if hasattr(landmark, z) else 0)) else: smoothed.append(landmark) return smoothed动作识别与分类class GestureRecognizer: 基于关键点的手势识别 GESTURES { thumbs_up: 大拇指向上, peace: 和平手势, ok: OK手势, pointing: 指向, fist: 握拳, open_hand: 张开手 } def recognize(self, hand_landmarks): 识别单手手势 if hand_landmarks is None or len(hand_landmarks) 21: return None # 提取关键点坐标 landmarks [(lm.x, lm.y) for lm in hand_landmarks] # 计算手指状态 thumb_extended self._is_thumb_extended(landmarks) index_extended self._is_finger_extended(landmarks, 8) # 食指指尖 middle_extended self._is_finger_extended(landmarks, 12) # 中指指尖 ring_extended self._is_finger_extended(landmarks, 16) # 无名指指尖 pinky_extended self._is_finger_extended(landmarks, 20) # 小指指尖 # 手势判断逻辑 if thumb_extended and not any([index_extended, middle_extended, ring_extended, pinky_extended]): return thumbs_up elif index_extended and middle_extended and not any([ring_extended, pinky_extended]): return peace elif thumb_extended and index_extended and not any([middle_extended, ring_extended, pinky_extended]): return ok elif index_extended and not any([thumb_extended, middle_extended, ring_extended, pinky_extended]): return pointing elif not any([thumb_extended, index_extended, middle_extended, ring_extended, pinky_extended]): return fist elif all([thumb_extended, index_extended, middle_extended, ring_extended, pinky_extended]): return open_hand return None def _is_finger_extended(self, landmarks, tip_idx): 判断手指是否伸直 # 简化逻辑指尖比指根高y值更小 tip landmarks[tip_idx] mcp landmarks[tip_idx - 3] # 掌指关节 # 考虑手指弯曲方向 return tip[1] mcp[1] - 0.05 # 阈值可根据实际情况调整 def _is_thumb_extended(self, landmarks): 判断拇指是否伸直 thumb_tip landmarks[4] thumb_ip landmarks[3] # 拇指指间关节 thumb_mcp landmarks[2] # 拇指掌指关节 # 计算拇指角度 vector1 np.array([thumb_ip[0] - thumb_mcp[0], thumb_ip[1] - thumb_mcp[1]]) vector2 np.array([thumb_tip[0] - thumb_ip[0], thumb_tip[1] - thumb_ip[1]]) # 计算余弦相似度 cos_angle np.dot(vector1, vector2) / (np.linalg.norm(vector1) * np.linalg.norm(vector2)) angle np.arccos(np.clip(cos_angle, -1.0, 1.0)) # 角度小于阈值认为拇指伸直 return angle np.pi / 3 # 60度7. 总结7.1 技术价值与应用前景AI全身全息感知技术正在重新定义人机交互的边界。通过MediaPipe Holistic模型我们能够以极低的成本实现电影级的动作捕捉效果这为多个行业带来了革命性的变化。从虚拟主播到元宇宙社交从智能健身到互动教育这项技术的应用场景正在快速扩展。它的核心价值在于将原本需要专业设备和高昂成本的技术变成了普通开发者甚至个人用户都能轻松使用的工具。本文展示的完整解决方案从技术原理到实际部署从基础使用到进阶开发提供了一个全面的实践指南。无论是想要快速体验的初学者还是需要深度集成的开发者都能找到适合自己的切入点。7.2 最佳实践建议从简单开始如果你是第一次接触这项技术建议先从WebUI开始上传一些不同姿势的图片观察系统的识别效果了解其能力和限制。关注数据质量模型的识别效果很大程度上取决于输入图像的质量。确保光照充足、人物姿态清晰、背景简洁能显著提升识别准确率。合理设置期望虽然技术已经很先进但在复杂场景下如多人、严重遮挡、极端光照仍可能出现识别错误。在实际应用中建议结合业务逻辑增加容错处理。性能与精度的平衡根据应用场景选择合适的模型复杂度。对于实时性要求高的应用如虚拟主播可以适当降低精度以提升速度对于分析类应用如动作评估则应优先保证精度。持续学习与优化AI技术发展迅速MediaPipe也在不断更新。关注官方文档和社区动态及时了解新特性和优化方法。7.3 未来展望随着硬件性能的提升和算法的优化AI全身全息感知技术将朝着更精准、更实时、更轻量的方向发展。未来我们可能会看到更高的精度关键点数量进一步增加能够捕捉更细微的表情和动作更强的实时性在移动设备上实现高帧率的全息感知更丰富的应用从娱乐扩展到医疗、体育、安防等更多专业领域更好的集成与AR/VR设备深度结合提供更沉浸的交互体验无论你是内容创作者、应用开发者还是技术爱好者现在都是探索这项技术的最佳时机。它不再遥不可及而是触手可及的工具等待着你去创造下一个惊艳的应用。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…