换天算法是计算机视觉的经典任务之一,也是image sky mattig的应用之一。输入一张原图A以及一张参考图B,换天算法会得到两张图片对应的天空区域的alpha图(alpha属于软分割,与硬分割mask不同,mask将视频分为前景与背景,取值为0或1,而alpha的取值范围是0到1之间,数值代表透明度,因此alpha比mask更为精细)
换天算法利用A和B图对应的天空区域alpha图,配合融合算法,将参考图B的天空样式替换到原图A中,从而改变原图A的天空样式,实现换天功能。 该模型由三大部分构成:低分辨率处理模块,高分辨率处理模块和换天模块; 其中低分辨率处理模块的backboe是基于hret-ocr框架实现的,采用了w18v2的版本,为了实现更好的效果,我们对原网络模块进行了一定修改,主要添加了自设计的super模块以及ASPP模块,扩大了感受野,重新进行分割训练,这部分的结果作为高分辨率处理模块的输入;
高分辨率处理模块基于UNET,实现对低分辨率后超分至原有分辨率,该层具有可学习参数,效果远优于直接上采样效果;
换天模块基于Multibad bleder 图像拼缝技术实现; 使用方式: 使用范围: 目标场景: 在ModelScope框架上,提供原A和参考图B,算法会将参考图B的天空样式替换到原A中,可通过简单的Pipelie调用来使用换天功能。 正常情况下,算法result返回的是包含换天结果的字典,可通过result[OutputKeys.OUTPUT_IMG]得到换天结果,并结合cv2.imwrite函数保存成图片,'result.pg'可以替换成希望保存图片的地址和名称。 该模型训练可以同时使用包含天空区域的语义分割数据集和mattig数据集,或者使用自制数据集。 受限于训练数据集,有可能产生一些偏差,请用户自行评测后决定如何使用。天空替换模型介绍
抠图系列模型
图像人像抠图
通用抠图(支持商品、动物、植物、汽车等抠图)
视频人像抠图
天空替换(一键实现魔法换天空)
模型结构介绍
使用方式和范围
如何使用
代码范例
import cv2
import os.path as osp
import modelscope
from modelscope.outputs import OutputKeys
from modelscope.pipelies import pipelie
from modelscope.pipelies.base import Pipelie
from modelscope.utils.costat import Tasks
image_skychage = pipelie(Tasks.image_skychage,
model='damo/cv_hretocr_skychage')
result = image_skychage({'sky_image':'data/test/images/sky_image.jpg',
'scee_image':'data/test/images/scee_image.jpg'})
cv2.imwrite('result.pg', result[OutputKeys.OUTPUT_IMG])
prit(f'Output writte to {osp.abspath("result.pg")}')
模型推理流程
图像预处理
天空区域推理
换天
训练数据集介绍
模型局限性以及可能的偏差
点击空白处退出提示







评论