传统的照片转漫画,使用边缘检测、双边滤波器和降采样,得到图像如下,可以看到,噪点很多,有些关键线条也没有展现出来。
本次采用GAN,GAN网络使用的方法是根据图像对去不断地学习,如输入图像1和对应已有的漫画B,GAN网络从图片1中获取关键特征,不停地生成一张图像C,当C与B的差值很小时停止,当有很多这样地图像对时,我们就有了一个模型。输入一张图像,就可以生成一张对应地漫画图像,我这次使用的GAN(White-box Cartoon)生成。生成效果:
完整程序代码:
import os
import cv2
import torch
import numpy as np
import torch.nn as nn
class ResBlock(nn.Module):
def __init__(self, num_channel):
super(ResBlock, self).__init__()
self.conv_layer = nn.Sequential(
nn.Conv2d(num_channel, num_channel, 3, 1, 1),
nn.BatchNorm2d(num_channel),
nn.ReLU(inplace=True),
nn.Conv2d(num_channel, num_channel, 3, 1, 1),
nn.BatchNorm2d(num_channel))
self.activation = nn.ReLU(inplace=True)
def forward(self, inputs):
output = self.conv_layer(inputs)
output = self.activation(output + inputs)
return output
class DownBlock