GPEN命令行参数详解:-i -o 参数灵活使用技巧
你是不是也遇到过这样的情况:下载了一个超棒的人像修复模型,兴冲冲跑起来,结果发现默认处理的是一张测试图,而自己手头那张珍贵的老照片却不知道怎么喂进去?或者好不容易等它跑完,输出文件名却是千篇一律的output_*.png,找都找不到……别急,这正是我们今天要聊的——GPEN 命令行里最常用、也最容易被忽略的两个参数:-i(输入)和-o(输出)。它们看起来简单,但用对了,能让你从“手动翻文件夹找结果”的重复劳动中彻底解放出来。
本文不讲模型原理,不堆配置参数,只聚焦一个目标:让你在 5 分钟内,真正掌握-i和-o的实用组合技巧,做到“想修哪张就修哪张,修完自动存到指定位置,名字还随你心意”。无论你是刚接触命令行的新手,还是已经跑过几次脚本的老手,这些技巧都能立刻提升你的工作效率。
1. 先搞清楚:GPEN 镜像是什么,为什么能直接用?
GPEN 是一个专注人像修复与增强的深度学习模型,特别擅长修复模糊、低分辨率、有噪点或轻微破损的人脸照片。它不是那种“泛泛而谈”的通用超分模型,而是专门针对人脸结构做了大量先验建模——比如眼睛该多大、鼻子该在哪、皮肤纹理该是什么走向。所以修复出来的效果,往往比普通超分更自然、更“像本人”。
而你拿到的这个镜像,不是一个空壳子,而是一个已经调好所有“零件”的完整工作台:
- 它预装了 PyTorch 2.5.0 + CUDA 12.4,不用你再折腾环境兼容性;
- 所有依赖库(
facexlib做人脸检测、basicsr提供底层支持、opencv处理图像)全都在里面; - 推理代码
/root/GPEN目录下开箱即用,连路径都不用记; - 更关键的是,模型权重已经提前下载好,插上电就能跑,完全离线。
换句话说,你不需要懂训练、不用配环境、甚至不用改一行代码——只要会敲几条命令,就能把一张模糊的老照片,变成清晰、细腻、神采奕奕的新图。
2.-i和-o是什么?它们不是“可选项”,而是“必选项”
很多新手第一次看到python inference_gpen.py --input ./my_photo.jpg,会下意识觉得:“哦,--input是个高级功能,我先试试默认的。”
但其实,-i(--input)和-o(--output)是 GPEN 推理脚本真正的“控制开关”。默认不加参数时,脚本只是在走一个预设流程,用来验证环境是否正常;而真正干活,必须靠它们来指挥。
| 参数 | 短名 | 长名 | 作用 | 是否必需 |
|---|---|---|---|---|
| 输入路径 | -i | --input | 告诉 GPEN:“你要修的这张图,就放在这里” | 实际使用中强烈建议指定 |
| 输出路径 | -o | --output | 告诉 GPEN:“修好了,放这里,叫这个名字” | 强烈建议指定,避免覆盖和混淆 |
小贴士:
-i和-o后面跟的不是“文件夹”,而是完整的文件路径+文件名。比如-i /home/user/pics/old_dad.jpg,而不是-i /home/user/pics/。这点和很多其他工具不同,务必注意。
3.-i参数的 3 种灵活用法:不止能修一张图
3.1 单图修复:最常用,也是最稳妥的起点
这是你日常使用频率最高的场景:有一张照片,想立刻看看修复效果。
cd /root/GPEN python inference_gpen.py -i ./family_reunion_1998.jpg执行后,脚本会:
- 自动读取
./family_reunion_1998.jpg(当前目录下的这张图); - 进行人脸检测、对齐、修复增强全流程;
- 默认输出为
output_family_reunion_1998.png,保存在同一目录下。
优点:简单、直观、不易出错。
注意:如果原图是.jpg,输出默认是.png(因为 PNG 无损,更适合展示修复细节)。
3.2 批量修复:一次处理多张图,省去重复敲命令
GPEN 的inference_gpen.py本身不支持通配符(如*.jpg),但 Linux 命令行可以轻松帮你补上这一环。只需一条for循环,就能批量处理整个文件夹:
cd /root/GPEN for img in /data/input/*.jpg; do filename=$(basename "$img" .jpg) python inference_gpen.py -i "$img" -o "/data/output/${filename}_enhanced.png" done这段命令的意思是:
- 到
/data/input/文件夹里,找出所有.jpg文件; - 对每一张,提取它的文件名(去掉
.jpg后缀); - 然后运行 GPEN,输入是原图,输出是
/data/output/原文件名_enhanced.png。
优点:10 张图、100 张图,都是一次性启动,无需人工干预。
小技巧:你可以把这段命令保存为batch_enhance.sh,以后双击或bash batch_enhance.sh就能复用。
3.3 跨目录操作:输入和输出完全分离,工作流更清晰
实际工作中,你很可能希望:
- 原图统一放在
/data/raw/; - 修复后的图存到
/data/enhanced/; - 中间过程图(比如对齐后的人脸裁剪)另存到
/data/debug/。
这时,-i和-o就是你组织工作流的“管道接口”:
# 修复一张高清老照片,并存到指定成果目录 python inference_gpen.py \ -i /data/raw/graduation_1985.jpg \ -o /data/enhanced/graduation_1985_enhanced.png # 修复一张手机抓拍的模糊合影,输出为 Web 友好尺寸(后续会讲如何控制尺寸) python inference_gpen.py \ -i /data/raw/group_photo_blurry.jpg \ -o /data/enhanced/group_photo_web.png优点:输入、输出、中间件物理隔离,项目结构一目了然,协作或归档时不会混乱。
4.-o参数的 4 个关键技巧:让输出完全听你指挥
4.1 自定义文件名:告别output_*.png的随机感
默认输出名是output_开头,后面跟着原始文件名。但如果你希望:
- 统一用英文命名(
zhang_san_portrait_v2.png); - 加入日期戳(
portrait_20240615.png); - 区分版本(
portrait_final.png,portrait_draft.png);
那就必须用-o显式指定:
python inference_gpen.py -i ./zhang_san_old.jpg -o zhang_san_portrait_v2.png python inference_gpen.py -i ./li_si_old.jpg -o portrait_20240615.png效果:输出文件名完全由你定义,和输入名无关,管理起来清爽利落。
4.2 控制输出格式:.pngvs.jpg,不只是后缀问题
GPEN 默认输出.png,因为它保留了全部修复细节(尤其是高光、阴影过渡)。但如果你明确知道最终用途是网页展示或微信发送,.jpg文件更小、加载更快。
只需把-o的后缀改成.jpg,GPEN 会自动适配:
# 输出为高质量 JPG(适合分享) python inference_gpen.py -i ./me.jpg -o me_share.jpg # 输出为 PNG(适合存档、二次编辑) python inference_gpen.py -i ./me.jpg -o me_archive.png注意:JPG 会有轻微压缩损失,PNG 是无损。选哪个,取决于你的优先级是“体积小”还是“质量高”。
4.3 指定子目录:一键生成层级化输出结构
你想把不同类别的修复图,自动分到不同文件夹?比如:
/data/enhanced/ ├── portraits/ ← 人像特写 ├── group_photos/ ← 合影 └── documents/ ← 证件照-o支持完整路径,包括不存在的子目录(Linux 下需确保父目录已存在):
# 自动创建并存入 portraits/ 子目录 python inference_gpen.py -i ./portrait.jpg -o /data/enhanced/portraits/portrait_enhanced.png # 存入 group_photos/ python inference_gpen.py -i ./reunion.jpg -o /data/enhanced/group_photos/reunion_enhanced.png优势:无需手动建文件夹,输出即归类,后期整理零成本。
4.4 避免覆盖:用-o加时间戳,安全第一
多人共用一台机器,或反复调试同一张图时,最怕什么?——前一次的结果被后一次覆盖,想找回都找不到。
一个简单又可靠的方案:在-o文件名里加入时间戳:
# 使用 date 命令动态生成带秒级时间戳的文件名 timestamp=$(date +"%Y%m%d_%H%M%S") python inference_gpen.py -i ./test.jpg -o "test_enhanced_${timestamp}.png"执行后,可能生成:test_enhanced_20240615_142307.png
下次再跑,就是test_enhanced_20240615_142512.png—— 清晰、唯一、可追溯。
这不是“过度设计”,而是工程实践中最朴素的自我保护。
5.-i和-o的黄金组合:解决真实痛点的 3 个实战案例
光讲参数不够,我们来看几个你马上会遇到的真实场景,以及如何用-i和-o一招搞定。
5.1 场景:客户发来 5 张待修复证件照,要求统一命名为ID_001.png~ID_005.png
痛点:不能改原图名(客户有编号规则),又不能让输出名乱七八糟。
解法:用数组+循环,精准映射
cd /root/GPEN input_files=("/data/client/raw/id_front.jpg" "/data/client/raw/id_back.jpg" "/data/client/raw/id_hand.jpg" "/data/client/raw/id_sign.jpg" "/data/client/raw/id_stamp.jpg") output_names=("ID_001.png" "ID_002.png" "ID_003.png" "ID_004.png" "ID_005.png") for i in "${!input_files[@]}"; do python inference_gpen.py -i "${input_files[$i]}" -o "/data/client/enhanced/${output_names[$i]}" done结果:5 张图,5 个精准命名,客户收到即用,不需再重命名。
5.2 场景:修复一张 4K 分辨率老照片,但只想保存为 1080p 用于 PPT 汇报
痛点:GPEN 默认输出和输入同尺寸,4K 图太大,PPT 插入卡顿。
解法:-o配合后续ffmpeg或convert缩放(GPEN 本身不缩放,但输出可控)
# 第一步:用 GPEN 修复出高清图 python inference_gpen.py -i /data/archive/photo_4k.jpg -o /tmp/photo_enhanced_4k.png # 第二步:用 ImageMagick 快速缩放到 1920x1080(保持比例) convert /tmp/photo_enhanced_4k.png -resize 1920x1080\> /data/ppt/photo_for_ppt.png关键点:-o让你先把高清结果稳稳存下来,再按需处理,不丢失原始修复质量。
5.3 场景:临时修复一张图做演示,不想污染项目目录
痛点:演示时随手一跑,结果output_*.png堆在/root/GPEN/里,看着碍眼。
解法:-o指向/tmp/临时目录,用完即焚
python inference_gpen.py -i ./demo_input.jpg -o /tmp/demo_output.png # 演示完,直接清理 rm /tmp/demo_output.png干净、快速、无残留,符合“演示即用,用完即走”的轻量原则。
6. 总结:把-i和-o当成你的“人像修复遥控器”
今天我们没讲模型结构,没碰训练代码,只死磕了两个最基础的命令行参数:-i和-o。但恰恰是它们,构成了你和 GPEN 之间最直接、最高效的对话通道。
回顾一下你真正掌握的技能:
-i不只是“指定一张图”,而是你调度数据的入口:单图、批量、跨目录、带路径,全由你定义;-o不只是“换个名字”,而是你掌控输出的总开关:自定义名、换格式、建目录、加时间戳,全在你一念之间;- 组合使用,就是一套轻量级自动化工作流:从客户交付、PPT 准备到临时演示,都有对应解法。
技术的价值,从来不在参数有多炫酷,而在于它能不能让你少点焦虑、多点确定性。下一次,当你打开终端,面对一张等待修复的老照片时,请记住:你手里握着的,不是一个冰冷的命令,而是一个真正听你话的“人像修复遥控器”。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。