Meta Sapiens太强了!人物姿态、部位分割、深度估计、表面法线预测一网打尽【附步骤源码】

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称 项目名称
1.【人脸识别与管理系统开发 2.【车牌识别与自动收费管理系统开发
3.【手势识别系统开发 4.【人脸面部活体检测系统开发
5.【图片风格快速迁移软件开发 6.【人脸表表情识别系统
7.【YOLOv8多目标识别与自动标注软件开发 8.【基于YOLOv8深度学习的行人跌倒检测系统
9.【基于YOLOv8深度学习的PCB板缺陷检测系统 10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统
11.【基于YOLOv8深度学习的安全帽目标检测系统 12.【基于YOLOv8深度学习的120种犬类检测与识别系统
13.【基于YOLOv8深度学习的路面坑洞检测系统 14.【基于YOLOv8深度学习的火焰烟雾检测系统
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统 16.【基于YOLOv8深度学习的舰船目标分类检测系统
17.【基于YOLOv8深度学习的西红柿成熟度检测系统 18.【基于YOLOv8深度学习的血细胞检测与计数系统
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统 20.【基于YOLOv8深度学习的水稻害虫检测与识别系统
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统 22.【基于YOLOv8深度学习的路面标志线检测与识别系统
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统 24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统 26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统
27.【基于YOLOv8深度学习的人脸面部表情识别系统 28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统
29.【基于YOLOv8深度学习的智能肺炎诊断系统 30.【基于YOLOv8深度学习的葡萄簇目标检测系统
31.【基于YOLOv8深度学习的100种中草药智能识别系统 32.【基于YOLOv8深度学习的102种花卉智能识别系统
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统 34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统 36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统 38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统 40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统 42.【基于YOLOv8深度学习的无人机视角地面物体检测系统
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统 44.【基于YOLOv8深度学习的野外火焰烟雾检测系统
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统 46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统 48.【基于深度学习的车辆检测追踪与流量计数系统
49.【基于深度学习的行人检测追踪与双向流量计数系统 50.【基于深度学习的反光衣检测与预警系统
51.【基于深度学习的危险区域人员闯入检测与报警系统 52.【基于深度学习的高密度人脸智能检测与统计系统
53.【基于深度学习的CT扫描图像肾结石智能检测系统 54.【基于深度学习的水果智能检测系统
55.【基于深度学习的水果质量好坏智能检测系统 56.【基于深度学习的蔬菜目标检测与识别系统
57.【基于深度学习的非机动车驾驶员头盔检测系统 58.【太基于深度学习的阳能电池板检测与分析系统
59.【基于深度学习的工业螺栓螺母检测 60.【基于深度学习的金属焊缝缺陷检测系统
61.【基于深度学习的链条缺陷检测与识别系统 62.【基于深度学习的交通信号灯检测识别
63.【基于深度学习的草莓成熟度检测与识别系统 64.【基于深度学习的水下海生物检测识别系统
65.【基于深度学习的道路交通事故检测识别系统 66.【基于深度学习的安检X光危险品检测与识别系统
67.【基于深度学习的农作物类别检测与识别系统 68.【基于深度学习的危险驾驶行为检测识别系统
69.【基于深度学习的维修工具检测识别系统 70.【基于深度学习的维修工具检测识别系统
71.【基于深度学习的建筑墙面损伤检测系统 72.【基于深度学习的煤矿传送带异物检测系统
73.【基于深度学习的老鼠智能检测系统

二、机器学习实战专栏【链接】 ,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

目录

引言

Meta一直是开发图像和视频模型的领导者,现在他们增加了一些新的东西:Meta Sapiens。就像"Homo sapiens"(人类)一样,这个模型完全是关于人类的。它旨在执行与人类相关的任务,例如理解身体姿势,识别身体部位,预测深度,甚至确定皮肤纹理等表面细节。

为什么Meta Sapiens脱颖而出?

在2023-2024年,许多计算机视觉模型都专注于创建逼真的人类图像。虽然存在许多用于姿势估计和分割等任务的模型,但Meta的Sapiens模型是专门为人类相关任务设计的。

这个博客介绍了Meta是如何创建这个统一模型的,它的优点和缺点,以及它与其他模型的比较。

Meta Sapiens的三大支柱

