【无标题】Image-to-Image Translation 图像风格迁移中的成对图像拼接代码

引 言 在图像风格迁移任务中,近几年比较火热的Generative Adversarial Nets (GAN)模型以及各种变体深受视觉研究团体的青睐,在具体任务中取得比较不错的实验表现。在有监督图像风格迁移任务迁移中,需要输入给模型成对的图片(一个来自源域source domain,一个来自目标域target domain)。成对图像底层内容可以相同,pix2pix模型主要研究这类图像集合,图像底层内容也可以不同,CycleGAN模型主要解决底层内容不同的风格迁移问题。在图像输入模型前需要对图像进行预处理,可以将两个领域的图像拼接成一张图作为模型的输入。本文主要讲述两个用于图像拼接处理的代码。代码来源于文章【Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks】paper Project code

文章目录

一、PIL库实现图像拼接

图像拼接的前提条件是两张图具有相同的尺寸,若尺寸不同需要采用缩放、裁剪等策略对图像进行预处理。调用Image.new(mode, size)创建拼接图,通过 paste()函数将两张图片粘贴到指定位置。

示例代码:

c 复制代码
def align_images(a_file_paths, b_file_paths, target_path):
    if not os.path.exists(target_path):
        os.makedirs(target_path,exist_ok=True)

    for i in range(len(a_file_paths)):
        img_a = Image.open(a_file_paths[i])
        img_b = Image.open(b_file_paths[i])
        assert(img_a.size == img_b.size)

        aligned_image = Image.new("RGB", (img_a.size[0] * 2, img_a.size[1]))
        aligned_image.paste(img_a, (0, 0))
        aligned_image.paste(img_b, (img_a.size[0], 0))
        aligned_image.save(os.path.join(target_path, '{:04d}.jpg'.format(i)))

if __name__ == '__main__':
    img_A_path = './2007_000121.jpg'
    img_B_path = './2007_000123.jpg'
    img_AB_dir = './AB/splice'
    align_images([img_A_path], [img_B_path], img_AB_dir)

图片效果

二、cv2库实现图像拼接

首先调用cv2.imread()函数读取两张图片,将两张图片拼接后调用cv2.imwrite()函数写入到新图片文件中。

示例代码

c 复制代码
def image_write(path_A, path_B, path_AB):
    if not os.path.exists(path_AB):
        os.makedirs(path_AB,exist_ok=True)
    im_A = cv2.imread(path_A, 1) # python2: cv2.CV_LOAD_IMAGE_COLOR; python3: cv2.IMREAD_COLOR
    im_B = cv2.imread(path_B, 1) # python2: cv2.CV_LOAD_IMAGE_COLOR; python3: cv2.IMREAD_COLOR
    im_AB = np.concatenate([im_A, im_B], 1)
    img_save = os.path.join(path_AB,'concate.jpg')
    cv2.imwrite(img_save, im_AB)

if __name__ == '__main__':
    img_A_path = './2007_000121.jpg'
    img_B_path = './2007_000123.jpg'
    img_AB_dir = './AB/splice'
    image_write(img_A_path,img_B_path,img_AB_dir)

三、总结

在视觉项目中,图像数据集的预处理是一个非常重要的关键环节,在CycleGAN的项目代码中除本文 描述的一个小细节外,还有很多图像数据预处理代码值得大家学习和引用。在引言部分给出了项目代码的 hub库。想要阅读项目代码的同学可以自行下载学习。

相关推荐
wen_zhufeng14 分钟前
IndexTTS 2.5 技术报告
人工智能·算法·机器学习
Mark-Wang27 分钟前
每天介绍一家新质生产力公司4
人工智能
牧羊人.33331 分钟前
计算机视觉基础 第 10 章|图像直方图与直方图均衡化
图像处理·opencv·计算机视觉
AI视觉网奇39 分钟前
智能办公 大模型总结
人工智能
AIGC大时代1 小时前
有些内容AI写得再顺都不一定稳,这8个地方导师一问就露馅
人工智能·codex·ai工具·aiwritepaper·ai学术写作
CODER03041 小时前
Anaconda和Mamba创建环境管理包常用命令合集
python·深度学习·conda·虚拟环境·mamba·常用命令大全
skywalk81631 小时前
我现在手里有comate、dumate、 workbuddy和trae四个agent,你看这四个任务怎么分合适?
人工智能·deepseek
用户0617708544951 小时前
Agent 办事失败兜底技术实现方案:从失败模型到生产级容错体系
人工智能
是大乔家的1 小时前
网文分销商必备神器:用知漫剧快速将授权小说转化为连载视频引流
人工智能
ITmaster07312 小时前
面试官坏笑:“你用 AI 编程一年了,怎么保证 Claude Code 写出来的代码是对的?”我:“直接上 Claude Fable 5 啊!”
人工智能