YOLOv7-pose Docker镜像超6GB问题求助:AWS ECR部署需求
解决YOLOv7-pose Docker镜像体积过大(超6GB)的优化方案
问题背景
构建用于AWS ECR的YOLOv7-pose Docker镜像,实现图片输入与姿态关键点预测功能,当前镜像体积超6GB,远大于此前MediaPipe实现的500MB,需针对性优化。
优化步骤
1. 选用轻量级基础镜像
- 优先选择
python:3.9-slim这类瘦身版Python镜像,相比全量镜像可减少数GB体积;若无需GPU推理,直接使用PyTorch官方CPU镜像pytorch/pytorch:2.0.1-cpu,避免携带GPU驱动及相关依赖。 - 若追求极致轻量化,可尝试Alpine-based镜像(如
python:3.9-alpine),但需注意Alpine使用musl libc,部分依赖可能需要额外编译,需调整安装命令。
2. 精简并优化依赖安装
- 移除冗余依赖:
boto3-stubs是类型提示工具,生产环境无需保留;dateTime与Python标准库datetime功能重复,直接删除该依赖;- 检查
requirements.txt,仅保留代码中实际导入的包:boto3、requests、protobuf、pytz、torch、opencv-python、pybase64、ultralytics、typing-extensions。
- 优化安装参数:
- 安装pip包时添加
--no-cache-dir参数,避免缓存文件占用空间:pip install --no-cache-dir -r requirements.txt - 若无需GPU,安装CPU版PyTorch替代GPU版,体积大幅降低:
pip install torch==2.0.1+cpu -f https://download.pytorch.org/whl/cpu - 用
opencv-python-headless替换opencv-python,移除GUI相关组件,减少数百MB体积。
- 安装pip包时添加
3. 使用Docker多阶段构建
通过多阶段构建分离构建环境与运行环境,丢弃构建过程中的临时文件、编译依赖等冗余内容,示例Dockerfile如下:
# 第一阶段:构建依赖 FROM python:3.9-slim AS builder WORKDIR /app COPY requirements.txt . # 安装编译所需的临时依赖(如gcc),安装完成后立即清理 RUN apt-get update && apt-get install -y --no-install-recommends gcc g++ && \ pip install --no-cache-dir --user -r requirements.txt && \ apt-get purge -y gcc g++ && apt-get autoremove -y && rm -rf /var/lib/apt/lists/* # 第二阶段:生成运行镜像 FROM python:3.9-slim WORKDIR /app # 从构建阶段复制已安装的依赖包 COPY --from=builder /root/.local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages # 复制应用代码 COPY application.py . # 启动命令 CMD ["python", "application.py"]
4. 清理镜像冗余文件
- 在
apt-get install后立即执行rm -rf /var/lib/apt/lists/*,清理APT缓存; - 安装pip包后删除pip缓存:
rm -rf /root/.cache/pip; - 移除构建过程中生成的临时文件、编译中间产物。
5. 优化YOLO模型文件
- 使用轻量化的YOLOv7-pose模型(如
yolov7-tiny-pose.pt)替代全量模型,减少模型文件体积; - 复制模型文件到镜像时,仅保留推理所需的权重文件,删除训练相关的配置、日志等文件。
内容的提问来源于stack exchange,提问作者Prajyot Pawar
相关产品推荐
相关产品推荐

