基于FastAPI和AI模型的图片自动标签生成。
/project
/images # 用于存储上传的图片
/app
__init__.py # Python包初始化文件
main.py # FastAPI 服务代码
model.py # AI 模型代码
requirements.txt # 依赖文件
Dockerfile
docker-compose.yml
README.md
- 图片上传和存储
- AI自动标签生成
- RESTful API接口
- Docker容器化部署
- 异步处理支持
- 支持多种图片格式
- 克隆项目到本地
- 在项目根目录执行:
docker-compose up -d- 服务将在 http://localhost:8000 启动
- 安装Python依赖:
cd app
pip install -r requirements.txt- 启动服务:
cd app
uvicorn main:app --reload --host 0.0.0.0 --port 8000POST /api/upload
Content-Type: multipart/form-data
file: [图片文件]响应:
{
"status": "success",
"filename": "unique-filename.jpg",
"tags": ["人物", "室外", "明亮"],
"image_url": "/images/unique-filename.jpg"
}GET /api/images/{filename}/tags响应:
{
"filename": "example.jpg",
"tags": ["风景", "天空", "蓝色调"]
}GET /api/images/list响应:
{
"images": [
{
"filename": "example1.jpg",
"url": "/images/example1.jpg"
},
{
"filename": "example2.png",
"url": "/images/example2.png"
}
]
}项目根目录包含一个 test.html 文件,可以直接在浏览器中打开进行功能测试:
# 用浏览器打开测试页面
open test.htmlPYTHONPATH: Python模块搜索路径PYTHONUNBUFFERED: 禁用Python输出缓冲
- PNG
- JPEG/JPG
- GIF
- BMP
- WebP
可以在 model.py 中集成其他模型,我这里列出了一些可能有用的:
-
预训练的图像分类模型:
- ResNet
- EfficientNet
- Vision Transformer (ViT)
-
多模态模型:
- CLIP
- BLIP
-
专用标签模型:
- 场景识别模型
- 物体检测模型
app/main.py: FastAPI应用主文件,包含API路由定义app/model.py: AI模型相关代码,包含标签生成逻辑images/: 图片存储目录Dockerfile: Docker镜像构建文件docker-compose.yml: Docker编排文件
启动开发服务器:
cd app
uvicorn main:app --reload- 构建Docker镜像:
docker build -t image-tagger .- 运行容器:
docker run -d -p 8000:8000 -v ./images:/app/images image-taggerMIT License