
首先告诉大家怎么用,可能这是大家最感兴趣的啦
如果希望能够在线生成自己的漫画形象的话,首先可以简单使用hungging face https://huggingface.co/spaces/akhaliq/AnimeGANv2,这里面可以快速生成自己的漫画形象,也可以选择一些明星来生成。
以下就是简单的在线生成自己的漫画形象,并且可以选择v1还是v2来生成自己的漫画形象

动漫是我们日常生活中常见的艺术形式,被广泛应用于广告、电影和儿童教育等多个领域。目前,动漫的制作主要是依靠手工实现。然而,手工制作动漫非常费力,需要非常专业的艺术技巧。对于动漫艺术家来说,创作高质量的动漫作品需要仔细考虑线条、纹理、颜色和阴影,这意味着创作动漫既困难又耗时。因此,能够将真实世界的照片自动转换为高质量动漫风格图像的自动技术是非常有价值的。它不仅能让艺术家们更多专注于创造性的工作,也能让普通人更容易创建自己的动漫作品。
AnimeGAN是来自武汉大学和湖北工业大学的一项研究,采用的是神经风格迁移 + 生成对抗网络(GAN)的组合。该项目可以实现将真实图像动漫化,由Jie Chen等人在论文AnimeGAN: A Novel Lightweight GAN for Photo Animation中提出。生成器为对称编解码结构,主要由标准卷积、深度可分离卷积、反向残差块(IRB)、上采样和下采样模块组成。判别器由标准卷积组成。
在初始版本发布时的论文《AnimeGAN: a novel lightweight GAN for photo animation》中还提出了三个全新的损失函数,用于提升风格化的动漫视觉效果。
这三个损失函数分别是:灰度风格损失,灰度对抗损失、颜色重建损失,下图也可以看到对比

去年九月发布的 AnimeGANv2 优化了模型效果,解决了 AnimeGAN 初始版本中的一些问题。

AnimeGAN 初代模型运行效果

AnimeGANv2 模型运行效果
以马斯克为例,AnimeGAN 初代的效果已经很令人惊艳,只是太过于白嫩病娇,仿佛韩国男团成员。相比之下,v2 更加自然,也更贴合真实气质。
AnimeGANv2 的更新重点:
在 v2 中新增了新海诚、宫崎骏、今敏三位漫画家漫画风格的训练数据集。
数据集包含6656张真实的风景图片,3种动漫风格:Hayao,Shinkai,Paprika,每一种动漫风格都是从对应的电影中通过对视频帧的随机裁剪生成的,除此之外数据集中也包含用于测试的各种尺寸大小的图像。数据集信息如下图所示:

AnimeGANv2中生成器的网络结构如图所示,K代表卷积核大小,S代表步长,C代表卷积核个数,IRB代表倒残差块,resize代表插值up-采样方法,SUM表示逐元素相加。AnimeGANv2 的生成器参数大小为 8.6MB,AnimeGAN 的生成器参数大小为 15.8MB。AnimeGANv2 使用与 AnimeGAN 相同的判别器,区别在于判别器使用 Layer Normalization而不是Instance Normalization(IN)。

前面讲了一下如何在线生成,现在介绍一下,使用的代码,其实也是几个步骤,下面我给大家简要介绍一下吧
## AnimeGANv2源码解析
import os
import dlib
import collections
from typing import Union, List
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
这一部分是导入dlib库里面的face_detector也就是针对我们的人脸进行检测,所以需要导入我们的模型
def get_dlib_face_detector(predictor_path: str = "shape_predictor_68_face_landmarks.dat"):
if not os.path.isfile(predictor_path):
model_file = "shape_predictor_68_face_landmarks.dat.bz2"
os.system(f"wget http://dlib.net/files/{
model_file}")
os.system(f"bzip2 -dk {
model_file}")
detector = dlib.get_frontal_face_detector()
shape_predictor = dlib.shape_predictor(predictor_path)
def detect_face_landmarks(img: Union[Image.Image, np.ndarray]):
if isinstance(img, Image.Image):
img = np.array(img)
faces = []
dets = detector(img)
for d in dets:
shape = shape_predictor(img, d)
faces.append(np.array([[v.x, v.y] for v in shape.parts()]))
return faces
return detect_face_landmarks
接下来定义了可视化脸部的landmarks关键点的代码,这样可以使我们更清晰的认识。
def display_facial_landmarks(
img: Image,
landmarks: List[np.ndarray],
fig_size=[15, 15]
):
plot_style = dict(
marker='o',
markersize=4,
linestyle='-',
lw=2
)
pred_type = collections.namedtuple('prediction_type', ['slice', 'color'])
pred_types = {
'face': pred_type(slice(0, 17), (0.682, 0.780, 0.909, 0.5)),
'eyebrow1': pred_type(slice(17, 22), (1.0, 0.498, 0.055, 0.4)),
'eyebrow2': pred_type(slice(22, 27), (1.0, 0.498, 0.055, 0.4)),
'nose': pred_type(slice(27, 31), (
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删