--- notion-id: 23bca4d7-cb7b-806a-ac51-ffe5ae086537 --- [安装torch ](https://pytorch.org/get-started/locally/) ```shell uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128 uv add transformers uv pip install fastapi uvicorn pillow ``` ```shell # Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base") result = pipe("/home/zhensolid/sl/images.jpg") # 替换为你的图片路径 print(result) ``` ### **方法 1:使用 FastAPI 部署** ```plain text from fastapi import FastAPI, UploadFile, File from transformers import pipeline import io from PIL import Image app = FastAPI() pipe = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base") @app.post("/caption") async def generate_caption(file: UploadFile = File(...)): image = Image.open(io.BytesIO(await file.read())) result = pipe(image) return {"caption": result[0]["generated_text"]} ``` 运行: ```plain text uvicorn main:app --host 0.0.0.0 --port 8000 ``` ### **方法 2:使用 Flask(轻量级)** ```plain text from flask import Flask, request, jsonify from transformers import pipeline import io from PIL import Image app = Flask(__name__) pipe = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base") @app.route("/caption", methods=["POST"]) def caption_image(): file = request.files["image"] image = Image.open(io.BytesIO(file.read())) result = pipe(image) return jsonify({"caption": result[0]["generated_text"]}) if __name__ == "__main__": app.run(host="0.0.0.0", port=5000) ``` 运行: ```plain text python app.py ``` **测试 API**: ```plain text curl -X POST -F "image=@test.jpg" http://localhost:8000/caption ```