这是一个基于 YOLOv8 分割模型的路人消除辅助项目。它会先识别图片中的人物,再根据人物框的位置、面积和置信度,自动判断谁更像主体人物,谁更像路人,并生成对应的主体掩码和路人掩码,然后使用 LaMa 修复模型进行消除和修复。
项目新增了一个本地 Web 前端,支持:
- 单张图片上传处理
- 批量图片或目录扫描处理
- 原图 / 结果图对比预览
- 处理历史查看
- 本地结果保存与日志记录
前端入口:
streamlit run app.py如果只想运行原始命令行脚本:
python yolo-analyzer.py安装依赖:
pip install -r requirements.txt- photo_cleaner_core.py:可复用的识别 / 消除核心逻辑
- app.py:Streamlit 前端
- yolo-analyzer.py:命令行入口
- yolov8s-seg.pt:YOLOv8 模型(有权重)
- 消除路人/训练集/:输入图片目录
- 消除路人/结果集/:处理后的结果目录
- runs/segment/:Ultralytics 默认输出目录,运行yolo后生成
- mask:保存生成的掩码图,需要自己新建mask文件夹
项目主要依赖以下库:
- ultralytics
- numpy
- opencv-python
- pillow
当前脚本会直接读取 消除路人/训练集/test1.png,并调用 yolov8s-seg.pt 做人物分割分析。
python yolo-analyzer.py
运行后,脚本会:
- 只检测 person 类别
- 计算每个人物的主体分数
- 选择最像主体的人物作为主目标
- 将其他人物视为路人
- 输出主体掩码和路人掩码
- 默认用 LaMa 把路人区域修复掉
- 在控制台打印每个人的框、置信度、分数和面积
脚本里用来判断主体人物的规则比较直接:
- 框面积越大,分数越高
- 框越接近图片中心,分数越高
- 模型置信度越高,分数越高
- 分数达到最高分的 75% 以上,可能会一起被视为主体
- 面积小于整张图 3% 的人物,通常会被过滤掉
如果没有任何候选人物通过筛选,脚本至少会保留分数最高的人物。
脚本会得到两个关键结果:
- 主体掩码:主体人物区域的合并结果
- 路人掩码:需要消除的路人区域的合并结果
- 消除结果图:把路人区域直接修复后的最终图片,默认保存到
消除路人/结果集/test1_removed.png