【华为云-上云之路】“素描”变“油画”——AI黑白图像自动上色,看看AI的审美
2020/5/3 17:55
正好手上有HiLens,这强大的性能不能浪费呀,在HiLens实现了一个对黑白图像自动上色的小项目,勉强算能跑通,期间遇到一些难题,最终效果还行,还有很大不足,和大家分享一下。
先来看看最终效果:
总体来说,效果还可以,对于原图中森林、河流和山脉比较准确地赋予了正确的颜色,整体感觉比较和谐,由于有些模糊,有一种“油画”的感觉哦。模型参考自GitHub上的colorization项目,链接为https://github.com/richzhang/colorization/blob/master/colorization/models/colorization_deploy_v2.prototxt,还有隔壁的Atlas 200 DK的案例(其实Atlas 200 DK和HiLens比较像,都是Ascend 310为推理核心的产品,但Atlas 200 DK使用的时Ubutun系统,而 HiLens用的是华为做剪裁后的系统,删除了很多东西,常用编译工具gcc之类的都没有,感觉不太好,装好多东西都不支持,好像涉及到编译的都很难成功)。这里使用的是Caffe模型,因为Ascend 310目前的模型转化只支持TensorFlow和Caffe,且对Caffe支持的比较好。模型输入为(1,1,224,224)。
整体分析:
一般来说,最难的部分是模型转化,在PC端成功运行,且效果良好的模型如何转为在HiLens能达到同样或者近似效果的.om模型,这个没办法,如果能顺利转换最好,如果不行的话,要具体分析了,一般来讲是算子不支持,这可能要更换算子,但更换算子可能会导致模型精度下降,即使转换成功,也可能出现推理结果差异较大,这可能要逐层分析,看看哪里出的问题,这个Caffe模型是能转化成功的,因为基本Caffe原生的算子都支持(PS:Caffe这个框架有点老了,现在有的人比较少,最好用TensorFlow,听说官方后续会支持PyTorch, 这可是福音呀,我还是喜欢PyTorch,期待程序员哥哥、姐姐加油呀,快快推出,要不多支持点TensorFlow算子也行,TensorFlow都出到2.1版本了啊)。
模型转化成功,剩下的就简单了,基本就是读取图像,做预处理,输入模型,得到推理结果并解析,做输出,这里我是通过摄像头获取图像,最后将结果推送到显示器(通过HDMI连接)。这里基本没什么大坑,需要注意要将输入图像展平(类型为list),送入模型(否则报输入数据不匹配的错误,因为好像不能直接输入图像,需要自己做成向量)。最后是结果可视化的问题,我本来想将处理后的最终图片保存到本地或者OBS桶中,这样质量应该好一些(上面的处理后图片有些模糊,可能跟我用手机拍摄有关,因为无法保存图片,就只能拍显示器展示的图片了,还有就是输入是通过摄像头采集到的我的手机展示的图片,因为使用读取本地图片失败,使用cv2.imread读取好像不太行,最终是有图片,但无法显示在显示器上,我又复制到本地失败,scp命令现在还没成功,希望有成功的大佬指 一下)。经过保存到HiLens上,但无法复制到电脑上,也无法显示在显示器上等等,最终只能使用用摄像头获取我手机显示的图片,输出也只能用手机拍摄显示器图片,这样输入和输出的质量都比较差,最终效果也不太好。
最后
总算完成Demo, 最终还行,勉强实现。后续还有很大改进空间,有时间再改改,暂定加入to do list。感觉HiLens的开发部署还是挺方便的,很多都可以在云端完成,对本地条件要求很低,而且接口丰富,自带摄像头,可支持Micro SD、HDMI输出、USB接口,好像也可以做音频输出,感觉就像一台微缩版本的笔记本电脑,可以方便做很多是,而且有和OpenCV类似的简单地调用接口,还增加了opencv原生未提供RGB/BGR到NV12/NV21的转换图片颜色格式,很大程度上减轻了工作,专注模型就行了。
建议
使用中遇到一些问题,希望能用工程师查看一下。
安装Python第三方库失败。可能是因为涉及到编译,所以我安装的库都失败了,比如scipy, filterpy等等。曾按照论坛教程想安装写常用编译工具,编译dlib,但按照教程,安装python-devel总失败,有冲突,期待官方后续能推出支持编译工具的系统,或者直接用ubutun也可以考虑吧。
中文支持不太友好,我感觉SSH登陆后中文都是乱码,虽说没什么大影响,但也不太好看,Ubuntu都支持中文,Python3都支持中文变量名,使用经过改进剪裁的系统也不能落下,毕竟是母语呀,中文也挺好。
SCP传输问题。在电脑和HiLens间传输文件好难呀(也可能我菜,不太会用),想用PyCharm远程登录方式,显示不能浏览,这就尴尬了,要知道隔壁Atlas 200 DK可是支持的,在电脑和板子之间复制文件很方便,直接复制粘贴,期待也支持(可能现在也支持,能分享一下方法吗?)。
cv2.waitKey()不支持。系统上的OpenCV是不完整的,好多不支持,能不能考虑下推出能支持完整OpenCV的系统,我看论坛也有人在安装OpenCV遇到很多问题,这可能需要支持 编译工具,毕竟OpenCV比较常用,也比较强大和好用。
HiLens管理控制台的线上编辑器(编辑index.py那个)是不是有点问题,看上去格式应该没问题,但执行报错,应该是缩进或空格不对,直接复制在电脑上的.py文件内容过去就没问题,期待能查看改进一下。
暂时就想到这些,有机会再来补充。这个小例子还有很多不足,目前发布在了ModelArts的AI市场中,链接为https://console.huaweicloud.com/modelarts/?region=cn-north-4#/aiMarket/aiMarketModelDetail/overview?modelId=5ab35aaa-15bc-4fa2-8f0e-2c5029f1ee09&type=hilens 对了,技能在固件版本1.0.7下测试时没问题的。
最后,祝大家五一劳动节快乐。
- 点赞
- 收藏
- 关注作者
评论(0)