前言

最早是在果壳的《这下,你的老婆也可以变成3D的了》这篇文章中看到了这个项目3D-Photo-Inpainting,通过深度学习对普通的2D图片进行内容识别分层并自动修补,再通过虚拟摄像机的移动生成一段可以小幅度移动视角的3D照片。

官网的展示效果如下:

效果可以说非常惊艳,这么好的效果,当然要在我屯的图片中试试了。

 

在线使用

在官网页面的Links部分,提供了github链接Colab链接,其中Colab是谷歌提供的云平台,可以免费在线学习和测试各种深度学习框架。

优点是可以白嫖谷歌的CPU和GPU,很方便地与谷歌云盘进行链接,安装各种环境和包的速度很快;缺点是有时间限制,用几个小时可能就会自动断掉,并且配置的好的环境不能保存,每次使用都需要重新部署。

首先因为是谷歌的服务,网络问题懂的都懂,在打开Colab链接后,是下面这样的界面,先点击最上面的复制到云端硬盘的按钮,将该脚本复制到自己的谷歌云盘中,这样下次使用时打开自己的谷歌云盘就能直接进入该脚本。

然后从下方每一段代码处找到左侧的运行按钮,按顺序点击运行按钮,等待环境部署完毕。

在运行upload段代码后,下方会出现选择文件的按钮,这是可以点击该按钮上传想要3D化的jpg图片,这一代码段可以运行多次,上传多张图片进行处理。

上传后的图片会出现在image目录中,可自行删除不需要的图片。

上传完成后运行最后一段main.py的代码,就会自动开始计算并生成视频,等待时间会较长。

最终得到的视频在左侧的video目录下,可直接点击下载查看。

生成的效果如下。

 

本地使用

部署环境

3d-photo-inpainting项目需要的运行环境为Python3.7、PyTorch 1.4.0,前者很简单,后者的安装需要确认自己的系统以及显卡型号的CUDA版本(记得更新显卡驱动),如果显卡不支持CUDA,则只能使用CPU模式计算效率会很低。

查看Windows系统的CUDA版本可以在CMD中运行以下工具。

C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe

CMD中打印的信息中CUDA Version后面的就是支持的CUDA版本。

然后到PyTorch的官方网站选择适合的版本复制部署命令在CMD中执行,如果需要较早的PyTorch版本可以查看这里

由于PyTorch包体积很大,安装会很慢,耐心等待安装成功吧。

 

下载源码和训练模型

先使用git将官方仓库克隆到本地,或者直接在网页下载zip包并解压。

git clone git@github.com:vt-vl-lab/3d-photo-inpainting.git

接着根据下载源码中的download.sh脚本的内容下载四个训练模型,在项目根目录新建checkpoint文件夹,再将下载好的pth文件放到checkpoint文件夹中。

最后将要转换的图片放到image目录下,在CMD中执行以下Python命令。

cd ../3d-photo-inpainting
python main.py --config argument.yml

最后等待计算完成即可。

argument.yml这个配置文件中记录了一些参数,可以用来控制视频大小和镜头运动等,可根据需要自行修改。

实验后发现,对于图片的前后分层还是不够智能,在选择素材时尽量选择前景后景比较分明的图片,最后得到的效果会比较好。

到了这里,忽然有了一个想法,将喜欢的图片做成动态,再加上音乐,放到WallPaperEngine里,一张精致的动态壁纸不就完成了,不说了,我先去折腾了。


不是人有欲望,
而是人即欲望。

《我与地坛》
——史铁生