基于改进LPTN网络的多任务生成模型

项目需求:

开发一个人体肤色均匀功能

现有技术参考:

LPTN生成网络,实现单维度图像的生成

https://github.com/csjliang/LPTN

存在问题:

如何让模型区分不同维度,实现多维度的生成。如:一共有五种肤色选择,如何通过一个模型实现按需生成,希望生成白色或者棕色皮肤等。而非每一个维度训练一个模型,浪费资源的占用。

解决思路:

参考stargan方法,改造LPTN网络的生成器和判别器,将生成器的输入从1个(图像)变为2个(图像加标签)。标签分类和生成图像真伪判别公用一个判别器,除了判断生成图像的真伪外,返回图像的类别。

1.数据准备与加载

1)首先拷贝LPTN公开代码到自己的工程,配置好相关的环境(不再赘述)

2)准备数据集,在datasets/my_data(没有的自己创建)文件夹底下创建train和test两个文件夹,在train和test文件夹底下分别再创建A和B文件夹,A文件夹中存放原始图像数据,B中存放需要生成的目标图像数据(标签图像),注意A和B文件夹底下图像名称需要对应匹配。保证数据中人体皮肤占比大,否则生成效果不理想。

3)如何给每个图像输入对应的标签?拟在读取图像数据时根据每个图像的名称进行标签添加。为每张图像的名称添加对应的标签前缀,如:目前图像是白色的则添加“white_"前缀。前缀添加脚本代码如下:

import os


def add_prefix_to_images(folder_path, prefix):
    # 遍历文件夹
    for filename in os.listdir(folder_path):
        # 检查文件是否为图片(这里简单判断后缀为.jpg)
        if filename.endswith(".jpg") or filename.endswith(".png"):
            # 构建完整的文件路径
            old_path = os.path.join(folder_path, filename)

            # 构建新的文件名,添加指定前缀
            new_filename = f"{prefix}_{filename}"
            new_path = os.path.join(folder_path, new_filename)

            # 重命名文件
            os.rename(old_path, new_path)
            print(f"Renamed: {filename} to {new_filename}")

#图像存储路径
folder_path_A = r'E:\chen\skin_512\test\A'
prefix = "white"
# 调用函数
add_prefix_to_images(folder_path_A, prefix)

4)修改LPTN代码中codes/data/paired_image_dataset.py文件,为数据加载时获取图像的标签,定义extract_label_from_filename方法,根据“_”切割方法,切割出图像的标签,定义label_to_onehot方法,将标签转换为onehot编码,代码如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值