版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址

  http://www.cnblogs.com/Colin-Cai/p/10631150.html 

  作者:窗户

  QQ/微信:6679072

  E-mail:6679072@qq.com

  随着深度学习的发展,图像、声音的识别几乎都是它的天下。但深度学习需要很大的空间来存储参数,而且推理的时间与所使用的硬件关系很大,于是对于成本是有很大的要求的,对于很多项目未必值得这么做。

  虽说现在是AI时代,但是对于图像处理,那些传统的图像处理技术依然有很大的用处。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

  场景

  

  以下这样的场景可能用于一些诸如仪表的采集改造。

 一个图像项目的可能性处理方式 随笔

  

  探测节点可能是在原有的老式机械设备上加图像检测设备,为了成本考虑,使用慢速的通信,而仪表种类太多,算法并不统一。

 

  算法传递

 

  我们假设通信网络的传输速度很慢,杜绝了图片上传的可能性。而又因为仪表种类可能较多,算法不统一,我们在部署之前可能无法把所有的仪表处理算法步数到探测节点上。

  可以借用大数据框架Spark的手法,Spark计算中尽量不传递数据而更多情况只传递算法。此处也可以这样借用,当探测节点拍到照片时,计算照片的一些特征,这当然要比照片小的多,然后将特征传递给服务器,服务器再将图片处理算法发送回来。这种算法询问可能很少发生,因为拍摄的仪表基本上不会换。

  于是服务器端应该有个对于图像特征的分类器,我们可以基于颜色、灰度的统计,这个即使用KNN这样的手法其结果都是很不错的,计算量也并不大。

 

  图像算法

 

  传统的图像算法基本都是基于数字信号处理的理论,当然也有其他方面,比如时域上的连通图,霍夫变换(Hough Transform)等。然后无论如何,这些单个的图像处理都很容易设计成数据->数据的纯函数形式。特别的,图像算法中,卷积就是一大类,很多情况都可以用卷积做出来,此处甚至可以柯里化(Curring),将卷积和卷积核分离出来。于是,我们可以在无副作用的情况下进行传统图像处理计算,那么当然,我们可以光明正大的引进函数式编程(Functional Programming)。实际上,传统图像算法是非常适合函数式编程的。函数式编程对于分布式有诸多好处,Spark也是采用Scala来作函数式编程。

  不要小看函数式编程,对于图像处理来说,一样可以分支处理而没有压力,并且表达比过程式要简洁许多。

 

  压缩

 

  压缩是在于硬件无论从处理还是通信上都是小尺寸的,其实引入函数式编程就是为了压缩。我们可以把基本的一些图像算法实现在探测硬件上,然后给各个算法编号,乃至最终将函数式编程的算法压缩到二进制。压缩到二进制不仅仅缩小了通信传递算法的尺寸,在压缩掉冗余的同时也简化了探测节点端的处理程序。

 

  结束

 

  以上给出了一些特殊场合的应用解决可能,我总觉得呢,技术不是死的,任何技术也不是万能的,技术淘汰也只是相对于当前的大多应用场合下,任何技术都可能在特定场合下焕发生机。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