减少模型源码杂乱;sam3的mask返回办法;mask图片下载接口编写;
1.减少模型源码杂乱
| 文件/文件夹 | 简介功能 | 本地学习使用能删吗? |
|---|---|---|
pyproject.toml |
Python 项目根配置文件,定义依赖、构建系统、工具配置(black/ruff/pytest等) | ✔ 可以删,运行模型不影响 |
setup.cfg |
Python 项目配置文件,配置元数据、依赖、工具参数等(旧版 setup 工具使用) | ✔ 可以删 |
setup.py |
Python 项目安装脚本,pip install 或打包时使用 | ✔ 可以删 |
MANIFEST.in |
告诉打包工具哪些文件要包含到最终包里 | ✔ 可以删 |
mkdocs.yml |
MkDocs 文档网站配置文件,用于生成项目文档网站 | ✔ 可以删 |
.pre-commit-config.yaml |
Git 提交前自动执行代码检查/格式化的配置 | ✔ 可以删 |
.editorconfig |
统一不同编辑器代码格式(缩进、换行符等) | ✔ 可以删 |
.github/ |
GitHub 项目目录,用于 CI/CD、Actions、Issue 模板等 | ✔ 可以删 |
docs/ |
项目文档文件夹 | ✔ 可以删 |
tests/ |
测试代码文件夹 | ✔ 可以删 |
2.sam3的mask返回办法
sam3的mask 本质上是一张灰度图片,用来标记图像中每个像素的类别或前景/背景状态。
直接返回mask:
返回了 mask 的时候,返回值过大,导致 FastAPI / Uvicorn 返回 Maximum response size reached。
原因是 mask 本质上是一个大数组(每个像素一个数值),如果图像较大或者 mask 很多,直接返回 JSON 会非常巨大。
3.mask图片下载接口编写
@router.get("/{filename}")
文件下载请求必须使用 GET,因为下载属于资源获取,不需要提交数据,也符合 HTTP/REST 语义,浏览器和标准库都依赖 GET 来发起下载。
保存的图片文件名随机,可以用 时间戳 或 uuid 生成不重复的名字,是最常用、最简单的两种方式
import time
filename = f"run/output_{int(time.time())}.jpg"
results.save(filename)
import uuid
filename = f"run/output_{uuid.uuid4().hex}.jpg"
results.save(filename)
f"{int(time.time())}.jpg" 前面的 f 表示 f-string(格式化字符串),否则会被看作普通字符串。
写service和api这些,记得写__init__。
init.py告诉 Python 目录是包,做包初始化。
init.py 是 包的初始化脚本,组织模块用。
浙公网安备 33010602011771号