23bca4d7-cb7b-806a-ac51-ffe5ae0865uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
uv add transformers
uv pip install fastapi uvicorn pillow
# 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)
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"]}
运行:
uvicorn main:app --host 0.0.0.0 --port 8000
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)
运行:
python app.py
测试 API:
curl -X POST -F "image=@test.jpg" http://localhost:8000/caption