照片修复
项目地址github项目地址:https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life
环境搭建1、下载Bringing-Old-Photos-Back-to-Life的github项目直接下载压缩包解压,或者clone下载都可以。clone指令:gitclonehttps://github.com/microsoft/Bringing-Old-Photos-Back-to-Life
2、下载工程依赖的其他github项目依次执行就可以了
cdFace_Enhancement/models/networks/gitclonehttps://github.com/vacancy/Synchronized-BatchNorm-PyTorchcp-rfSynchronized-BatchNorm-PyTorch/sync_batchnorm.cd../../../cdGlobal/detection_modelsgitclonehttps://github.com/vacancy/Synchronized-BatchNorm-PyTorchcp-rfSynchronized-BatchNorm-PyTorch/sync_batchnorm.cd../../3、下载预训练模型人脸识别预训练模型:
cdFace_Detection/wgethttp://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2bzip2-dshape_predictor_68_face_landmarks.dat.bz2cd../Face_Enhancement和Global的checkpoints模型:
cdFace_Enhancement/wgethttps://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Face_Enhancement/checkpoints.zipunzipcheckpoints.zipcd../cdGlobal/wgethttps://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Global/checkpoints.zipunzipcheckpoints.zipcd../由于两个checkpoints下载的速度很慢,可以先下载,然后把下载链接复制到迅雷下载,速度可以达到10M。我将下好的上传到了百度云,地址:https://pan.baidu.com/s/1aZOrp7OF3rt9b8B4UZxTAw,提取码:g1wj下载完分别放到对应文件夹然后解压。
4、安装环境所需模块按照github项目下面的说明,直接执行:pip3install-rrequirements.txt就行了。但是问题就来了!cuda、torch、torchvision版本一定要对应,直接pip安装torch和torchvision的话安装的都是最新的,执行修复图片时就会出现下面列举的错误。所以最好的方法就是打开requirements.txt然后将这些包手动pip安装,除了torch和torchvision要指定版本,其他的都可以直接pip安装。
我的环境是:cuda-8.0、torch-1.0.0、torchvision-0.2.2三者对应关系参考:https://blog.csdn.net/jonado13/article/details/108281688
修复图片使用时,假设输入路径为/home/jcy/source/source/old_w_scratch(待修复的图片放在这里),输出路径为/home/jcy/source/source/output_images,那么执行指令为:图片没有裂痕:
python3run.py--input_folder/home/jcy/source/source/old_w_scratch--output_folder/home/jcy/source/source/output_images--GPU0图片有裂痕
python3run.py--input_folder/home/jcy/source/source/old_w_scratch--output_folder/home/jcy/source/source/output_images--GPU0--with_scratch执行完毕,修复完的图片就会出现在output_images/final_output中。
注:修复的图片不要太大,比较大的照片还是别想了,大概率带不动的,大图可以把人身体区域截图下来修复,或者将图片切割或裁剪。
报错:1、incompatiblefunctionarguments.Thefollowingargumenttypesaresupported:1.(arg0:object,arg1:torch._C._jit_tree_views.SourceRange,arg2:Callable[[str],function])->torch._C.Type错误原因:torch版本和torchvision版本不匹配
2、AssertionError:TheNVIDIAdriveronyoursystemistooold(foundversion9000).错误原因:torch版本太高,与cuda不匹配,比如我cuda-8.0装了torch-1.5报错了,重新安装torch1.0.0解决。
运行结果效果还阔以,但是只生成了这两张,因为这两张图片尺寸比较小,其他找的几张图片比较大,在生成修复图片的时候把我1080ti顶爆了,等啥时候有钱了整个3080ti试试了。。。。硬要修复大的图片,可以裁剪成多份,多次修复以后拼接成一张图片即可,但为了提高拟合度,最好每张图片中都有一块大小适中的重叠区域,而且看了一部分源码,这个项目中似乎对人脸还是挺敏感的,所以最好裁剪的每个部分都把人物包括在里面,以人物为基准向四周拓展。修复完一次以后注意清理一下,最好的办法就是把输出图片的文件夹中的所有内容删除(包括图片和文件夹),否则下次修复就会出现重复。