Meta声称,与人类相关的任务模型应该满足这三个关键品质:

  1. **泛化:**这意味着模型在许多不同的情况下都能很好地工作。例如,它可以处理不同的照明条件,摄像机角度,甚至各种类型的服装。
  2. **广泛的适用性:**模型可以做不止一件事。它可以估计姿势,识别身体部位,甚至预测物体离相机有多远,所有这些都不需要大的改变。
  3. **高保真度:**它可以创建高质量,详细的结果。例如,如果任务是生成一个人的3D模型,结果将看起来非常逼真,具有清晰的细节,如面部特征和身体形状。

架构解析

Meta Sapiens使用一些强大的技术来完成这些任务。让我们简单地看一下其中的几个:

MAE(Masked Autoencoder):可以把这看作是一种通过使用分解块来有效学习的方法。模型会查看缺少某些部分的图像(就像缺少部分的拼图),并尝试填充空白。这使得模型更好地理解图像,并节省训练时间。例如,如果模型在图像中看到一个人的手臂的一部分缺失,它可以通过理解图像的其余部分来猜测手臂应该是什么样子。

**使用关键点和分割:**该模型识别人体上的308个点,包括手、脚、脸和躯干。它还知道大约28个不同的身体部位,从头发到嘴唇到四肢,使其非常详细。为了训练模型,Meta使用了真实的人体扫描和合成数据,这有助于它非常详细地了解人类。

1. 2D姿态估计-了解人体运动

这个任务就像给模型一张图片,让它猜出关键的身体部位在哪里。该模型会查找眼睛、肘部、膝盖等位置。例如,如果您上传了某人跑步的照片,该模型可以准确识别他们的手臂、腿和头部在图像中的位置。

这个过程的工作原理是创建"热图",显示身体部位在特定位置的可能性。该模型经过训练,通过调整直到其猜测(热图)与身体部位的真实的位置紧密匹配,从而将误差降至最低。

体系结构:

  • 输入: 图像(I ∈ R^H×W×3,其中H为高度,W为宽度)。
  • 第1步:重新缩放图像 -输入图像的大小调整为固定的高度H和宽度W。这样做是为了标准化所有图像的输入大小。
  • 步骤2:姿态估计Transformer(P)-Transformer模型处理图像以预测关键点位置。

这涉及:

边界框输入: 在图像中的人周围提供边界框。

关键点热图: 该模型生成K个热图,其中每个热图表示关键点位于某个位置的概率。例如,一个热图用于右肘,另一个热图用于左膝,依此类推。

  • 步骤3:损失函数(均方误差) -这里使用的损失函数是均方误差(MSE)。该模型将预测的热图与地面实况关键点y进行比较,并使用MSE计算差异:``
    L_pose = MSE(y,y)
  • 步骤4:编码器-解码器架构 -姿态估计模型使用编码器-解码器设置。编码器 使用来自预训练的权重初始化,而解码器随机初始化。然后,整个系统针对关键点预测的任务进行微调。
  • 关键点差异: 与以前的模型(可能只能检测68个面部点)相比,Meta的Sapiens模型可以检测多达243个面部关键点,捕获眼睛,嘴唇,鼻子,耳朵等周围的更精细的细节。

操作步骤

下载姿势模型的检查点,并执行进一步的步骤:

python 复制代码
TASK = 'pose'
VERSION = 'sapiens_1b'

model_path = get_model_path(TASK, VERSION)
print(model_path)

使用"sapiens"模型函数定义姿势函数:

