mirror of
https://github.com/tencentmusic/cube-studio.git
synced 2025-02-17 14:40:28 +08:00
add NOGAN
This commit is contained in:
parent
e8e79aa333
commit
e60b4e606a
@ -1,36 +0,0 @@
|
||||
今天再给大家分享一个稍微复杂些的项目——给漫画上色。
|
||||
|
||||
<img width="300" alt="640" src="https://user-images.githubusercontent.com/20157705/191451414-772d01b3-e198-4f35-85cc-9f2f02c94236.png">
|
||||
|
||||
|
||||
这类项目一般是通过GAN(生成对抗网络)来实现的,GAN一般有两个基础的组件,一个是生成器,另一个是判别器。通俗地理解,生成器生成的目标图片想尽可能地骗过判别器,判别器则要擦亮双眼尽量找出其中的破绽,通过这两个组件不断对抗,最终生成器生成的图片可以达到以假乱真的目的。
|
||||
|
||||
该项目有以下几个特性:
|
||||
|
||||
- 自动跳过彩色图片 将彩色图片复制到(或放大到)输出文件夹。
|
||||
- 为小显存 GPU 添加图片分块 选项。
|
||||
- 添加超分辨率 Real-ESRGAN(支持 分块)默认输出75 webp减少体积。
|
||||
- 单独的上色、超分辨率等模式。
|
||||
|
||||
使用方法如下。
|
||||
|
||||
首先下载训练好的生成器模型文件放到./networks目录中
|
||||
|
||||
```bash
|
||||
wget https://cubeatic.com/index.php/s/PcB4WgBnHXEKJrE/download -O generator.pt
|
||||
```
|
||||
然后,执行python inference.py即可。执行该命令,可附带一些参数来控制模型的输出,下面列了几个核心的参数:
|
||||
|
||||
```bash
|
||||
-g:使用 GPU
|
||||
-onlysr:仅放大模式(无上色)
|
||||
-ca:强制上色模式
|
||||
-nosr:仅上色模式(无放大)
|
||||
-sub:处理输入路径(包括子文件夹下)的所有文件
|
||||
```
|
||||
项目地址:https://github.com/FlotingDream/Manga-Colorization-FJ/blob/main/README_CN.md
|
||||
|
||||
模型定义在项目./networks/models.py源文件中可以查看。模型还是比较复杂的,源代码只提供了生成器的网络结构。
|
||||
|
||||
想自己训练模型的朋友,可以参考Real-ESRGAN项目,也是在GitHub上开源的项目
|
||||
|
66
aihub/deep-learning/NoGAN/README.md
Normal file
66
aihub/deep-learning/NoGAN/README.md
Normal file
@ -0,0 +1,66 @@
|
||||
NoGAN是一种新型GAN,它能花费最少的时间进行GAN训练。
|
||||
|
||||
<img width="300" alt="640" src="https://user-images.githubusercontent.com/20157705/191451414-772d01b3-e198-4f35-85cc-9f2f02c94236.png">
|
||||
|
||||
1. 准备工作
|
||||
首先,用git clone命令下载源码
|
||||
```bash
|
||||
git clone https://github.com/jantic/DeOldify.git
|
||||
```
|
||||
|
||||
进入项目根目录,安装Python依赖包
|
||||
```bash
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
编写代码运行项目之前,需要下载预训练好的模型。项目提供了三个模型
|
||||
|
||||
|
||||
区别如下:
|
||||
|
||||
- ColorizeArtistic_gen.pth:在有趣的细节和活力方面实现了最高质量的图像着色效果,该模型在 UNet 上使用 resnet34 为主干,通过 NoGAN 进行了 5 次评论家预训练/GAN 循环重复训练
|
||||
|
||||
- ColorizeStable_gen.pth:在风景和肖像方面取得了最佳效果,该模型在 UNet 上使用 resnet101 为主干,通过 NoGAN 进行了 3 次评论家预训练/GAN 循环重复训练
|
||||
|
||||
- ColorizeVideo_gen.pth:针对流畅的视频进行了优化,它仅使用初始生成器/评论家预训练/GAN NoGAN 训练。由于追求流畅的速度,它的色彩比前两者少。
|
||||
|
||||
将下载好的模型文件放在项目根目录的models目录下即可。
|
||||
|
||||
|
||||
2. 编写代码
|
||||
|
||||
在项目根目录同级目录下创建Python文件,编写代码加载刚刚下载好的模型文件。
|
||||
|
||||
```bash
|
||||
from DeOldify.deoldify.generators import gen_inference_wide
|
||||
from DeOldify.deoldify.filters import MasterFilter, ColorizerFilter
|
||||
|
||||
# 指定模型文件
|
||||
learn = gen_inference_wide(root_folder=Path('./DeOldify'), weights_name='ColorizeVideo_gen')
|
||||
|
||||
# 加载模型
|
||||
deoldfly_model = MasterFilter([ColorizerFilter(learn=learn)], render_factor=10)
|
||||
```
|
||||
root_folder指定项目根目录,weights_name指定接下来使用哪个模型为照片上色。
|
||||
|
||||
读取老照片,进行上色
|
||||
```bash
|
||||
import cv2
|
||||
import numpy as np
|
||||
from PIL import Image
|
||||
|
||||
img = cv2.imread('./images/origin.jpg')
|
||||
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
|
||||
pil_img = Image.fromarray(img)
|
||||
|
||||
filtered_image = deoldfly_model.filter(
|
||||
pil_img, pil_img, render_factor=35, post_process=True
|
||||
)
|
||||
|
||||
result_img = np.asarray(filtered_image)
|
||||
result_img = cv2.cvtColor(result_img, cv2.COLOR_RGB2BGR)
|
||||
cv2.imwrite('deoldify.jpg', result_img)
|
||||
```
|
||||
用cv2读取老照片,并用PIL.Image模块将图片转换成模型输入所需要的格式,送入模型进行上色,完成后保存。
|
||||
|
||||
上述代码是我从项目源码中抽取的,可以看到,运行代码还是非常简单的。
|
Loading…
Reference in New Issue
Block a user