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


      版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址
    
      http://www.cnblogs.com/Colin-Cai/p/10631150.html 
    
      作者:窗户
    
      QQ/微信:6679072
    
      E-mail:6679072@qq.com

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

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

      场景

      

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

      

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

      算法传递

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

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

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

      图像算法

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

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

      压缩

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

      结束

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

  • 相关阅读:
    并发编程-阻塞队列&JUC常用工具
    并发编程-Condition源码分析&基于Condition实现阻塞队列
    并发编程-ReentrantLock锁源码分析&Condition设计
    并发编程-JMM&ReentrantLock锁以及原理
    数据库操作支持函数
    python内置进制转换函数
    三目运算符
    数据库常见操作
    宏使用汇总
    sort: invalid comparator
  • 原文地址:https://www.cnblogs.com/Colin-Cai/p/10631150.html
Copyright © 2020-2023  润新知