摘要:本文在hikey970嵌入式设备上运行图像去雨深度神经网络算法,验证hikey970运行神经网络模型的性能与效果。

一、图像去雨简介
    图像去雨处理指的是对于一张雨中的图片,去除画面中的雨滴,得到还原后的图片,与图片去雾、超分辨率等同属CV领域中图像处理的范畴。去雨作为一种偏向low level的图像处理,本质上是分离图片中的内容与叠加的雨滴模式,并加以去除。这一问题以往多采用字典学习、稀疏编码等方法加以建模。在2017年的CVPR中同时出现了2篇使用deep learning处理去雨问题的文章,本文将对其中的一篇文章“Removing rain from single images via a deep detail network”的demo例子移植到hikey970上运行。
    本文使用的是一种新的基于深度卷积神经网络(CNN)结构的图像去雨算法,用于去除单个图像的雨滴条纹。受深度残差网络(ResNet)的启发,通过改变映射形式简化了学习过程,该算法使用了一个深度细节网络(deep detail network),直接减少从输入到输出的映射范围,使学习过程更容易。为了进一步提高去雨效果,该算法在训练中使用先验的图像域知识,聚焦高频细节,消除背景干扰,并将模型聚焦于图像中的雨结构。

论文:
X. Fu, J. Huang, D. Zeng, Y. Huang, X. Ding and J. Paisley. “Removing Rain from Single Images via a Deep Detail Network”, CVPR, 2017.
http://www.columbia.edu/~jwp2128/Papers/FuHuangetal2017.pdf
代码:https://xueyangfu.github.io/projects/cvpr2017.html

    为什么要将图像去雨深度神经网络算法移植到hikey970嵌入式设备上运行?这是因为图像去雨算法的应用领域主要在监控视频、比赛视频等需要增强画质的场合中,大部分情况下这些场合中不适宜使用高性能计算机、服务器来运行该算法,所使用的图像处理设备必须能够解决计算性能受限、网络带宽不足、功耗要求高等问题,而hikey970作为一款新推出的面向人工智能应用的高性能低功耗嵌入式计算设备,完全可以满足要求,因此我们选择把该算法移植到hikey970上。

二、hikey970运行环境准备
(1)检查依赖库
    在hikey970上使用的是python3.5运行该算法,使用的深度学习框架是tensorflow,需要调用的依赖库如下:

tensorflow
opencv
matplotlib
numpy
re

在执行程序之前,务必安装好以上的库,可参考前面的文章:
hikey970学习-011 hikey970上安装opencv:
https://blog.csdn.net/qqqzmy/article/details/82855377
hikey970学习-009 tensorflow环境的搭建:
https://blog.csdn.net/qqqzmy/article/details/82767635

(2)遇到的import问题解决
    在执行import matplotlib.pyplot as plt可能会遇见问题:

解决方法是安装cairocffi,安装方法如下:

sudo apt-get install python3-cairocffi

参考:https://blog.csdn.net/w5688414/article/details/78901997

(3)代码修改
去掉编译器选择语句,因为我们是在python3中运行的:

#!/usr/bin/env python2

把程序中的配置、调用GPU的语句去掉:

##################### Select GPU device ####################################
#os.environ['CUDA_VISIBLE_DEVICES'] = "0"
############################################################################
#os.environ['CUDA_VISIBLE_DEVICES'] = str(monitoring_gpu.GPU_INDEX)
#############################################################################config = tf.ConfigProto()
#config.gpu_options.per_process_gpu_memory_fraction = 0.5
#config.gpu_options.allow_growth = True修改with tf.Session(config=config) as sess:为with tf.Session() as sess:

在确保了上述的环境和调用库没有问题之后,便可以开始算法的移植与运行了

三、运行程序
(1)下载代码和模型参数文件
    通过tftp把下载下来的代码和模型参数文件传到hikey970上,注意使用binary模式传输,不然调用参数文件会报错
传输命令:

tftp
>tftp get 192.168.0.100:<filename>

具体的传输操作参考:
hikey970学习-010 lebian系统与window系统tftp传文件:
https://blog.csdn.net/qqqzmy/article/details/82845397
(2)终端输入:

python3 testing.py

程序运行过程,会有一些warming,不影响结果,最终会显示出去雨前以及去雨后的效果图

最终的处理出来的结果:


    左边是未处理的原图,右边是处理完后的图片,可以看到雨线基本被去除了,而图像细节部分依旧保留完好。去雨算法在hikey970上移植运行成功。

四、总结
(1)本文中的算法网络是基于ResNet的,网络的层数以及参数量相对于嵌入式计算设备来说还是比较“厚重”的,但是hikey970依旧可以运行起来,给出我们想要的结果;
(2)hikey970可以实现深度学习算法的快速移植与实现,图像去雨算法的代码、模型参数从服务器上移植过来并不需要太多的修改。同时,基于linux系统的hikey970接用其他外部设备非常便利,比如摄像头,用于实现实时现场图像处理,后面会有专门的文章讲解实时摄像设备的使用;
(3)后续工作还可以做许多优化,使用在嵌入式设备上的模型需要部分结构修改使其轻量化、使其适配嵌入式设备计算单元的特点。在嵌入式设备方面可以加入多线程,提高同步处理速度;
(4)目前hikey970刚推出不久,整套开发流程并不完善,存在许多的bug需要去解决,板子上原先安装的库有点偏少,需要自己去加装各种必备的库后才能运行,在依赖库的搭建上花费的功夫特别多。

