尝试在Windows 10下使用SkyAR更换天空

最近了解到这个有趣的项目,遂尝试自己部署并记录下其中遇到的一些坑。

项目地址:https://github.com/jiupinjia/SkyAR

训练模型:https://drive.google.com/file/d/1COMROzwR4R_7mym6DL9LXhHQlJmJaV0J/view?usp=sharing


首先clone项目到本地,并下载模型文件。将模型带目录解压到项目目录内。

安装Python3, Anaconda:https://www.anaconda.com/products/individual#windows

安装项目目录内Requirements.txt内的依赖,但有几个需要注意/单独安装:

  • pytorch 使用conda安装,11.0是cuda的版本:
    conda install pytorch torchvision torchaudio cudatoolkit=11.0 -c pytorch
  • numpy 只能安装1.19.3,否则会报错:
    pip3 install numpy==1.19.3
  • 不装opencv-python,只装opencv-contrib-python:
    pip3 install opencv-contrib-python

安装完成后执行

python .\skymagic.py --path .\config\config-canyon-district9ship.json
即可看到效果。

附一个自己拍的视频,效果貌似不是很好…?

解决Python向阿里云OSS上传文件时报错400

如题,该问题并不是100%出现。出错时服务器返回信息如下:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>InvalidArgument</Code>
  <Message>The bucket POST must contain the specified 'key'. If it is specified, please check the order of the fields</Message>
  <RequestId>C21E709A5EC76E5ED07C0D43</RequestId>
  <HostId>oss.example.com</HostId>
  <ArgumentName>key</ArgumentName>
  <ArgumentValue></ArgumentValue>
</Error>

官网文档对 The bucket POST must contain the specified ‘key’. If it is specified, please check the order of the fields 解释如下:

那么问题就明确了:由于在POST时使用了字典,其中的顺序并不是固定的。当key键排在file键后面时错误便会出现。解决方法也很简单,使用collections.OrderedDict。它是有序字典,可以明确键值对的添加顺序:

import collections

content  = collections.OrderedDict()
content ['key'] = 'file_key'
...
content ['file'] = your_file

这样提交之后键值的顺序便会固定,不再出现上述问题。