最近的时间花在了backgroundMattingV2上,它是前段时间比较火的AI抠图开源项目,网上关于他的实践代码较少,一点点把自己的实践过程记录一下。
下图是相应的配置。
--model-type 选择mattingbase或者mattingrefine,bacbone选择'resnet101', 'resnet50', 'mobilenetv2'其一,--model-checkpoint是backbone的预训练权重,(提取码b7wq)注意对应的权重要下载对,代码中的backbone也要改。
backbone_scale: 图像下采样的比例系数,通过指定模型进行下采样的多少,默认是0.25,不能超过0.5
--model-refine-mode是优化区域选择模式:
full : 所以地方都经过regular Conv2d层进行优化。优化整个图像,仅用于调试。
sampling : 仅对错误率最高的几处地方优化,它适用于每帧的计算和内存消耗有固定上限的实时应用。
thresholding :对错误率超过指定阈值的像素区进行优化,动态优化错误超过阈值的所有像素,它适用于质量超过计算速度的图像编辑应用。
refine_sample_pixels:优化采样像素数
仅当优化模式为sampling时才能使用,输入整数数量,原代码中默认80000。
refine_threshold:优化阈值
输出的错误阈值,大小0-1,当错误值大于该值时的区域才会优化。仅当优化模式是thresholding时,该参数才有效。
refine_kernel_size:优化卷积核
优化的卷积核大小,选项是[1,3]
ackbone_scale=0.25, refine_sample_pixels=80000
for HD
backbone_scale=0.125, refine_sample_pixels=320000
for 4K.
准备工作:准备一张含有人和背景的图片放在imgsrc文件夹下,准备src图片一样的背景图片放在imgbg中。
因为在前一天进行了训练,时间太长,只训练了一轮,分别使用以下权重进行推断。
并在每个权重训练下,验证三种不同output-types的图片。