- 人工智能
- 深度学习
- 计算机视觉
- 图像处理
- 视频处理
【免费下载链接】DeepMosaics
Automatically remove the mosaics in images and videos, or add mosaics to them.
导读
本文以 DeepMosaics 项目仓库中 docs/exe_help.md 官方说明文档为主体,系统讲解DeepMosaics.exe(Windows 图形界面版本)的下载安装、界面操作、预训练模型选型与高级参数配置。读完本文,你将能够在 Windows 上完成「图片/视频马赛克添加」「马赛克去除」「风格转换」三类任务,并能通过--option参数对马赛克尺寸、识别阈值、去码算法等细节进行精确控制,同时理解这些参数在 入口脚本 与 参数解析模块 中的底层生效逻辑。
一、DeepMosaics.exe 是什么
DeepMosaics.exe 是 DeepMosaics 项目编译打包的Windows 图形界面(GUI)可执行版本,基于同一套核心代码(见 deepmosaic.py 中的add/clean/style三种模式分发逻辑)封装而成,让不熟悉命令行与 Python 环境的用户也能直接上手。其核心能力包括:
- 添加马赛克(Add Mosaic):自动识别图片/视频中的人脸等 ROI 区域并打码;
- 去除马赛克(Clean Mosaic):自动定位马赛克区域并借助深度学习模型还原,或使用传统图像处理方法;
- 风格转换(Style Transfer):将图片/视频转换为名画风格(莫奈、梵高、浮世绘等)。
需要注意,GUI 版本存在以下使用前提(官方原文注意事项):
- 需要64 位 Windows操作系统,Windows 10 为最佳运行环境;
- 不同预训练模型适用于不同效果,应根据任务选择对应模型;
- 运行耗时取决于电脑性能,处理视频时建议使用 GPU;
- 若输出视频无法播放,可尝试使用PotPlayer播放器打开;
- GUI 版本的更新节奏慢于源码版本,追求最新功能请直接运行源码。
二、环境要求与安装步骤
2.1 CPU 版本
CPU 版本仅需安装 Microsoft Visual C++ 运行库(vc_redist.x64.exe,可在微软官网的 VS 16 release 页面获取),安装后即可运行 DeepMosaic.exe。
2.2 GPU 版本
GPU 版本要求NVIDIA 显卡(GTX 1060 及以上),并满足以下三点:
- 安装 Microsoft Visual C++ 运行库(同上);
- 将显卡驱动升级到460 及以上版本(NVIDIA 官网 GeForce 驱动下载页获取);
- 安装CUDA 11.0(注意只能是 11.0 版本,从 CUDA Toolkit 归档页面下载)。
以上所有安装文件(程序本体、预训练模型、VC++ 运行库、驱动、CUDA 等)均可从官方提供的 Google Drive 或百度网盘(提取码
1x0a)一次性下载。版本限制提醒:按官方文档说明,当前 GUI 版本本身不支持 GPU 加速(GUI 中标注 4 已注明“当前版本不支持 GPU”),需要 GPU 请运行源码版本。源码版本的 GPU 使用由 cores/options.py 中的
--gpu_id参数控制,其内部会通过os.environ["CUDA_VISIBLE_DEVICES"]指定可见 GPU,并在torch.cuda.is_available()返回 False 时自动回退到-1(CPU)。
2.3 获取程序与模型
运行程序前,请下载 DeepMosaics.exe 本体以及所需的预训练模型(*.pth文件)。模型文件也可在仓库的 pretrained_models 目录下按需放置,源码版本默认从./pretrained_models/下加载。
三、四步快速上手:如何使用
官方给出的 GUI 使用流程极为简洁,共四步:
- Step 1:选择需要处理的图片或视频;
- Step 2:选择预训练模型(不同模型效果不同,详见下一节选型表);
- Step 3:点击运行并等待处理完成;
- Step 4:到
./result目录查看输出结果。
在源码层面,这四步对应 deepmosaic.py 主函数中对opt.mode的分发:add模式加载 BiSeNet ROI 分割网络后调用add.addmosaic_img/addmosaic_video,clean模式加载马赛克定位网络与生成网络后调用clean.cleanmosaic_img/cleanmosaic_video_byframe/cleanmosaic_video_fusion,style模式加载风格迁移网络后调用style.styletransfer_img/styletransfer_video。GUI 只是把下图所示的操作封装成了可视化界面。
四、GUI 界面逐项注释(对应上图标注)
上图出自仓库 imgs/GUI_Instructions.jpg,是官方文档对界面的标准注释,各标注含义如下:
| 标注 | 控件 | 作用 |
|---|---|---|
| 1 | 文件选择按钮(Step1 右侧...) | 弹出文件对话框,选择待处理的图片或视频 |
| 2 | 模型选择按钮(Step2 右侧...) | 弹出文件对话框,选择预训练模型文件(*.pth) |
| 3 | Mode 下拉框 | 选择程序运行模式:auto/add/clean/style;默认auto会根据模型文件名自动推断模式 |
| 4 | GPU 复选框 | 是否使用 GPU 运行深度学习模型;当前 GUI 版本不支持 GPU,需要 GPU 请运行源码 |
| 5 | FPS 输入框 | 限制输出视频的帧率,0表示保持原始帧率 |
| 6 | More Options 复选框 | 开启更多高级选项(对应标注 7 的命令预览区) |
| 7 | 命令预览区 | 将当前 GUI 配置实时转换为命令行,如--mode auto --media_path ... --model_path ... --fps 0 --result_dir ../result,便于核对配置 |
| 8 | Run! 按钮 | 运行程序 |
| 9 | Help 按钮 | 打开帮助文件 |
| 10 | Donate 按钮 | 赞助项目 |
| 11 | About 按钮 | 查看版本信息 |
| 12 | GitHub 图标 | 打开项目 GitHub 页面 |
关于标注 3 的auto模式,其推断逻辑实现在 cores/options.py 中:根据model_path的文件名判断——文件名含clean或指定了--traditional则切到clean;含add切到add;含style或edges切到style;否则报错提示检查model_path。
五、预训练模型选型指南
官方将预训练模型分为「马赛克(Mosaic)」与「风格转换(Style Transfer)」两大类,选错模型会直接影响处理效果,务必按需选择。
5.1 马赛克类模型
| 模型名 | 用途 |
|---|---|
add_face.pth | 为图片/视频中的全部人脸添加马赛克 |
clean_face_HD.pth | 去除图片/视频中全部人脸的马赛克(要求内存 > 8GB,对应 HD 生成器) |
add_youknow.pth | 为图片/视频中的特定内容添加马赛克 |
clean_youknow_resnet_9blocks.pth | 去除图片/视频中特定内容的马赛克 |
clean_youknow_video.pth | 去除视频中特定内容的马赛克,处理视频马赛克时推荐使用名称带video的模型 |
从源码看,模型名中的关键信息会被 cores/options.py 解析以决定网络结构:netG为auto且模式为clean时,模型名含unet_128选用 UNet-128,含resnet_9blocks选用 ResNet-9Blocks,含HD且不含video选用 HD(pix2pixHD),含video则选用视频融合模型(models/loadmodel.py 中分别对应pix2pix_G、pix2pixHD_G与video_G)。同时ex_mult(马赛克区域外扩系数)也会自动区分:模型名含face时为1.1,否则为1.5。
5.2 风格转换类模型
| 模型名 | 用途 |
|---|---|
style_apple2orange.pth | 苹果变橙子 |
style_orange2apple.pth | 橙子变苹果 |
style_summer2winter.pth | 夏天变冬天 |
style_winter2summer.pth | 冬天变夏天 |
style_cezanne.pth | 转换为保罗·塞尚(Paul Cézanne)绘画风格 |
style_monet.pth | 转换为克劳德·莫奈(Claude Monet)绘画风格 |
style_ukiyoe.pth | 转换为浮世绘(Ukiyoe)风格 |
style_vangogh.pth | 转换为文森特·梵高(Van Gogh)绘画风格 |
风格转换类模型均基于 ResNet-9Blocks 生成器(models/loadmodel.py 的style()函数),若模型或预处理中包含edges(边缘图)输入,则生成器输入通道自动改为 1 通道。
六、进阶参数详解:用--option精确控制效果
若默认效果不满足需求,可在 GUI 标注 7 的命令预览区(或源码命令行)中按--option your-parameters的格式追加参数。以下参数均定义于 cores/options.py,并附带源码中的默认值与取值范围。
6.1 基本参数(Base)
| 选项 | 说明 | 默认值 |
|---|---|---|
--gpu_id | GPU 设备编号,-1表示不使用 GPU | 0 |
--media_path | 待处理的图片或视频路径(可指向目录批量处理) | ./imgs/ruoruo.jpg |
--start_time | 视频处理起点,格式HH:MM:SS | 00:00:00 |
--last_time | 视频处理时长,默认处理整个视频 | 00:00:00 |
--mode | 运行模式:auto/clean/add/style | auto |
--model_path | 预训练模型路径 | ./pretrained_models/mosaic/add_face.pth |
--result_dir | 输出媒体保存目录 | ./result |
--temp_dir | 中间临时文件目录(视频处理会拆帧为图片) | ./tmp |
--tempimage_type | 临时图片格式png/jpg,png画质更好但更占空间 | jpg |
--netG | 生成网络选择:auto/unet_128/unet_256/resnet_9blocks/HD/video | auto |
--fps | 输出视频帧率,0表示保持原始帧率 | 0 |
--no_preview | 指定后处理视频时不弹出预览窗口(适合服务器场景) | 未指定(False) |
说明:
--media_path支持指向目录。入口脚本 deepmosaic.py 会先os.path.isdir()判断,目录则通过util.Traversal()遍历其中全部媒体文件逐个处理。
6.2 添加马赛克参数(AddMosaic)
| 选项 | 说明 | 默认值 |
|---|---|---|
--mosaic_mod | 马赛克类型:squa_avg/squa_random/squa_avg_circle_edge/rect_avg/random | squa_avg |
--mosaic_size | 马赛克方块尺寸,0表示自动计算 | 0 |
--mask_extend | 马赛克区域向外扩展的像素数 | 10 |
--mask_threshold | 马赛克区域识别阈值(0~255),越小越容易被判定为马赛克区域 | 64 |
这些参数在 util/mosaic.py 中有完整实现细节:
squa_avg:对掩码覆盖的每个n×n块取像素均值填充(经典马赛克);squa_random:每个块随机采样块内像素填充;squa_avg_circle_edge:全图均值块化后再用圆形掩码与原始图像混合,形成圆润边缘;rect_avg:以rect_rat≈1.6的宽高比生成矩形马赛克块;random:自动随机组合马赛克类型、尺寸与羽化参数,模拟真实马赛克分布;mosaic_size=0时调用get_autosize(),根据掩码面积与图像分辨率(以 512 为基准)按分段函数自动推算块尺寸;- 羽化(feather)默认自动以块尺寸
n作为模糊核,将马赛克区域与原图平滑过渡。
6.3 去除马赛克参数(CleanMosaic)
| 选项 | 说明 | 默认值 |
|---|---|---|
--traditional | 指定后改用传统图像处理方法去码(不加载生成网络) | 未指定(False) |
--tr_blur | 传统方法中高斯模糊核尺寸ksize,直接影响最终画质 | 10 |
--tr_down | 传统方法的下采样倍数,同样影响最终画质 | 10 |
--medfilt_num | 视频中马赛克位置时序平滑的中值滤波窗口大小 | 11 |
另有一些未列入 GUI 文档但源码支持的进阶去码参数:
| 选项 | 说明 | 默认值 |
|---|---|---|
--mosaic_position_model_path | 用于定位马赛克位置的模型路径 | auto(自动在同目录找mosaic_position.pth) |
--no_feather | 指定后不做边缘羽化与颜色校正(速度更快) | 未指定(False) |
--all_mosaic_area | 指定后查找全部马赛克区域,否则只找最大区域 | 未指定(False) |
--ex_mult | 马赛克区域外扩倍率 | auto(face 模型 1.1,其余 1.5) |
从 models/runmodel.py 可以看到传统方法traditional_cleaner()的实现:先cv2.blur模糊(--tr_blur),再按--tr_down步长下采样,最后INTER_LANCZOS4放大回原尺寸——通过"模糊+降采样+放大"来抹平马赛克块状纹理。而深度学习路径则先由 BiSeNet 定位马赛克位置(get_mosaic_position),裁剪马赛克区域交给生成网络重建,再用replace_mosaic做边缘融合。视频去码时,cores/clean.py 还会用--medfilt_num对连续帧的马赛克中心坐标做中值滤波,抑制抖动。若模型名含video,则走cleanmosaic_video_fusion帧融合路线,把前后帧的上下文一起送入网络(N=2、T=5、S=3 的时空采样结构),画面更稳定。
6.4 风格转换参数(Style Transfer)
| 选项 | 说明 | 默认值 |
|---|---|---|
--output_size | 输出媒体尺寸,0表示保持原始尺寸 | 512 |
注意:源码中该参数默认值为
0,但在 GUI 说明文档中写作512——这是因为 cores/options.py 在test_flag模式下检测到output_size == 0且模式为style时,会自动将output_size设为512(ResNet-9Blocks 风格迁移网络惯用的处理分辨率),所以 GUI/测试场景实际等效默认 512。
风格转换还支持以下扩展参数(源码定义):
--preprocess:加载时的预处理方式,可选resize/resize_scale_width/edges/gray,可用逗号组合;--edges:以 Canny 边缘图作为输入生成图片(输入通道变为 1);--canny:Canny 阈值(默认150,源码会按该值自动生成上下阈值区间);--only_edges:直接输出边缘图而不做风格迁移。
七、从源码理解整体处理流水线
为了让读者更清楚地把握 GUI 背后的执行脉络,这里结合仓库源码给出各模式的核心调用链:
- 添加马赛克:cores/add.py 的
addmosaic_img依次执行「BiSeNet 分割 ROI 掩码(runmodel.get_ROI_position)→util/mosaic.py的addmosaic()打码 → 输出到result_dir下*_add.jpg」;视频版则先拆帧、逐帧定位并打码,最后用 ffmpeg 以--fps指定的帧率合成为*_add.mp4。 - 去除马赛克:cores/clean.py 先由马赛克定位网络(
mosaic_position.pth)逐帧找出马赛克位置与掩码,再对每个马赛克区域执行run_pix2pix()重建(或traditional_cleaner()传统处理),最后replace_mosaic无缝贴回原图,输出*_clean.jpg/*_clean.mp4。 - 风格转换:cores/style.py 将每帧送入
run_styletransfer()(含--output_size缩放、Canny 边缘预处理等),输出文件名自动带模型名后缀,如*_vangogh.jpg/*_monet.mp4。
三种模式的视频处理都会在temp_dir中暂存拆帧图片与音频,结束后由 deepmosaic.py 调用util.clean_tempfiles()自动清理临时文件;处理中途如果程序异常,main()外层还会打印 DeepMosaics 版本(0.5.1)、Python / PyTorch / OpenCV 版本与平台信息,方便排查环境问题。
八、常见问题速查
- 输出视频无法播放:换用 PotPlayer 等播放器尝试(视频编码兼容性问题);
- 想用 GPU 加速:GUI 版本暂不支持 GPU,请改用源码版本运行,并通过
--gpu_id指定显卡;GPU 环境需满足驱动 ≥ 460 且安装 CUDA 11.0; - 处理效果不理想:优先核对是否选对模型——去码请用
clean_*系列、打码请用add_*系列、视频去码优先clean_youknow_video.pth,人脸任务注意clean_face_HD.pth需要大于 8GB 内存; - 马赛克识别过松/过紧:调整
--mask_threshold(0~255,越小越容易判为马赛克区域)与--mask_extend(扩展马赛克覆盖范围); - 找不到马赛克位置模型:源码要求
--mosaic_position_model_path指向的mosaic_position.pth必须与去码模型存放在同一目录,否则程序会提示检查该路径并退出。
以上全部参数、默认值与调用逻辑均可在仓库的 参数定义文件、入口脚本 及 官方参数说明文档 中进一步核对,实操时建议先在单张图片上测试参数组合,再批量处理视频,以兼顾效果与运行时间。
- 人工智能
- 深度学习
- 计算机视觉
- 图像处理
- 视频处理
【免费下载链接】DeepMosaics
Automatically remove the mosaics in images and videos, or add mosaics to them.
相关推荐
DeepMosaics深度学习图像处理:智能马赛克去除与添加完整指南
DeepMosaics深度学习图像处理:智能马赛克去除与添加完整指南 DeepMosaics是一款基于深度学习的智能图像处理工具,能够自动去除图像和视频中的马赛
人工智能深度学习计算机视觉图像处理视频处理DeepMosaics 实战指南:图像与视频马赛克的自动添加、去除与风格迁移(语义分割 + Image-to-Image 双模型架构)
DeepMosaics 实战指南:图像与视频马赛克的自动添加、去除与风格迁移(语义分割 + Image to Image 双模型架构) 导读 本文以 DeepM
人工智能深度学习计算机视觉图像处理视频处理Kornia 的 Bayer RAW 图像转换:CFA 枚举、去马赛克与 RGB 互转实战指南
Kornia 的 Bayer RAW 图像转换:CFA 枚举、去马赛克与 RGB 互转实战指南 Bayer RAW 是大多数相机传感器直接输出的原始数据格式——
计算机视觉人工智能深度学习图像处理
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考