环境前提: 110 容器 (AI-Server) 已配置好 rembg-env 虚拟环境,且 /root/.u2net/ 目录下已预置 birefnet-portrait.onnx 模型。
📌 第一步:准备原图 (Windows 端)
在 Windows 电脑上,将需要处理的照片重命名为简短的英文(例如
input.jpg)。将照片复制到飞牛 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 代表不透明):
下面是一个运行在 pve1 宿主机 上的自动化 Bash 脚本。这个脚本会自动遍历飞牛 NAS 里的特定文件夹,把里面的照片逐个推送进容器、调用显卡批量处理,最后再把成品挨个拉取出来。
🚀 自动化批量换底脚本与执行教程
第一步:在 Windows 上准备批量文件夹
打开你的网络驱动器
\\192.168.0.203\PVE_Backup\images\。在里面新建两个文件夹:
batch_in(用来放所有需要处理的几十张原图)batch_out(处理完的成品会自动出现在这里)
把你要处理的照片(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 文件夹验收那批完美的白底证件照即可。