参考链接:
https://www.leiphone.com/news/201707/ZXZ450ilP3PnyUUx.html
https://xueyangfu.github.io/projects/cvpr2017.html

hikey970学习-012 hikey970上移植图像去雨深度神经网络算法相关推荐

  1. Transformer 杀疯了,图像去雨、人脸幻构、风格迁移、语义分割等通通上分

    前段时间 Transformer 已席卷计算机视觉领域,并获得大量好评,如『基于Swin-Transformer』.『美团提出具有「位置编码」的Transformer,性能优于ViT和DeiT』.『L ...

  2. 深度学习:图像去雨网络实现Pytorch (二)一个简单实用的基准模型(PreNet)实现

    本文参考文献:Progressive Image Deraining Networks: A Better and Simpler Baseline Dongwei Ren1, Wangmeng Zu ...

  3. [图像去雨]--Arixv-Gradual Network for Single Image De-raining

    摘要: 在单幅图像去雨方面的大多数进展都遇到了一个关键的挑战,即在保留图像细节的同时去除不同尺度和形状的雨条纹.现有的单幅图像消雨方法将消雨条纹直接视为像素级回归过程.然而,他们在过度降雨(如去除无雨 ...

  4. 图像去雨算法(基于卷积网络)

    图像去雨算法文章: https://pdfs.semanticscholar.org/bf10/3b3ea90f0d032d1d73dbb83ae41731ee006f.pdf 相应的代码和论文 ht ...

  5. 图像去雾/图像去雨(matlab/python)

    看到许多小伙伴想进行图像去雨,图像去雾的任务,由于以前进行了此类项目,所以在此书写博客进行交流. 代码获取 去雨前言 从静止图像中去除雨水是一项复杂且具有挑战性的任务.雨滴仅影响图像的很小区域,因此导 ...

  6. 【论文分享】联合形态学滤波和卷积稀疏编码的图像去雨

    [论文分享]联合形态学滤波和卷积稀疏编码的图像去雨

  7. 【深度学习】如何更好的Fit一个深度神经网络框架下的模型

    [深度学习]如何更好的Fit一个深度神经网络框架下的模型 文章目录 1 随机梯度下降1.1 什么是梯度下降1.2 随机梯度算法 2 Momentum 3 自适应学习率算法3.1 AdaGrad3.2 ...

  8. UCL-Dehaze: Towards Real-world Image Dehazing via Unsupervised Contrastive Learning 基于对比学习的无监督真实图像去雾

    概述 本文提出了一种有效的无监督对比学习范式 --ucl-dehaze.未配对的真实世界清晰图像和模糊图像很容易获取,在训练UCL-Dehaze网络时分别作为 重要的正样本和负样本.为了更有效地训练网 ...

  9. 图像去雨:超详细手把手写 pytorch 实现代码(带注释)

    引导 数据集准备 训练数据集代码 测试数据集代码 网络模型代码 训练代码 测试代码 参考文献 其他 数据集准备 使用来自第一个参考文献的公开数据集Rain12600和Rain1400,下载链接.其中训 ...

最新文章

  1. phpstudy+phpstorm+debug
  2. 任务感知单目深度估计的3D目标检测
  3. 5.spring boot使用FastJson解析JSON数据
  4. WinCE/Mobile上下滑动浏览DataGrid数据 【转】
  5. 本地yum源简单配置
  6. YII2 实现登录时候修改最新登录时间
  7. 年度总结——文字留住岁月,情感点缀年华
  8. 中国房地产市值已经超过450万亿,为何还不见房价下跌?
  9. 看了这几幅图,感觉自己物理白学了!
  10. html引用单文件组件,vue之单文件组件 纯网页方式引入
  11. 生活大爆炸版石头剪刀布(洛谷-P1328)
  12. 【Spark】Spark应用执行机制
  13. adguard没有核心 core no_新媒体自学宝典(No.24)| 如何借力自媒体平台放大粉丝流量?...
  14. k8s核心技术-Ingress(概述)---K8S_Google工作笔记0041
  15. 服务器系统是指什么,服务器操作系统指的是什么
  16. CentOS配置国内(阿里云)镜像加速器
  17. android qq毛玻璃,如何快速做出毛玻璃背景?有了这个网格渐变神器,1分钟搞定...
  18. oracle多表关联查询技巧,Oracle SQL 多表关联查询
  19. qq发送信息给对方一定经过服务器,QQ如何把你消息传递给好友的?(上篇)
  20. python test suite什么意思_如何:在python中设置testsuite

热门文章

  1. 在IE浏览器中启用Java Applet扩展
  2. 区块链的应用为什么这么难?出路在哪?
  3. JS基础-特效篇(事件对象)03-放大镜
  4. 手把手教你学-卡尔曼滤波(附代码)
  5. ITIL知识管理分析及如何实施
  6. php latin1 转utf8,PHP-将UTF8转换为latin1_swedish_ci
  7. Android 自定义view 的onFinishInflate方法的用法
  8. 企业云成本优化:减少企业云支出的终极指南
  9. 游戏中的数学之角与弧度、三角函数
  10. Mac简单的上手指南