Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoCropImage

美学自动裁切,基于 PyTorch 与人脸检测,支持任意比例裁切。

来源与致谢:本项目在 lih627/autocrop 的基础上改造与工程化,使用方式与示例可参考其 Demo 文档:https://github.com/lih627/autocrop?tab=readme-ov-file#Demo

环境要求

  • Python 3.12(Ubuntu 22.04)
  • PyTorch 2.5.1(CUDA 12.4
  • GPU 可选;无 GPU 时自动编译 CPU 版本的 C++ 扩展

安装

  • 安装 PyTorch(CUDA 12.4):
    • pip install torch==2.5.1+cu124 torchvision==0.20.1+cu124 --index-url https://download.pytorch.org/whl/cu124
    • CPU 仅需:pip install torch==2.5.1 torchvision==0.20.1
  • 编译并安装本项目:
    • python setup.py install
  • 额外依赖:
    • pip install opencv-python

提示:setup.py 会根据 torch.cuda.is_available() 自动编译 CUDA/CPU 扩展,源码位于 autocrop/model/roi_alignautocrop/model/rod_align

Docker 部署

  • GPU 版本(CUDA 12.4):
    • docker compose up -d
    • 访问 http://localhost:6000/crop
    • 容器镜像:pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel
  • CPU 版本:
    • docker compose -f docker-compose.cpu.yml up -d
    • 访问 http://localhost:6000/crop
    • 容器镜像:pytorch/pytorch:2.5.1-cpu

说明:启动时会自动将仓库根目录下的 *.pth 权重复制至容器 /root/.cache/torch/hub/checkpoints,并安装依赖与启动 uvicorn。端口映射为宿主机 6000 → 容器 6006(见 docker-compose.ymldocker-compose.cpu.yml)。

网络与依赖安装:

  • Compose 采用 pip 多镜像级联(清华 → 阿里云 → 豆瓣)安装依赖,避免网络波动。
  • 如网络受限,可在仓库根目录创建 wheels/ 并放入所需 .whl 包,Compose 会自动离线安装:pip install --no-index --find-links /wheels -r requirements.txt
  • 大模型权重(Git LFS):Compose 会在容器内尝试 apt-get install git git-lfs && git lfs pull;如受限,先在宿主机执行 git lfs install && git lfs pull 后再启动。

模型准备(必须)

  • 将以下权重文件移动到 /root/.cache/torch/hub/checkpoints
    • WIDERFace_DSFD_RES152.pth(人脸检测模型)
    • mobilenet_0.625_... .pth(裁切评分模型)
    • shufflenet_0.615_... .pth(裁切评分模型)
  • 示例命令:
    • sudo mkdir -p /root/.cache/torch/hub/checkpoints
    • sudo cp WIDERFace_DSFD_RES152.pth /root/.cache/torch/hub/checkpoints/
    • sudo cp mobilenet_*.pth /root/.cache/torch/hub/checkpoints/
    • sudo cp shufflenet_*.pth /root/.cache/torch/hub/checkpoints/

说明:裁剪模型通过 torch.hub.load_state_dict_from_url 自动使用该缓存目录(见 autocrop/model/cropping_model.py:117-131);提前放置权重可避免在线下载与网络依赖。

快速上手

  • Python 调用:

    • from autocrop import cropper
    • autocropper = cropper.AutoCropper(model='mobilenetv2', cuda=True, use_face_detector=True)
    • 读入 BGR 图并转 RGB 后,调用 autocropper.crop(...) 即可返回 [xmin, ymin, xmax, ymax]
  • API 服务:

    • python apiServer.py
    • POST /crop,参数:image_base64ratio(如 16:91:1circular

示例接口实现参考 apiServer.py:105-200;裁剪核心逻辑见 autocrop/cropper.py:124-169

依赖与编译说明

  • 运行依赖(见 setup.py:90-96environment.yml):
    • torchtorchvisionnumpyopencv-pythonface-detection
    • API:fastapiuvicornpydantic
  • 编译要求:
    • CPU:需要 C++ 编译环境(gcc/clang)
    • GPU:需要 CUDA 12.4(nvccCUDA_HOME),自动构建 roi_align_apirod_align_api

目录结构

  • autocrop/ 核心库与模型、算子实现
  • apiServer.py FastAPI 服务端示例
  • anyratio.pycropImage.py 简单脚本示例
  • setup.py 构建与依赖声明

许可

  • 参考与复现自 GAIC 与 DSFD,上游许可请见其仓库。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages