3分钟掌握窗口置顶神器:PinWin让你的多任务效率翻倍
2026/6/26 9:39:01
SAM 3是由Facebook推出的一个统一基础模型,专门用于图像和视频中的可提示分割任务。这个强大的模型能够通过多种形式的提示(包括文本、点、框和掩码)来检测、分割和跟踪目标对象。
核心能力包括:
首先确保你的系统满足以下要求:
安装必要的Python包:
pip install fastapi uvicorn python-multipart pip install torch torchvision pip install opencv-python从Hugging Face获取SAM 3模型:
from transformers import AutoModelForImageSegmentation model = AutoModelForImageSegmentation.from_pretrained("facebook/sam3") model.eval()创建基础的API服务文件main.py:
from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse import cv2 import numpy as np app = FastAPI() @app.post("/segment") async def segment_image( file: UploadFile = File(...), prompt: str = "object" ): # 读取上传的文件 contents = await file.read() nparr = np.frombuffer(contents, np.uint8) # 判断是图像还是视频 if file.content_type.startswith('image'): img = cv2.imdecode(nparr, cv2.IMREAD_COLOR) # 调用SAM 3进行图像分割 result = process_image(img, prompt) elif file.content_type.startswith('video'): # 视频处理逻辑 result = process_video(nparr, prompt) else: return JSONResponse({"error": "Unsupported file type"}, status_code=400) return JSONResponse(result) def process_image(image, prompt): # 实现图像分割逻辑 # 返回分割结果 return {"status": "success", "result": "image_mask_data"} def process_video(video, prompt): # 实现视频分割逻辑 # 返回分割结果 return {"status": "success", "result": "video_mask_data"}使用以下命令启动服务:
uvicorn main:app --reload --host 0.0.0.0 --port 8000服务启动后,可以通过http://localhost:8000/docs访问自动生成的API文档界面。
使用Python的requests库测试API:
import requests url = "http://localhost:8000/segment" # 测试图像分割 with open("test.jpg", "rb") as f: files = {"file": ("test.jpg", f, "image/jpeg")} data = {"prompt": "dog"} response = requests.post(url, files=files, data=data) print(response.json()) # 测试视频分割 with open("test.mp4", "rb") as f: files = {"file": ("test.mp4", f, "video/mp4")} data = {"prompt": "car"} response = requests.post(url, files=files, data=data) print(response.json())对于生产环境,建议进行以下优化:
重要的安全措施包括:
使用Docker部署的示例Dockerfile:
FROM python:3.9-slim WORKDIR /app COPY . . RUN pip install --no-cache-dir -r requirements.txt EXPOSE 8000 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]构建并运行容器:
docker build -t sam3-api . docker run -d -p 8000:8000 sam3-api本文详细介绍了如何将SAM 3视频分割模型封装为RESTful API服务,主要步骤包括:
通过这种封装方式,开发者可以轻松地将SAM 3的强大分割能力集成到各种应用中,如:
未来可以进一步扩展的功能包括:
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。