《Learning to Cartoonize Using White-box Cartoon Representations》阅读笔记

Learning to Cartoonize Using White-box Cartoon Representations 阅读笔记


前言

自己在阅读这篇文章的过程中发现github中并没有公开数据集,后来发现在issue中可以找到,但是有提到可能会因为版权问题不放数据集链接,因此在这里为了方便大家学习,在此记录一下自己运行这个项目的过程,如果大家需要论文可以直接从github的项目中查看论文,相关文献推荐cartoongan和AnimeGAN。


github地址: https://github.com/SystemErrorWang/White-box-Cartoonization
数据集链接:https://pan.baidu.com/s/12R6sHLjLX4lGOR2OXulavg
提取码:83jk
VGG19预训练模型链接:https://pan.baidu.com/s/19e2hxWBdrE-MUnT4AD4qRA
提取码:wukk

一、文件目录

下载百度网盘中的数据集,将文件解压后放置data文件目录即可,请将下载的VGG19预训练模型更改为如下的名字,我提供的下载链接是VGG16和VGG16的预训练模型。
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

在这里插入图片描述

二、需要安装的包

个人尝试了tensorflow=1.12.0和tensorflow=1.8都可以运行,若是已经安装了tensorflow=1.8的应该不需要再重新安装了,请务必安装scikit-image=0.14.5,否则可能报错。

tensorflow-gpu==1.12.0 and 1.13.0rc0 
scikit-image==0.14.5,

在utils.py文件中使用了scikit-image,其中包括以下接口,如过使用最新的scikit-image,会因为取消了 “kind=mix” 而报错。

def label2rgb(label_field, image, kind='mix', bg_label=-1, bg_color=(0, 0, 0)):

    #std_list = list()
    out = np.zeros_like(image)
    labels = np.unique(label_field)
    bg = (labels == bg_label)
    if bg.any():
        labels = labels[labels != bg_label]
        mask = (label_field == bg_label).nonzero()
        out[mask] = bg_color
    for label in labels:
        mask = (label_field == label).nonzero()
        #std = np.std(image[mask])
        #std_list.append(std)
        if kind == 'avg':
            color = image[mask].mean(axis=0)
        elif kind == 'median':
            color = np.median(image[mask], axis=0)
        elif kind == 'mix':
            std = np.std(image[mask])
            if std < 20:
                color = image[mask].mean(axis=0)
            elif 20 < std < 40:
                mean = image[mask].mean(axis=0)
                median = np.median(image[mask], axis=0)
                color = 0.5*mean + 0.5*median
            elif 40 < std:
                color = image[mask].median(axis=0)
        out[mask] = color
    return out

三、运行数据集

预训练

想要自己训练数据集要先将生成器进行预训练,只有当生成器预训练完后才可以开始整个生成对抗网络模型的训练,右击运行pretrain即可,右边是放置的数据集目录。在这里插入图片描述
在compare_cartoon\White-box-Cartoonization\train_code\pretrain\images目录下可以看到数据集经过生成器预训练的图片。
在这里插入图片描述
在compare_cartoon\White-box-Cartoonization\train_code\pretrain\saved_models目录下放置的是预训练的模型,在正式训练中需要加载此预训练的模型。
在这里插入图片描述

正式训练

在正式训练中右击train.py开始训练即可,右边是加载VGG19的模型,我电脑写相对路径识别不到,因此写了绝对路径地址,这里已经要将VGG19文件名字改正,不然找不到模型。
代码如下(示例):
通过saver.restore(sess, tf.train.latest_checkpoint(‘pretrain/saved_models’))这一条语句加载预训练模型,开始整个模型的训练
在这里插入图片描述

训练结果

我自己本身使用的是2080TI显卡,参数使用的是默认的参数。
在这里插入图片描述
该文件目录中显示的是训练结果。
在这里插入图片描述
风格迁移前
在这里插入图片描述
在这里插入图片描述
风格迁移后
在这里插入图片描述
在这里插入图片描述

训练出的模型和训练日志文件如下。

在这里插入图片描述

总结

总体上,该论文中已经实现了很好的风格迁移的效果,如果有需要学习的小伙伴可以直接按照我的步骤进行实验,有什么问题欢迎留言交流,后续可能会进行论文部分的讲解。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
在模型无关的分层强化学习中,学习表示是一项重要的任务。学习表示是指通过提取有用的信息和特征来将观察数据转化为表示向量。这些表示向量可以用于解决强化学习问题中的决策和行动选择。 模型无关的分层强化学习是指不依赖于环境模型的强化学习方法。它通常由两个部分组成:低层控制策略和高层任务规划器。低层控制策略负责实际的行动选择和执行,而高层任务规划器则负责指导低层控制策略的决策过程。 学习表示在模型无关的分层强化学习中起到至关重要的作用。通过学习适当的表示,可以提高对观察数据的理解能力,使得模型能够捕捉到环境中的重要特征和结构。这些表示可以显著减少观察数据的维度,并提供更高层次的抽象,从而简化了决策和规划的过程。 学习表示的方法多种多样,包括基于深度学习的方法和基于特征选择的方法。基于深度学习的方法,如卷积神经网络和循环神经网络,可以通过学习多层次的特征表示来提取环境观察数据的有用信息。而基于特征选择的方法则通过选择最有信息量的特征来减少表示的维度,从而简化了模型的复杂度。 总之,学习表示在模型无关的分层强化学习中起到了至关重要的作用。通过学习适当的表示,模型可以更好地理解观察数据并进行决策和规划。不同的方法可以用来实现学习表示,包括基于深度学习的方法和基于特征选择的方法。这些方法的选择取决于具体任务和问题的需求。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值