Administrator
发布于 2026-04-28 / 0 阅读
0
0

📸 Proxmox 容器 AI 完美换底 SOP (Tesla P4 + BiRefNet 版)

环境前提: 110 容器 (AI-Server) 已配置好 rembg-env 虚拟环境,且 /root/.u2net/ 目录下已预置 birefnet-portrait.onnx 模型。

📌 第一步:准备原图 (Windows 端)

  1. 在 Windows 电脑上,将需要处理的照片重命名为简短的英文(例如 input.jpg)。

  2. 将照片复制到飞牛 NAS 共享目录:\\192.168.0.203\PVE_Backup\images\

📌 第二步:将照片推入 AI 容器 (PVE 宿主机)

打开 pve1 宿主机 Shell,严格使用 pct 命令将共享目录中的照片推送至 LVM-Thin 容器内部:

Bash

pct push 110 /mnt/pve/fnos-smb/images/input.jpg /root/input.jpg

📌 第三步:执行 GPU 抠图与换色 (110 容器内)

进入容器,激活环境,并调用特化模型执行处理:

Bash

# 1. 进入容器
pct enter 110

# 2. 激活 Python 虚拟环境
source rembg-env/bin/activate

# 3. 运行特化处理命令(注意修改 -bgc 后面的颜色代码)
MODEL_CHECKSUM_DISABLED=1 rembg i -m birefnet-portrait -bgc 255 255 255 255 /root/input.jpg /root/output.jpg

# 4. 处理完成,退出容器
exit

📌 第四步:提取成品照片 (PVE 宿主机)

回到 pve1 宿主机 Shell,将生成的成品照片拉取回飞牛 NAS 目录:

Bash

pct pull 110 /root/output.jpg /mnt/pve/fnos-smb/images/output.jpg

最后,在 Windows 的 PVE_Backup\images 文件夹中即可获取完美换底后的 output.jpg


🎨 附录:常用证件照背景色代码指南

命令中的 -bgc R G B A 代表的是 红(R) 绿(G) 蓝(B) 透明度(A)。你可以根据需要,修改第三步命令中的这四个数字来更换任何背景颜色(A 永远填 255 代表不透明):

背景颜色

适用场景

命令中的 -bgc 参数写法

纯白色

护照、签证、驾照、身份证

-bgc 255 255 255 255

常规蓝色

毕业证、工作证、简历

-bgc 67 142 219 255

深蓝色

某些特定企事业单位要求

-bgc 20 84 153 255

中国红

结婚证、党团活动、各种庆典

-bgc 255 0 0 255

透明底

用于二次设计(必须输出为.png

(直接删掉整个 -bgc ... 参数)

下面是一个运行在 pve1 宿主机 上的自动化 Bash 脚本。这个脚本会自动遍历飞牛 NAS 里的特定文件夹,把里面的照片逐个推送进容器、调用显卡批量处理,最后再把成品挨个拉取出来。

🚀 自动化批量换底脚本与执行教程

第一步:在 Windows 上准备批量文件夹

  1. 打开你的网络驱动器 \\192.168.0.203\PVE_Backup\images\

  2. 在里面新建两个文件夹:

    • batch_in (用来放所有需要处理的几十张原图)

    • batch_out (处理完的成品会自动出现在这里)

  3. 把你要处理的照片(jpg 或 png 格式)全部扔进 batch_in 文件夹。

第二步:在 PVE 宿主机创建脚本

打开你的 pve1 宿主机 Shell,执行以下命令来创建一个名为 auto_kou.sh 的脚本文件:

Bash

cat << 'EOF' > /root/auto_kou.sh
#!/bin/bash

# ================= 配置区 =================
# 宿主机上挂载的飞牛NAS路径
HOST_IN_DIR="/mnt/pve/fnos-smb/images/batch_in"
HOST_OUT_DIR="/mnt/pve/fnos-smb/images/batch_out"

# 容器相关配置
CTID=110
CT_IN_DIR="/root/batch_in"
CT_OUT_DIR="/root/batch_out"
# 直接使用容器内虚拟环境的绝对路径,免去 source 激活的麻烦
REMBG_CMD="/root/rembg-env/bin/rembg"
# ==========================================

echo "🚀 开始自动化批量抠图任务..."

# 1. 确保容器内有对应的工作目录
pct exec $CTID -- mkdir -p "$CT_IN_DIR"
pct exec $CTID -- mkdir -p "$CT_OUT_DIR"

# 2. 遍历宿主机 input 目录下的所有照片
shopt -s nullglob
for img_path in "$HOST_IN_DIR"/*.{jpg,jpeg,png,JPG,JPEG,PNG}; do
    filename=$(basename "$img_path")
    echo "----------------------------------------"
    echo "📸 正在处理: $filename"

    # a. 安全推送:将原图推送进 110 容器
    pct push $CTID "$img_path" "$CT_IN_DIR/$filename"

    # b. GPU 运算:在容器内非交互式执行抠图命令 (纯白色背景)
    # 强制跳过哈希校验,调用特化模型
    pct exec $CTID -- bash -c "MODEL_CHECKSUM_DISABLED=1 $REMBG_CMD i -m birefnet-portrait -bgc 255 255 255 255 '$CT_IN_DIR/$filename' '$CT_OUT_DIR/$filename'"

    # c. 安全拉取:将生成的成品拉取回飞牛NAS
    pct pull $CTID "$CT_OUT_DIR/$filename" "$HOST_OUT_DIR/$filename"

    # d. 及时清理容器内的缓存文件,防止占用 LVM-Thin 空间
    pct exec $CTID -- rm -f "$CT_IN_DIR/$filename" "$CT_OUT_DIR/$filename"

    echo "✅ $filename 处理完成!"
done

echo "----------------------------------------"
echo "🎉 所有照片已处理完毕,请前往 batch_out 文件夹查看!"
EOF

第三步:赋予脚本执行权限

脚本创建好后,给它加上可执行权限(只需执行一次):

Bash

chmod +x /root/auto_kou.sh

第四步:一键运行脚本!

以后只要你在 batch_in 文件夹里放好了照片,只需要在 pve1 宿主机 Shell 里敲下这一行命令:

Bash

./auto_kou.sh

屏幕上会实时打印进度(📸 正在处理: xxx.jpg... ✅ 处理完成)。同时,由于你配置了 Tesla P4 显卡直通,GPU 算力全开的情况下,通常几秒钟就能处理完一张。跑完后,你直接去 Windows 里的 batch_out 文件夹验收那批完美的白底证件照即可。


评论