学做网站论坛vip淄博网站建设公司有多少家
2026/6/20 2:44:46 网站建设 项目流程
学做网站论坛vip,淄博网站建设公司有多少家,固定ip 建网站,黄石网站建设定做从图片到视频#xff1a;SAM3保姆级分割教程#xff0c;附完整代码 1. 引言 在计算机视觉领域#xff0c;图像与视频的语义分割一直是核心任务之一。随着基础模型的发展#xff0c;Meta推出的 SAM3#xff08;Segment Anything Model 3#xff09; 成为当前最先进的可提…从图片到视频SAM3保姆级分割教程附完整代码1. 引言在计算机视觉领域图像与视频的语义分割一直是核心任务之一。随着基础模型的发展Meta推出的SAM3Segment Anything Model 3成为当前最先进的可提示分割模型之一。它不仅支持图像中的对象检测与分割还扩展至视频场景下的目标跟踪与动态分割真正实现了“万物皆可分”。SAM3 的最大优势在于其统一的可提示机制——用户可以通过文本描述、点坐标、边界框或掩码等方式灵活指定需要分割的目标。这种交互式设计极大降低了使用门槛使得开发者和研究人员能够快速构建高精度的视觉理解系统。本文将围绕 CSDN 星图平台提供的SAM 3 图像和视频识别分割镜像手把手带你完成从环境部署到图像/视频分割的全流程实践。我们将涵盖镜像部署与服务启动图像中文本提示分割视频中基于点提示的目标添加与精细控制跨帧目标跟踪与ID管理完整代码实现与结果可视化无论你是初学者还是有一定经验的开发者都能通过本教程快速掌握 SAM3 的核心用法。2. 模型简介与部署准备2.1 SAM3 核心能力概述SAM3 是 Meta 推出的第三代通用分割模型具备以下关键特性多模态提示输入支持文本、点、框、掩码等多种提示方式。跨域适应性强无需微调即可泛化到新类别和新场景。视频时序一致性引入时间维度建模实现稳定的目标跨帧跟踪。高效推理架构优化后的 Transformer 架构保证实时性与准确性平衡。该模型已在 Hugging Face 开源地址为https://huggingface.co/facebook/sam32.2 部署与初始化流程使用 CSDN 星图平台提供的预置镜像可以免去复杂的依赖安装过程。具体步骤如下在 CSDN星图镜像广场 搜索 “SAM 3 图像和视频识别分割” 镜像并部署。等待约 3 分钟确保模型加载完成。点击右侧 Web UI 图标进入交互界面。⚠️ 注意若页面显示“服务正在启动中...”请耐心等待 2~5 分钟后再刷新访问。部署成功后你将看到一个简洁的 Web 界面支持上传图片或视频并通过英文关键词如book、rabbit进行目标分割。3. 图像分割实战基于文本提示3.1 基础设置与库导入我们首先在本地环境中复现 SAM3 的调用逻辑。假设你已获取模型权重文件sam3.pt和 BPE 编码文件bpe_simple_vocab_16e6.txt.gz。import cv2 import torch import numpy as np import supervision as sv from pathlib import Path from PIL import Image from typing import Optional from IPython.display import Video from sam3.model_builder import build_sam3_video_predictor import os import glob import matplotlib.pyplot as plt from sam3.visualization_utils import ( load_frame, prepare_masks_for_visualization, visualize_formatted_frame_output, )3.2 辅助函数定义为了提升代码可读性和复用性定义两个常用工具函数# 设置绘图字体大小 plt.rcParams[axes.titlesize] 12 plt.rcParams[figure.titlesize] 12 # 将绝对坐标转换为相对坐标归一化 def abs_to_rel_coords(coords, IMG_WIDTH, IMG_HEIGHT, coord_typepoint): if coord_type point: return [[x / IMG_WIDTH, y / IMG_HEIGHT] for x, y in coords] elif coord_type box: return [ [x / IMG_WIDTH, y / IMG_HEIGHT, w / IMG_WIDTH, h / IMG_HEIGHT] for x, y, w, h in coords ] else: raise ValueError(f未知坐标类型: {coord_type})3.3 加载模型与初始化会话# 使用 GPU 加速推理 DEVICES [torch.cuda.current_device()] # 模型路径配置 checkpoint_path models/sam3.pt bpe_path assets/bpe_simple_vocab_16e6.txt.gz # 构建预测器 predictor build_sam3_video_predictor( checkpoint_pathcheckpoint_path, bpe_pathstr(bpe_path), gpus_to_useDEVICES ) # 启动处理会话 SOURCE_IMAGE assets/images/sample.jpg response predictor.handle_request( requestdict( typestart_session, resource_pathSOURCE_IMAGE, ) ) session_id response[session_id] print(f会话ID: {session_id})3.4 文本提示分割执行只需提供目标类别的英文名称即可完成自动定位与分割prompt_text_str cat # 示例猫 frame_idx 0 response predictor.handle_request( requestdict( typeadd_prompt, session_idsession_id, frame_indexframe_idx, textprompt_text_str, ) ) out response[outputs] # 可视化结果 image Image.open(SOURCE_IMAGE).convert(RGB) detections sv.Detections.from_sam(out) mask_annotator sv.MaskAnnotator() annotated_image mask_annotator.annotate(image.copy(), detections) plt.figure(figsize(8, 6)) plt.imshow(annotated_image) plt.title(文本提示分割结果 - cat) plt.axis(off) plt.show()4. 视频分割进阶点提示与目标跟踪4.1 视频预处理帧提取视频需先拆分为独立帧以便逐帧处理。使用ffmpeg进行高效转换SOURCE_VIDEOassets/videos/bedroom.mp4 OUTPUT_DIRoutput_frames mkdir -p $OUTPUT_DIR ffmpeg -i $SOURCE_VIDEO -q:v 2 -start_number 0 $OUTPUT_DIR/%05d.jpg4.2 帧序列加载video_frames_for_vis sorted(glob.glob(os.path.join(OUTPUT_DIR, *.jpg))) try: video_frames_for_vis.sort(keylambda p: int(Path(p).stem)) except: video_frames_for_vis.sort() # 备用排序4.3 初始化视频会话response predictor.handle_request( requestdict( typestart_session, resource_pathSOURCE_VIDEO, ) ) session_id response[session_id]4.4 方法一文本提示启动目标跟踪prompt_text_str person frame_idx 0 predictor.handle_request( requestdict( typeadd_prompt, session_idsession_id, frame_indexframe_idx, textprompt_text_str, ) ) # 全局传播以实现跨帧跟踪 def propagate_in_video(predictor, session_id): outputs_per_frame {} for response in predictor.handle_stream_request( requestdict(typepropagate_in_video, session_idsession_id) ): outputs_per_frame[response[frame_index]] response[outputs] return outputs_per_frame outputs_per_frame propagate_in_video(predictor, session_id) outputs_vis prepare_masks_for_visualization(outputs_per_frame) # 每隔60帧可视化一次 for idx in range(0, len(outputs_vis), 60): visualize_formatted_frame_output( idx, video_frames_for_vis, [outputs_vis], [SAM3 跟踪结果], figsize(6, 4) )4.5 移除指定目标按 ID若某目标干扰主任务可通过remove_object接口移除obj_id 1 # 如小女孩 predictor.handle_request( requestdict( typeremove_object, session_idsession_id, obj_idobj_id, ) ) # 重新传播验证效果 outputs_per_frame propagate_in_video(predictor, session_id) outputs_vis prepare_masks_for_visualization(outputs_per_frame)4.6 添加点提示目标精确控制分割区域适用于复杂背景或多实例场景IMG_WIDTH, IMG_HEIGHT Image.open(video_frames_for_vis[0]).size points_abs np.array([[406, 170]]) # 正样本点 labels np.array([1]) # 1:正样本0:负样本 points_tensor torch.tensor( abs_to_rel_coords(points_abs, IMG_WIDTH, IMG_HEIGHT, point), dtypetorch.float32 ) labels_tensor torch.tensor(labels, dtypetorch.int32) predictor.handle_request( requestdict( typeadd_prompt, session_idsession_id, frame_index0, pointspoints_tensor, point_labelslabels_tensor, obj_id1, ) )4.7 正负样本结合实现精细分割通过正负样本点协同可排除误检区域仅保留感兴趣部分如只分割衣服而非整个人points_abs np.array([ [421, 155], # 衣服上点正 [420, 202], # 腿部点负 [400, 107], # 头部点负 ]) labels np.array([1, 0, 0]) points_tensor torch.tensor( abs_to_rel_coords(points_abs, IMG_WIDTH, IMG_HEIGHT, point), dtypetorch.float32 ) labels_tensor torch.tensor(labels, dtypetorch.int32) predictor.handle_request( requestdict( typeadd_prompt, session_idsession_id, frame_index0, pointspoints_tensor, point_labelslabels_tensor, obj_id1, ) ) # 再次传播查看精细化结果 outputs_per_frame propagate_in_video(predictor, session_id) outputs_vis prepare_masks_for_visualization(outputs_per_frame)5. 总结SAM3 凭借其强大的统一建模能力和灵活的提示机制正在重塑图像与视频分割的技术范式。本文通过完整的工程实践展示了如何利用 CSDN 星图平台的预置镜像和本地 SDK 实现以下功能快速部署 SAM3 模型并启动 Web 服务使用文本提示实现图像中任意类别的自动分割对视频数据进行帧级处理与跨帧目标跟踪通过点提示精准添加或修正分割目标利用正负样本机制实现细粒度区域控制动态管理目标 ID支持增删改操作这些能力为实际应用提供了坚实基础例如视频编辑中的智能抠像监控场景下的特定人员追踪医疗影像中病灶区域标注自动驾驶中的动态障碍物识别未来随着更多轻量化版本和定制化训练方案的推出SAM3 将进一步降低 AI 分割技术的应用门槛。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询