🏡 个人主页:IT贫道-CSDN博客
🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~
🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频
目录
1. 老照片上色原理
2. 老照片上色环境准备
2.1 下载DeOldify项目
2.2 下载权重文件
2.3 安装依赖的python包
3. 给图片上色
4. 给视频上色
1. 老照片上色原理
老照片上色原理就是使用GAN生成式对抗网络,对于一些原始黑白图片及对应的彩色图像,使用GAN生成式对抗网络来实现上色。
2. 老照片上色环境准备
2.1 下载DeOldify项目
项目下载地址:https://github.com/jantic/DeOldify,下载之后解压到对应的非中文路径下,这里解压到“J:\DeOldify-master”路径。可以处理图片上色,也可以处理视频上色。DeOldfy的核心网络框架是GAN,可以对图片和视频呈现更详细、真实的渲染效果。
2.2 下载权重文件
DeOldify 是基于深度学习开发的,需要用到预训练权重,这里项目开发者已经把训练好的权重上传到网上,我们可以直接拿来使用,不需要我们再训练,本项目中用到的权重文件比较多,一共三个:
- Artistic 权重,会使图片上色效果 更大胆一些,下载地址:
https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth
- Stable 权重,相对于 Artistic 上色效果更保守一些,下载地址:
https://www.dropbox.com/s/usf7uifrctqw9rl/ColorizeStable_gen.pth
- Video 权重,此权重文件用来给视频上色,下载地址
https://data.deepai.org/deoldify/ColorizeVideo_gen.pth
权重文件下载完毕后,在项目根目录下创建一个models文件夹,把下载好的三个权重文件放入models文件夹内。
2.3 安装依赖的python包
首先需要安装pytorch,这里在“修复照片”中已经处理,所以不再安装,此外还需安装如下:
从https://www.lfd.uci.edu/~gohlke/pythonlibs/ 网站中下载“Bottleneck-1.3.2-cp36-cp36m-win_amd64.whl”手动安装,不然后面自动下载不下来。
pip install -i Simple Index fastai==1.0.51pip install -i Simple Index wandbpip install -i Simple Index tensorboardX==1.6pip install -i Simple Index ffmpegpip install -i Simple Index ffmpeg-python==0.1.17pip install -i Simple Index youtube-dl>=2019.4.17pip install -i Simple Index jupyterlabpip install -i Simple Index opencv-python>=3.3.0.10pip install -i Simple Index pillow==8.2.0
可以直接 使用如下命令指定文件进行批量安装python依赖包:
D:\ProgramData\Anaconda3\envs\python36_oldimage\Scripts>pip install -r J:\DeOldify-master\requirements.txt
指定文件安装,这里还是手动每个安装吧,指定文件下载太慢。
3. 给图片上色
from deoldify import device
from deoldify.device_id import DeviceId# choices: CPU, GPU0...GPU7
device.set(device=DeviceId.GPU0)
from deoldify.visualize import *
import gcplt.style.use('dark_background')
# 加速训练
torch.backends.cudnn.benchmark=Trueimport warnings
warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?")#Artistic 为布尔值, True 表示启用 Artistic 模式 ( False 启用 Stable 模式);
colorizer = get_image_colorizer(artistic=True)#render_factor 表示渲染因子,值越大效果越好,但同时需要更大的显存;
#我的电脑设置1就承受不住了
render_factor=10#source_path 表示输入图片路径
source_path = 'J:\\s8.jpg'# result_path = 'J:\\finished\\'colorizer.plot_transformed_image(path=source_path, render_factor=render_factor, compare=True)
gc.collect()
前面提到过 Artistic 与 Stable 是有区别的(因为用到的权重文件是不一样的), Artistic 上色效果会更加激进一些。
运行代码前如果使用Artistic模式那么下载resnet101-63fe2227.pt文件存在“C:\Users\wubai/.cache\torch\hub\checkpoints\”路径下;
如果使用Stable模式那么下载https://download.pytorch.org/models/resnet101-63fe2227.pth放在“C:\Users\wubai/.cache\torch\hub\checkpoints\”路径下。
目前Stable模式老是内存不够,我们就记住一个模式是Artistic即可。
问题解决:pip uninstall numpy pip uninstall pandas
4. 给视频上色
给视频上色需要两个步骤:
1) 在window中安装ffmpeg
ffmpeg主要用户合成视频。ffmpeg下载地址:Download FFmpeg
登录后,选择windows:
下载完成之后,解压到某一路径下,这里解压到“J:\ffmpeg-4.4-essentials_build”,配置window环境变量:
2) 编写代码,转换视频
准备视频:old_video.mp4与old_video.mp4 ,编写下面代码:
from deoldify import device
from deoldify.device_id import DeviceId#choices: CPU, GPU0...GPU7
device.set(device=DeviceId.GPU0)from deoldify.visualize import *
plt.style.use('dark_background')
import warnings
warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?")colorizer = get_video_colorizer()#NOTE: Max is 44 with 11GB video cards. 21 is a good default
render_factor=21#"D:\ProgramData\Anaconda3\envs\python36_oldimage\lib\subprocess.py" 文件中 611行 shell=False 改成shell=True,不然读取不到文件
file_name_ext = "J:\\old_video2.mp4"
# file_name_ext = file_name + ".mp4"
result_path = Nonecolorizer.colorize_from_file_name(file_name_ext, render_factor=render_factor)
转换之后的视频在目录:“J:\DeOldify-master\video\result”中,在转换过程中使用的显卡非常大,内存也比较多。