python 复制代码
def get_pose(image, pose_estimator, input_shape=(3, 1024, 768), device="cuda"):
    # Preprocess the image
    img = preprocess_image(image, input_shape)
    
    # Run the model
    with torch.no_grad():
        heatmap = pose_estimator(img.to(device))
    
    # Post-process the output
    keypoints, keypoint_scores = udp_decode(heatmap[0].cpu().float().numpy(), 
                                            input_shape[1:], 
                                            (input_shape[1] // 4, input_shape[2] // 4))
    
    # Scale keypoints to original image size
    scale_x = image.width / input_shape[2]
    scale_y = image.height / input_shape[1]
    keypoints[:, 0] *= scale_x
    keypoints[:, 1] *= scale_y
    
    # Visualize the keypoints on the original image
    pose_image = visualize_keypoints(image, keypoints, keypoint_scores)
    return pose_image

def preprocess_image(image, input_shape):
    # Resize and normalize the image
    img = image.resize((input_shape[2], input_shape[1]))
    img = np.array(img).transpose(2, 0, 1)
    img = torch.from_numpy(img).float()
    img = img[[2, 1, 0], ...] # RGB to BGR
    mean = torch.tensor([123.675, 116.28, 103.53]).view(3, 1, 1)
    std = torch.tensor([58.395, 57.12, 57.375]).view(3, 1, 1)
    img = (img - mean) / std
    return img.unsqueeze(0)

def udp_decode(heatmap, img_size, heatmap_size):
    # This is a simplified version. You might need to implement the full UDP decode logic
    h, w = heatmap_size
    keypoints = np.zeros((heatmap.shape[0], 2))
    keypoint_scores = np.zeros(heatmap.shape[0])
    
    for i in range(heatmap.shape[0]):
        hm = heatmap[i]
        idx = np.unravel_index(np.argmax(hm), hm.shape)
        keypoints[i] = [idx[1] * img_size[1] / w, idx[0] * img_size[0] / h]
        keypoint_scores[i] = hm[idx]
    
    return keypoints, keypoint_scores

def visualize_keypoints(image, keypoints, keypoint_scores, threshold=0.3):
    draw = ImageDraw.Draw(image)
    for (x, y), score in zip(keypoints, keypoint_scores):
        if score > threshold:
            draw.ellipse([(x-2, y-2), (x+2, y+2)], fill='red', outline='red')
    return image

加载输入图像:

python 复制代码
from utils.vis_utils import resize_image
pil_image = Image.open('path/to/input/image')

if pil_image.mode == 'RGBA':
    pil_image = pil_image.convert('RGB')

resized_pil_image = resize_image(pil_image, (640, 480))
resized_pil_image

输出:

python 复制代码
from PIL import Image, ImageDraw

output_pose = get_pose(resized_pil_image, model)

2.身体部位分割-了解人体骨骼

在这个任务中,模型对图像中的每个像素进行分类,将其分解为手臂,腿或面部等身体部位。例如,如果你上传一张照片,模型可以将你的脸和头发分开,将你的手和手臂分开。这有助于虚拟试穿系统或动画角色等任务。

Meta的Sapiens模型使用了一个巨大的词汇表(28个身体部位)来给出详细的结果。它不仅仅是手臂和腿,还可以区分上下嘴唇,牙齿甚至手指。

体系结构:

  • 输入: 图像(I ∈ R^H×W×3),类似于姿态估计。
  • 步骤1:编码器-解码器架构 -身体部位分割模型遵循与姿势估计相同的编码器-解码器设置。编码器 从输入图像中提取特征,解码器将这些特征转换为逐像素预测。
  • 步骤2:像素分类 -该模型将图像的每个像素分类为C个身体部位类别之一(例如,头部、手臂、躯干等)。例如,标准分割中的C = 20,但Meta将其扩展到C = 28,并使用更详细的词汇,包括上/下唇,牙齿和舌头等区别。
  • 步骤3:损失函数(加权交叉熵) -使用加权交叉熵损失对模型进行微调,该加权交叉熵损失 将预测的身体部位类别p与基础事实p进行比较。
    L_seg =加权CE(p,p <0)
  • 第4步:扩展词汇分辨率-智人模型使用高分辨率图像(4K分辨率),并使用这些详细的身体部位标签手动注释超过100 K的图像。与以前的模型相比,分割词汇量要大得多,使其对人体部位有更细粒度的理解。

注意:尽管Meta Sapiens在身体部位分割方面取得了进步,但它仍然无法达到与SAMSAM 2基于掩码的分割模型相同的精度水平。这些模型提供了更准确和详细的掩模,特别是对于细粒度的对象边界。

具体步骤:

加载分段权重并执行以下步骤:

python 复制代码
def get_model_path(task, version):
    try:
        model_path = SAPIENS_LITE_MODELS_PATH[task][version]
        if not os.path.exists(model_path):
            print(f"Warning: The model file does not exist at {model_path}")
        return model_path
    except KeyError as e:
        print(f"Error: Invalid task or version. {e}")
        return None

# Example usage
TASK = 'seg' 
VERSION = 'sapiens_0.3b'

model_path = get_model_path(TASK, VERSION)
print(model_path)

从"sapiens"模型实现分割函数:

python 复制代码
def segment(image):
    input_tensor = transform_fn(image).unsqueeze(0).to("cuda")

    preds = run_model(input_tensor, height=image.height, width=image.width)
    mask = preds.squeeze(0).cpu().numpy()

    mask_image = Image.fromarray(mask.astype("uint8"))
    blended_image = visualize_mask_with_overlay(image, mask_image, LABELS_TO_IDS, alpha=0.5)
    return blended_image

加载输入图像:

python 复制代码
pil_image = Image.open('sapiens2.jpg')

if pil_image.mode == 'RGBA':
    pil_image = pil_image.convert('RGB')

resized_pil_image = resize_image(pil_image, (640, 480))
resized_pil_image

输出:

元分割的输出结果并不令人满意,它没有清楚地显示人体分割;相反,Meta的SAM[segment anything model]更好地分割图像。

3.深度估计

深度估计帮助模型了解图像的不同部分有多远。这就像赋予模型分辨照片中什么是近的,什么是远的能力。例如,在一张站在汽车附近的人的照片中,模型可以估计这个人离汽车有多远,这对于增强现实等任务很重要。

体系结构:

  • 输入: 图像(I ∈ R^H×W×3)。
  • 步骤1:编码器-解码器架构 -与身体部位分割类似,编码器 从图像中提取特征,解码器预测每个像素的深度。
  • 步骤2:单通道深度图 -深度估计的关键区别在于输出通道 设置为1,这会生成深度图 。这个深度图(d ∈ R^H×W)预测图像中的每个点离相机有多远。
  • 步骤3:损失函数(回归) -深度估计任务被视为回归 问题。模型将其预测深度值(d_depth)与地面实况(d)进行比较,并使用回归损失使差异最小化:||d − d|| 1
  • 第4步:合成数据训练-为了提高深度预测,Meta Sapiens使用合成人类数据,包括来自RenderPeople的600个高分辨率3D人体扫描。这使得该模型即使在困难的情况下也能生成详细和现实的深度估计。

实现步骤:

加载深度权重:

python 复制代码
TASK = 'depth'
VERSION = 'sapiens_0.3b'

model_path = get_model_path(TASK, VERSION)
print(model_path)

使用"sapiens"模型编写深度函数:

python 复制代码
def get_depth(image, depth_model, input_shape=(3, 1024, 768), device="cuda"):
    # Preprocess the image
    img = preprocess_image(image, input_shape)
    
    # Run the model
    with torch.no_grad():
        result = depth_model(img.to(device))
    
    # Post-process the output
    depth_map = post_process_depth(result, (image.shape[0], image.shape[1]))
    
    # Visualize the depth map
    depth_image = visualize_depth(depth_map)
    
    return depth_image, depth_map

def preprocess_image(image, input_shape):
    img = cv2.resize(image, (input_shape[2], input_shape[1]), interpolation=cv2.INTER_LINEAR).transpose(2, 0, 1)
    img = torch.from_numpy(img)
    img = img[[2, 1, 0], ...].float()
    mean = torch.tensor([123.5, 116.5, 103.5]).view(-1, 1, 1)
    std = torch.tensor([58.5, 57.0, 57.5]).view(-1, 1, 1)
    img = (img - mean) / std
    return img.unsqueeze(0)

def post_process_depth(result, original_shape):
    # Check the dimensionality of the result
    if result.dim() == 3:
        result = result.unsqueeze(0)
    elif result.dim() == 4:
        pass
    else:
        raise ValueError(f"Unexpected result dimension: {result.dim()}")
    
    # Ensure we're interpolating to the correct dimensions
    seg_logits = F.interpolate(result, size=original_shape, mode="bilinear", align_corners=False).squeeze(0)
    depth_map = seg_logits.data.float().cpu().numpy()
    
    # If depth_map has an extra dimension, squeeze it
    if depth_map.ndim == 3 and depth_map.shape[0] == 1:
        depth_map = depth_map.squeeze(0)
    
    return depth_map

def visualize_depth(depth_map):
    # Normalize the depth map
    min_val, max_val = np.nanmin(depth_map), np.nanmax(depth_map)
    depth_normalized = 1 - ((depth_map - min_val) / (max_val - min_val))
    
    # Convert to uint8
    depth_normalized = (depth_normalized * 255).astype(np.uint8)
    
    # Apply colormap
    depth_colored = cv2.applyColorMap(depth_normalized, cv2.COLORMAP_INFERNO)
    
    return depth_colored

# You can add the surface normal calculation if needed
def calculate_surface_normal(depth_map):
    kernel_size = 7
    grad_x = cv2.Sobel(depth_map.astype(np.float32), cv2.CV_32F, 1, 0, ksize=kernel_size)
    grad_y = cv2.Sobel(depth_map.astype(np.float32), cv2.CV_32F, 0, 1, ksize=kernel_size)
    z = np.full(grad_x.shape, -1)
    normals = np.dstack((-grad_x, -grad_y, z))

    normals_mag = np.linalg.norm(normals, axis=2, keepdims=True)
    with np.errstate(divide="ignore", invalid="ignore"):
        normals_normalized = normals / (normals_mag + 1e-5)

    normals_normalized = np.nan_to_num(normals_normalized, nan=-1, posinf=-1, neginf=-1)
    normal_from_depth = ((normals_normalized + 1) / 2 * 255).astype(np.uint8)
    normal_from_depth = normal_from_depth[:, :, ::-1]  # RGB to BGR for cv2

    return normal_from_depth

加载输入图像:

python 复制代码
from utils.vis_utils import resize_image

pil_image = Image.open('/home/user/app/assets/image.webp')

# Load and process an image
image = cv2.imread('/home/user/app/assets/frame.png')
depth_image, depth_map = get_depth(image, model)

输出:

python 复制代码
surface_normal = calculate_surface_normal(depth_map)
cv2.imwrite("output_surface_normal.jpg", surface_normal)
# Save the results
output_im = cv2.imwrite("output_depth_image2.jpg", depth_image)

4.表面法线估计

此任务允许模型计算出人体的3D表面细节,例如表面在每个点处的角度或方向。例如,它可以理解一个人的面部曲线或手臂和腿的角度。

体系结构:

  • 输入: 图像(I ∈ R^H×W×3)。
  • 步骤1:编码器-解码器架构-与前面的任务一样,正常估计模型使用编码器-解码器框架。编码器从图像中提取特征,解码器被调整为正常预测。
  • 步骤2:曲面法线的三通道输出 -对于法线估计,解码器 输出通道设置为3,对应于法线向量的xyz分量。每个像素都会获得一个xyz值,该值表示该点处的表面所面向的方向。
  • 步骤3:损失函数(余弦相似性) -该模型使用L1损失余弦相似性 的组合来比较预测的法向矢量(n)与地面真实法向(n)。损失计算为: L_normal = ||n − n̂||1 + (1 − n · n̂)
  • 第4步:来自合成数据的监督-就像深度估计一样,正常估计依赖于合成的人类数据进行监督。这使得模型能够准确预测表面方向,即使是在复杂的情况下,如弯曲的身体部位或极端的姿势。

实现步骤:

加载正常重量:

python 复制代码
TASK = 'normal'
VERSION = 'sapiens_0.3b'

model_path = get_model_path(TASK, VERSION)
print(model_path)

从"sapiens"模型定义正常函数:

python 复制代码
import torch
import torch.nn.functional as F
import numpy as np
import cv2

def get_normal(image, normal_model, input_shape=(3, 1024, 768), device="cuda"):
    # Preprocess the image
    img = preprocess_image(image, input_shape)
    
    # Run the model
    with torch.no_grad():
        result = normal_model(img.to(device))
    
    # Post-process the output
    normal_map = post_process_normal(result, (image.shape[0], image.shape[1]))
    
    # Visualize the normal map
    normal_image = visualize_normal(normal_map)
    
    return normal_image, normal_map

def preprocess_image(image, input_shape):
    img = cv2.resize(image, (input_shape[2], input_shape[1]), interpolation=cv2.INTER_LINEAR).transpose(2, 0, 1)
    img = torch.from_numpy(img)
    img = img[[2, 1, 0], ...].float()
    mean = torch.tensor([123.5, 116.5, 103.5]).view(-1, 1, 1)
    std = torch.tensor([58.5, 57.0, 57.5]).view(-1, 1, 1)
    img = (img - mean) / std
    return img.unsqueeze(0)

def post_process_normal(result, original_shape):
    # Check the dimensionality of the result
    if result.dim() == 3:
        result = result.unsqueeze(0)
    elif result.dim() == 4:
        pass
    else:
        raise ValueError(f"Unexpected result dimension: {result.dim()}")
    
    # Ensure we're interpolating to the correct dimensions
    seg_logits = F.interpolate(result, size=original_shape, mode="bilinear", align_corners=False).squeeze(0)
    normal_map = seg_logits.float().cpu().numpy().transpose(1, 2, 0)  # H x W x 3
    return normal_map

def visualize_normal(normal_map):
    normal_map_norm = np.linalg.norm(normal_map, axis=-1, keepdims=True)
    normal_map_normalized = normal_map / (normal_map_norm + 1e-5)  # Add a small epsilon to avoid division by zero
    
    # Convert to 0-255 range and BGR format for visualization
    normal_map_vis = ((normal_map_normalized + 1) / 2 * 255).astype(np.uint8)
    normal_map_vis = normal_map_vis[:, :, ::-1]  # RGB to BGR
    
    return normal_map_vis

def load_normal_model(checkpoint, use_torchscript=False):
    if use_torchscript:
        return torch.jit.load(checkpoint)
    else:
        model = torch.export.load(checkpoint).module()
        model = model.to("cuda")
        model = torch.compile(model, mode="max-autotune", fullgraph=True)
        return model

输入图像:

python 复制代码
import cv2
import numpy as np

# Load the model
normal_model = load_normal_model(model_path, use_torchscript='_torchscript')

# Load the image
image = cv2.imread("/home/user/app/assets/image.webp")

输出:

Meta Sapiens的局限

尽管Meta Sapiens擅长理解与人类相关的任务,但它在更复杂的场景中面临挑战。例如,当多个人站在一起(拥挤),或者当个人处于不寻常或罕见的姿势时,模型很难准确估计姿势和分割身体部位。此外,当身体的部分被隐藏时,严重的遮挡会使模型提供精确结果的能力进一步复杂化。

结论

Meta Sapiens代表了以人为中心的AI向前迈出的重要一步,提供了跨姿态估计,分割,深度预测和表面法线估计的强大功能。然而,像许多模型一样,它仍然有局限性,特别是在拥挤或高度复杂的场景中。随着人工智能的不断发展,像Sapiens这样的模型的未来迭代有望解决这些挑战,使我们更接近更准确和可靠的以人为本的应用程序。


好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

相关推荐
吕小明么几秒前
OpenAI o3 “震撼” 发布后回归技术本身的审视与进一步思考
人工智能·深度学习·算法·aigc·agi
CSBLOG1 小时前
深度学习试题及答案解析(一)
人工智能·深度学习
小陈phd1 小时前
深度学习之超分辨率算法——SRCNN
python·深度学习·tensorflow·卷积
探索云原生2 小时前
在 K8S 中创建 Pod 是如何使用到 GPU 的: nvidia device plugin 源码分析
ai·云原生·kubernetes·go·gpu
王国强20092 小时前
动手学人工智能-深度学习计算5-文件读写操作
深度学习
威化饼的一隅3 小时前
【多模态】swift-3框架使用
人工智能·深度学习·大模型·swift·多模态
机器学习之心4 小时前
BiTCN-BiGRU基于双向时间卷积网络结合双向门控循环单元的数据多特征分类预测(多输入单输出)
深度学习·分类·gru
SimonLiu0095 小时前
[AI]30分钟用cursor开发一个chrome插件
chrome·ai·ai编程
MorleyOlsen5 小时前
【Trick】解决服务器cuda报错——RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
运维·服务器·深度学习
伯牙碎琴5 小时前
智能体实战(需求分析助手)二、需求分析助手第一版实现(支持需求提取、整理、痛点分析、需求分类、优先级分析、需求文档生成等功能)
ai·大模型·agent·需求分析·智能体