图像处理用什么编程语言

2019-03-21 11:38:57 duozhishidai 阅读数 3780

图像识别是大多数现代设备和程序中部署的主要功能之一。该功能具有广泛的应用程序,最常见的是安全系统。它可以使设备通过图像来识别人员或物体的身份。而面部识别是图像识别的产物。

那么,创建具有图像识别功能的应用程序或软件需要些什么?你只需要使用编程语言对其进行编程。当然,有些语言可以完成这项工作。这是用于图像识别的最佳编程语言。

1.Matlab

Matlab是一种独立的编程语言,它有自己的框架和集成开发环境(IDE),具有更强大的工作空间。该编程语言提供了广泛的工具,你可以使用它们轻松处理更多技术编程任务。图像识别和面部处理是Matlab可以处理的一些任务。

Matlab提供了一系列用于矩阵计算的内置工具。必须注意的是,图像识别和矩阵计算是齐头并进的。Matlab中可用的一些工具可以执行复杂的图像处理任务,例如裁剪、旋转、掩蔽等。

还有一个专用的Matlab代码,用于调用和实现面部识别功能。这个代码使用AT&T数据库。因此,你应该在使用这个代码之前下载AT&T数据库。最先进的人脸识别应用程序是用Matlab编写的。

2.Python

目前,Python被认为一种目前最流行的编程语言。其简单性和多功能性是许多程序员喜欢使用它的一些原因。尽管很简单,但Python是一种可以依赖于执行复杂任务的语言。它可用于创建图像处理和识别功能。

Python的普及使其资源非常丰富。它包含几个功能所需的库,其中包括图像识别。最强大和最有效的库之一是Scikit-Learn机器学习库。除了图像识别,这些库还可用于更智能的功能,如人脸识别和运动检测。

3.C/C++/C#

在C系列编程语言方面,你永远不会出错。它们功能强大,可以做任何事情,包括创建图像处理和识别功能。C系列编程语言提供了两种创建图像处理功能的选项。你可以选择从头开始对所有代码进行编码,从而手动编写代码。第二种选择是使用专为这些编程语言设计的现有库。这些库包括OpenGL、EmguCV、OpenCV等等。它们具有用于图像识别的智能图像处理功能。

4.Java

像C和C++一样,永远不要低估Java编程语言的强大功能。这种语言足以执行复杂的功能。它可用于创建图像处理和图像识别的应用程序。

作为独立的编程语言,你可以从头开始创建图像处理功能。这种方法的优点是你可以完全控制功能。或者将强大的库可以合并到Java中,以创建图像识别功能。OpenCV只是与Java兼容的库之一。程序员可以选择适合自己的方法。

5.OpenCV工具

开源计算机视觉(OpenCV)是一种用于实时处理的高级工具。它也是一种跨平台工具,因此可以集成到任何编程语言中,以执行图像处理和识别功能。它可以与C、C++、Java、Python和Android编程语言集成。

OpenCV提供无专利算法,你可以在没有任何法律限制的情况下使用。它可用于商业和学术目的。它有一个专门的脸部识别器类,你可以用它来试验图像识别功能的能力,没有任何麻烦。该课程附有一个信息丰富的文档,将向你展示如何实现图像识别功能。总体而言,无论使用何种编程语言,OpenCV都是图像识别的首选工具。

你还可以使用其他几种编程语言来开发图像识别功能。在开始使用任何语言之前,请学习如何处理矩阵,因为它是图像识别编程的构建块。
  人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
图像识别经历了哪几个阶段,主要应用在哪些领域?
http://www.duozhishidai.com/article-6461-1.html
图像识别是什么,卷积神经网络如何进行图像识别的?
http://www.duozhishidai.com/article-1957-1.html
图像识别技术是什么,应用于智能家居哪些领域
http://www.duozhishidai.com/article-133-1.html


多智时代-人工智能大数据学习入门网站|人工智能、大数据、物联网云计算的学习交流网站

多智时代-人工智能大数据学习入门网站|人工智能、大数据、云计算、物联网的学习服务的好平台
2016-12-14 16:14:40 u010098331 阅读数 1938
在众多行业中,程序员属于高薪职业。无论是在国外还是国内,程序员的薪金水平普遍高于其他行业的工作岗位。
搜集了一天全国各公司发布在拉钩网的招聘数据,共9W多条,分析各大编程语言热度和吸金程度。
从图表中可以看出目前位置java 还是最热的编程语言 有1.7W个岗位需要java语言,全国的各大公司招收最多的,其次是php编程语言。在中国招收Android的还是高于IOS编程。
那么哪种编程语言可以赚到更多的钱那?因为在中国每个省市的工资相差较大,首先咱先用北京的数据来分析。
PS:下面的计算不分编程语言的初中高级,统一计算。
可以看出在北京大数据方面平均的月工资最高,热度最高的java 排名第7,IOS比安卓的工资略高,外来的和尚好念经啊。
相同的职位在不同的行业工资可能不同,所以想要赚更多钱,必须要找对行业。下面先来看看现在哪些行业招聘岗位是最多的

从图表中可以看出 互联网还是现在公司的主流的行业,而金融、电子商务和游戏等行业是上个阶段的火爆行业,现在基本也发展成了成熟的公司,所以招人还是比较稳定,下面在来看看全国每个行业的月均工资。

中国现在的数据时代可能还处在热度的阶段 ,所以各行业招收数据服务的工资还是较高的。
那么在来看下北京的java在各行业的工资多少。

当然每一个程序猿不可能只懂一门语言,那样程序猿不配叫做程序猿,而且公司在招聘程序猿的时候在任职要求中都会附带需要会这会那的。下面我们来看看公司在招聘一些热门职业的时候都会有什么要求
首先我们先来看看Java的任职要求都有哪些是公司提出最多的:

从文字云上可以看出基础的SSH框架还是最基本的要求, js、css和jquery等前台技术也是必备的。所以无论是准备学java或找java工作的同学们,数据库还是oracle和mysql。这些基本的java知识一定要具备才能去面试啊。

我们在看看数据挖掘的岗位需要具备一些什么样的技能?

在这个鸭子中可以看出想入职数据挖掘工作,需要掌握自然语言处理和脚本语言,编程语言需要掌握python和R。数据库大部分要求的是nosql或mysql。在处理海量数据中还需要掌握hadoop方面的知识。这些都是一些数据挖掘的基础技能。
想从事这方面工作的同学必须掌握。

当然我们可以看出无论是java 还是数据挖掘的工作,任职要求对项目经验的需求都是很高的,所以无论是在学校还是应届生毕业的第一年一定要具备一定的项目经验才能对以后发展更有帮助。
在北上广深软件方面的工作的就业面是很广,工资待遇也很高。但是很多同学还是想要逃离北上广深,其他城市的软件方面的就业面可能就没有北上广深广了,可能还有找不到工作的情况。
所以我们就简单的分析下其他城市的软件方面的工作情况


所以逃离北上广深的同学可以考虑去杭州、成都等城市,尤其是杭州也是个比较适合居住的环境。

PS:现在杭州的房屋均价为2W多点,也算是较高了。

参考:

https://www.zhihu.com/question/48946771?from=profile_question_card

2018-04-10 21:23:55 ShareUs 阅读数 1586

-- 图形学工程师
1.渲染执行流程;
2.Shader 编程技巧;
3.材质渲染案例;
4.后处理渲染案例;
5.Shader 编程优化案例;

-- 图形学编程- https://blog.csdn.net/jxw167/article/category/6624969

如何快速成长为图形学工程师- https://blog.csdn.net/GitChat/article/details/79102568 
OpenGL核心技术- https://blog.csdn.net/column/details/14637.html
Google Android多媒体和图形图像- https://github.com/google/grafika
学openGL必知道的图形学知识- http://blog.csdn.net/king1425/article/details/71425556

图形算法中的矩阵和矢量。编写OpenGL图形算法的语言GLSL。

android图像处理的知识,主要是Bitmap,Canvas,Shader,Matric,ColorFilter和Xfermode的使用。

-- 图形渲染库,GPU 编程(Shader 编程)

  图形渲染库有 DX(DirectX)、OpenGL、OpenGLES、WebGL。
  实现渲染技术就需要对 GPU 编程,也就是我们通常说的 Shader 编程。
  Shader 编程其实就是对图像进行编程,常见的图像格式有:jpg、png、tga、tga、bmp 等.
  作为图形学开发者首要的事情是搞清楚它们的存储格式,每种图像格式它包括很多信息,当然主要还是颜色的存储:rgb 或者说 rgba,另外图像的存储是按照矩阵的方式.
  对 GPU 编程核心就是对图像的处理,只有掌握了它们,我们才可以根据策划的需求或者是美术的需求做出各种渲染效果,比如在材质中剔除黑色,进行反射,折射,以及高光、法线等的渲染。
  即使是后处理渲染又称为滤镜的渲染也是对图片像素的处理,与材质渲染不同的是它是对整个场景的渲染,因为游戏运行也是通过一帧一帧渲染的图片播放的,后处理就是对这些图片进行再渲染。
  从固定流水线讲起,作为图形学开发是必须要掌握的,因为固定流水线是图形学渲染的基础,它们的核心是各个空间之间的矩阵变换。固定流水线是 3D 游戏引擎开发的最基本的底层核心。
  通俗的讲,固定流水线的原理就是将 3D 图形转换成屏幕上的 2D 图像显示的过程,在此过程中都是通过 CPU 处理的,以前那些比较老的 3D 游戏都是按照这个原理制作的。
  可编程流水线主要是针对 GPU 编程的,换句话说就是将固定流水线的矩阵变换放到 GPU 中进行计算,这样可以彻底解放 CPU 用于处理其他事情,提升效率。

> GPU 编程语言目前有 3 种主流语言:
1.基于 OpenGL 的 GLSL(OpenGLShading Language,也称为 GLslang)
2.基于 Direct3D 的 HLSL(High Level ShadingLanguage)语言,
3.NVIDIA 公司的 Cg (C for Graphic)语言。

   GPU 比较擅长做的就是关于矩阵的运算。GPU 不仅能用于渲染材质,而且还能渲染场景也就是我们说的后处理,又称为滤镜。
   Shader 的核心用法就是材质渲染,材质渲染无非涉及到材质高光,法线这些点,还有反射,折射,卡通渲染,描边等等,以及 Unity 高版本实现的 PBR 物理效果。 Shader 渲染都是基于图像的处理方式,不论是材质渲染还是后处理渲染.
   现在比较流行的 H5 游戏,它使用的渲染库是 WebGL,WebGL 提供了相应的接口,用于加载已有的 Shader,当然 OpenGL,DX 都提供了相应的接口。像 Bloom(全屏泛光)这些后处理渲染效果,在游戏场景中是必备的渲染,它们的实现方式都是在 GPU 中实现的。
Shader Forge教程一:http://blog.csdn.net/jxw167/article/details/69267236
Shader Forge教程二:http://blog.csdn.net/jxw167/article/details/69257559

mpeg的帧头和格式。帧头的帧同步。ijkplayer是基于ffplay改造的。
- 图像性能 openGL?GPUImage(OpenGL ES)的性能优化、爬坑与架构改善
GPU OpenGL ES 应用性能优化- https://blog.csdn.net/dongtinghong/article/details/80081404
OpenGL ES优化的主要工作是在图形管道中找到影响性能的bottleneck,其bottleneck一般表现在以下几方面:
1.在应用程序代码中,如冲突检测
2.GPU与主内存间的数据传输
3.在VP(Vertex Processor)中的顶点处理
4.在FP(Fragment Processor)中的片断处理

  无论OpenGL ES、Metal还是Vulkan,优化都是两块:CPU和GPU。目标是减少CPU调用、降低I/O以及简化Shader代码中的复杂逻辑。
  GPUImage的实现里没使用VBO,当多个Filter叠加时,每个Filter绘制都需要上传坐标数据会带来额外的消耗。对GPUImage进行二次开发,在GPUImageFilter中创建VAO及VBO,对于某一Filter需要旋转图像,可在其自己的着色器中使用旋转矩阵达到目的。
  Shader优化:

Shader代码实现了我们的算法,想要大幅降低Shader的耗时,降低图像质量实现减少计算量是最有效的办法。在尽量可能保证质量的基础上进行优化,一般有这些办法:
(1)避免在Shader中使用循环或分支判断语句
(2)避免依赖纹理读取。即,避免在Fragment Shader计算纹理坐标,将计算提前到Vertex Shader,减少计算次数。
(3)避免交换纹理坐标分量。这会造成依赖纹理读取。
(4)避免在Fragment Shader做pow等数据计算。同样的,尽可能将计算提前到Vertex Shader,减少计算次数
(5)使用更少的颜色分量参与计算。选择影响结果的主要颜色分量参与计算,这也是减少计算量的有效方法。
(6)降低数据精度。比如,从Vertex Shader传递到Fragment Shader的纹理坐标精度从highp改成mediump也会降低一些消耗。
  如今,计算机拥有用来专门做图像处理显示的GPU模块,拥有独立的图像处理储存(显存)。

- 3D图像渲染管道包括以下几个主要步骤:
 1,顶点处理:对模型的各个顶点进行计算(着色)以及坐标变换
 2,光栅化:将每个图元转换为一系列的碎片。我们可以认为一个碎片就是三维空间中的一个像素,同样具有位置,颜色,法线和纹理属性。
 3,碎片处理:光栅化之后,我们得到一些列的碎片,这个阶段则是对碎片进行处理(着色)
 4,合并输出:将所有的碎片(3D概念中)转化成二维的颜色像素,最后输出显示到屏幕上

注:如果读者对矩阵变换不理解可以查看《线性代数》和《3D 数学基础:图形与游戏开发》

2018-11-09 11:31:37 cjea42103 阅读数 727

图像识别是大多数现代设备和程序中部署的主要功能之一。该功能具有广泛的应用程序,最常见的是安全系统。它可以使设备通过图像来识别人员或物体的身份。而面部识别是图像识别的产物。

用于图像识别的五大最佳编程语言!


那么,创建具有图像识别功能的应用程序或软件需要些什么?你只需要使用编程语言对其进行编程。当然,有些语言可以完成这项工作。这是用于图像识别的最佳编程语言。

用于图像识别的最佳编程语言

1. Matlab

用于图像识别的五大最佳编程语言!


Matlab是一种独立的编程语言,它有自己的框架和集成开发环境(IDE),具有更强大的工作空间。该编程语言提供了广泛的工具,你可以使用它们轻松处理更多技术编程任务。图像识别和面部处理是Matlab可以处理的一些任务。

Matlab提供了一系列用于矩阵计算的内置工具。必须注意的是,图像识别和矩阵计算是齐头并进的。Matlab中可用的一些工具可以执行复杂的图像处理任务,例如裁剪、旋转、掩蔽等。

还有一个专用的Matlab代码,用于调用和实现面部识别功能。这个代码使用AT&T数据库。因此,你应该在使用这个代码之前下载AT&T数据库。最先进的人脸识别应用程序是用Matlab编写的。

2.Python

用于图像识别的五大最佳编程语言!


目前,Python被认为一种目前最流行的编程语言。其简单性和多功能性是许多程序员喜欢使用它的一些原因。尽管很简单,但Python是一种可以依赖于执行复杂任务的语言。它可用于创建图像处理和识别功能。

Python的普及使其资源非常丰富。它包含几个功能所需的库,其中包括图像识别。最强大和最有效的库之一是Scikit-Learn机器学习库。除了图像识别,这些库还可用于更智能的功能,如人脸识别和运动检测。

3. C / C ++ / C#

用于图像识别的五大最佳编程语言!


在C系列编程语言方面,你永远不会出错。它们功能强大,可以做任何事情,包括创建图像处理和识别功能。C系列编程语言提供了两种创建图像处理功能的选项。你可以选择从头开始对所有代码进行编码,从而手动编写代码。第二种选择是使用专为这些编程语言设计的现有库。这些库包括OpenGL、EmguCV、OpenCV等等。它们具有用于图像识别的智能图像处理功能。

4. Java

用于图像识别的五大最佳编程语言!


像C和C ++一样,永远不要低估Java编程语言的强大功能。这种语言足以执行复杂的功能。它可用于创建图像处理和图像识别的应用程序。

作为独立的编程语言,你可以从头开始创建图像处理功能。这种方法的优点是你可以完全控制功能。或者将强大的库可以合并到Java中,以创建图像识别功能。OpenCV只是与Java兼容的库之一。程序员可以选择适合自己的方法。

5. OpenCV工具

用于图像识别的五大最佳编程语言!


开源计算机视觉(OpenCV)是一种用于实时处理的高级工具。它也是一种跨平台工具,因此可以集成到任何编程语言中,以执行图像处理和识别功能。它可以与C、C ++、Java、Python和Android编程语言集成。

OpenCV提供无专利算法,你可以在没有任何法律限制的情况下使用。它可用于商业和学术目的。它有一个专门的脸部识别器类,你可以用它来试验图像识别功能的能力,没有任何麻烦。该课程附有一个信息丰富的文档,将向你展示如何实现图像识别功能。总体而言,无论使用何种编程语言,OpenCV都是图像识别的首选工具。

你还可以使用其他几种编程语言来开发图像识别功能。在开始使用任何语言之前,请学习如何处理矩阵,因为它是图像识别编程的构建块。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31545819/viewspace-2219353/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31545819/viewspace-2219353/

2016-08-19 01:00:56 u010098331 阅读数 38659

你有一个大数据项目,你知道问题领域(problem domain),也知道使用什么基础设施,甚至可能已决定使用哪种框架来处理所有这些数据,但是有一个决定迟迟未能做出:我该选择哪种语言?(或者可能更有针对性的问题是,我该迫使我的所有开发人员和数据科学家非要用哪种语言?)这个问题不会推迟太久,迟早要定夺。

  当然,没有什么阻止得了你使用其他机制(比如XSLT转换)来处理大数据工作。但通常来说,如今大数据方面有三种语言可以选择:R、Python和Scala,外加一直以来屹立于企业界的Java。那么,你该选择哪种语言?为何要选择它,或者说何时选择它?

  下面简要介绍了每种语言,帮助你做出合理的决定。

  R

  R经常被称为是“统计人员为统计人员开发的一种语言”。如果你需要深奥的统计模型用于计算,可能会在CRAN上找到它――你知道,CRAN叫综合R档案网络(Comprehensive R Archive Network)并非无缘无故。说到用于分析和标绘,没有什么比得过ggplot2。而如果你想利用比你机器提供的功能还强大的功能,那可以使用SparkR绑定,在R上运行Spark。

  然而,如果你不是数据科学家,之前也没有用过Matlab、SAS或OCTAVE,可能需要一番调整,才能使用R来高效地处理。虽然R很适合分析数据,但是就一般用途而言不太擅长。你可以用R构建模型,但是你需要考虑将模型转换成Scala或Python,才能用于生产环境,你不太可能使用这种语言编写一种集群控制系统(运气好的话,你可以对它进行调试)。

  Python

  如果你的数据科学家不使用R,他们可能就会彻底了解Python。十多年来,Python在学术界当中一直很流行,尤其是在自然语言处理(NLP)等领域。因而,如果你有一个需要NLP处理的项目,就会面临数量多得让人眼花缭乱的选择,包括经典的NTLK、使用GenSim的主题建模,或者超快、准确的spaCy。同样,说到神经网络,Python同样游刃有余,有Theano和Tensorflow;随后还有面向机器学习的scikit-learn,以及面向数据分析的NumPy和Pandas。

  还有Juypter/iPython――这种基于Web的笔记本服务器框架让你可以使用一种可共享的日志格式,将代码、图形以及几乎任何对象混合起来。这一直是Python的杀手级功能之一,不过这年头,这个概念证明大有用途,以至于出现在了奉行读取-读取-输出-循环(REPL)概念的几乎所有语言上,包括Scala和R。

  Python往往在大数据处理框架中得到支持,但与此同时,它往往又不是“一等公民”。比如说,Spark中的新功能几乎总是出现在Scala/Java绑定的首位,可能需要用PySpark编写面向那些更新版的几个次要版本(对Spark Streaming/MLLib方面的开发工具而言尤为如此)。

  与R相反,Python是一种传统的面向对象语言,所以大多数开发人员用起来会相当得心应手,而初次接触R或Scala会让人心生畏惧。一个小问题就是你的代码中需要留出正确的空白处。这将人员分成两大阵营,一派觉得“这非常有助于确保可读性”,另一派则认为,2016年,我们应该不需要就因为一行代码有个字符不在适当的位置,就要迫使解释器让程序运行起来。

  Scala

  现在说说Scala:在本文介绍的四种语言中,Scala是最轻松的语言,因为大家都欣赏其类型系统。Scala在JVM上运行,基本上成功地结合了函数范式和面向对象范式,目前它在金融界和需要处理海量数据的公司企业中取得了巨大进展,常常采用一种大规模分布式方式来处理(比如Twitter和LinkedIn)。它还是驱动Spark和Kafka的一种语言。

  由于Scala在JVM里面运行,它可以立即随意访问Java生态系统,不过它也有一系列广泛的“原生”库,用于处理大规模数据(尤其是Twitter的Algebird和Summingbird)。它还包括一个使用非常方便的REPL,用于交互式开发和分析,就像使用Python和R那样。

  我个人非常喜欢Scala,因为它包括许多实用的编程功能,比如模式匹配,而且被认为比标准的Java简洁得多。然而,用Scala来开发不止一种方法,这种语言将此作为一项特色来宣传。这是好事!不过考虑到它拥有图灵完备(Turing-complete)的类型系统和各种弯弯曲曲的运算符(“/:”代表foldLeft,“:\”代表foldRight),很容易打开Scala文件,以为你看到的是某段讨厌的Perl代码。这就需要在编写Scala时遵循一套好的实践和准则(Databricks的就很合理)。

  另一个缺点是,Scala编译器运行起来有点慢,以至于让人想起以前“编译!”的日子。不过,它有REPL、支持大数据,还有采用Jupyter和Zeppelin这一形式的基于Web的笔记本框架,所以我觉得它的许多小问题还是情有可原。

  Java

  最终,总是少不了Java――这种语言没人爱,被遗弃,归一家只有通过起诉谷歌才有钱可赚时才似乎关心它的公司(注:Oracle)所有,完全不时髦。只有企业界的无人机才使用Java!不过,Java可能很适合你的大数据项目。想一想Hadoop MapReduce,它用Java编写。HDFS呢?也用Java来编写。连Storm、Kafka和Spark都可以在JVM上运行(使用Clojure和Scala),这意味着Java是这些项目中的“一等公民”。另外还有像Google Cloud Dataflow(现在是Apache Beam)这些新技术,直到最近它们还只支持Java。

  Java也许不是摇滚明星般备受喜爱的首选语言。但是由于研发人员在竭力理清Node.js应用程序中的一套回调,使用Java让你可以访问一个庞大的生态系统(包括分析器、调试器、监控工具以及确保企业安全和互操作性的库),以及除此之外的更多内容,大多数内容在过去二十年已久经考验(很遗憾,Java今年迎来21岁,我们都老矣)。

  炮轰Java的一个主要理由是,非常繁琐冗长,而且缺少交互式开发所需的REPL(R、Python和Scala都有)。我见过10行基于Scala的Spark代码迅速变成用Java编写的变态的200行代码,还有庞大的类型语句,它们占据了屏幕的大部分空间。然而,Java 8中新的Lambda支持功能对于改善这种情况大有帮助。Java从来不会像Scala那么紧凑,但是Java 8确确实实使得用Java进行开发不那么痛苦。

  至于REPL?好吧,目前还没有。明年推出的Java 9会包括JShell,有望满足你的所有REPL要求。

  哪种语言胜出?

  你该使用哪种语言用于大数据项目?恐怕这还得“视情况而定”。如果你对晦涩的统计运算进行繁重的数据分析工作,那么你不青睐R才怪。如果你跨GPU进行NLP或密集的神经网络处理,那么Python是很好的选择。如果想要一种加固的、面向生产环境的数据流解决方案,又拥有所有重要的操作工具,Java或Scala绝对是出色的选择。

  当然,不一定非此即彼。比如说,如果使用Spark,你可以借助静态数据,使用R或Python来训练模型和机器学习管道(pipeline),然后对该管道进行序列化处理,倒出到存储系统,那里它可以供你的生产Scala Spark Streaming应用程序使用。虽然你不应该过分迷恋某一种语言(不然你的团队很快会产生语言疲劳),使用一套发挥各自所长的异构语言也许会给大数据项目带来成效。

 

揭开大数据生态圈背后的真相,切实了解开发者对大数据平台的需求,用真实数据分析大数据行业发展趋势及产品方向。近日,在2014中国大数据技术大会召开前夕,CSDN特推出针对大数据初创企业的全国大数据创新项目评选和针对大数据从业者的 2014中国大数据有奖调查 活动,旨在更全方位地洞察中国大数据产业现状,为大数据技术从业者和创业者们提供良好的参考与建议。

历经3个月的激烈争夺,凭借着创新的产品设计,贴近需求的技术实践,经过专家委员会的层层筛选,8家大数据初创企业脱颖而出,获得全国大数据创新项目的称号,并受邀在BDTC2014大会上展示他们的技术。恭喜!

  • 日志易
  • 杭州沃趣网络科技有限公司
  • 一点资讯
  • 九次方大数据
  • 北京优立方科技有限公司
  • 北京数人科技有限公司
  • 聚道科技
  • 量化派

调查方面,从11月7日到12月7日,在短短一个月左右的时间,我们得到来自全国各地3326位热心用户的支持,并从中挑选数十位朋友赠予丰厚大奖。下面一起看下本次调查为我们揭示的大数据行业,以及那些获奖的小伙伴们。

公司使用大数据的基本情况

时至今日,无论你是来自互联网行业、通信行业,还是金融行业、服务业或是零售业,相信都不会对大数据感到陌生。据调查报告显示,32.5%的公司正在搭建大数据平台,处于测试阶段;29.5%的公司已经在生产环境实践大数据,并有成功的用例/产品;24.5%的公司已经做了足够的了解,开发准备就绪;基本不了解的只占3000+用户的13.5%。

 

现有公司大数据的使用情况 

其中,大家对大数据平台提出的的主要需求有:36.5%是进行海量数据的离线处理,比如大数据BI;23.2%是为了大量数据的实时处理,比如在线交互式分析;40.3%的公司的大数据平台则同时负责这两种业务。

 

大数据平台主要负责的业务 

传统观念下,大数据往往是大型互联网公司的玩物。然而,通过本次调查,我们却发现在那些对大数据平台有需求的公司中,研发团队规模远没有我们想象的大,29.11%的研发团队仅有1-10人,次居第二的10-50人的规模占到了25.77%,两种规模的研发团队就超过了一半。可见,当下大数据的需求已不止步于大型公司。 

 

研发团队规模 

从传统架构到大数据时代应用程序架构的转变往往都会遇到一些问题和挑战。在对计算框架门槛调查中,非专业人士难于入手这一难题的比例达到了46.5%,这对企业人才的培训提出了迫切的要求。 

 

当下计算框架使用过程中存在的问题 

打造大数据平台需要企业克服诸多问题和挑战,尤其是安全性和可靠性方面。 

 

大数据平台打造的主要挑战

大数据技术现状

大数据技术在开发者或从业人员的应用中逐步走向成熟,这些成熟的技术在开发人员的探索中得到了初步的稳定发展,公司的使用便是对这些技术的肯定。包括开发语言,数据分析语言、数据库等在内的大数据工具,究竟哪个更适合自己的业务,相信开发者们都有自己的评判标准。

在众多的开发语言中,大数据平台开发者们尤为青睐Java,占到了总比例的65%, 远远超过其他开发语言。值得一提的是,Hadoop本身就由Java实现的。

 

大数据开发语言

在大数据分析语言中,SQL的使用比例达到了64%,是R语言使用者人数的2倍之多。我们从中不难看出SQL-on-XXX项目的前景;同时从R的支持率上,也看到了更多非技术人员,比如数据分析师对低门槛分析类语言的需求。

 

大数据分析通常用的语言

在大数据存储上,HBase则以67.55%的比例位居榜首,远超其他数据仓库,当然这点与Hadoop原生支持是分不开的。

 

大数据存储中适合的数据库

对存储在HBase或Cassandra这样NOSQL数据库中的数据进行复杂查询,Solr、Elasticsearch、Splunk等主流的搜索引擎差距并不大。

 

对存储在NOSQL数据库中的数据进行复杂查询,比较合适的工具

大数据未来发展

诚如上文所说,许多对大数据有需求的公司并不一定具备强大的研发团队,在大数据处理过程中往往遭遇众多挑战。那么,在面临这些挑战时,开发者最迫切需要的是什么?

为了解决公司中的实际问题,39.28%的人希望拥有更犀利和通用的计算框架;37.88%的人希望能拥有更好的数据挖掘算法;21.59%的人则对保障性更高的运维有了更多的期盼。

 

为了解决公司的实际问题,最希望拥有的新技术

良好的大数据计算平台能够有效地支撑企业的海量数据,对于下一代通用大数据技术平台,Spark和Hadoop是公司的主要选择。同时,我们也看到了新贵Spark的发展前景,对比老将Hadoop,差距也仅有3.7%。

 

人们看好的下一代通用大数据计算平台

现有公司中,大数据平台已包含的部件位居前三的主要是SQL数据库(90.3%)、NoSQL数据库(50.7%)和HDFS(47.2%),在此基础上,公司计划添加的部件主要包含SQL数据库(57.2%)、Spark(41.5%)和NoSQL数据库(26.9%)。从各公司已有大数据部件和计划添加的部件可以看出,SQL数据库和NoSQL数据库在公司的大数据平台中发挥了重要的作用,得到了各公司的青睐。

 

现有大数据平台已包含的部件   

 

 现有大数据平台计划添加的部件

为了获取更高的收益,企业在前期需要进行有效地成本投入,对大数据平台的投资,公司更加不会吝啬,其中被调查的人群中,45.7%的人所在企业有追加投资大数据平台的打算,同时,公司也期望能够通过多种途径完善大数据平台,主要的完善途径包括基于开源平台自主研发、购买成熟的解决方案,使用公有云。

 

企业期望完善大数据平台的途径

使用公有云也是企业期望完善大数据平台的有效途径之一,在选择公有云平台方面,企业也面临着很大的倾向性,45.26%的人将阿里云作为首选。

 

公有云平台的选择

大数据技术培训

技术培训能够对开发者起到一定的指导作用,使得听众可以系统全面的把握新技术的知识脉络,了解技术的发展趋势。在此次调查活动中,69.4%的被调查者表示从未参加过大数据平台构建的技术培训。对于技术培训的形式,49%的人希望是线上培训,收费,成系列型的大数据解决方案,专攻一个方向,解决实际问题;37%的被调查者还是希望免费进行技术培训,即使不成系列,无论是线上线下,能听一节是一节。虽然收费在一定程度上影响了开发者对大数据技术培训的热情,但是能够切实解决实际问题,得到技术和能力的提升,仍是相关技术人员追求的培训目标。

 

更适合的技术培训形式

那么,对开发者来说,大家特别期望从技术培训中获取的知识又会是什么?

 

大数据领域,迫切学习或参加培训的新技术

大数据处理需要用到的九种编程语言

随着大数据的热潮不断升温,几乎各个领域都有洪水倾泻般的信息涌来,面对用户成千上万的浏览记录、记录行为数据,如果就单纯的Excel来进行数据处理是远远不能满足的。但如果只用一些操作软件来分析,而不怎么如何用逻辑数据来分析的话,那也只是简单的数据处理。

大数据

替代性很高的工作,而无法深入规划策略的核心。

当然,基本功是最不可忽略的环节,想要成为数据科学家,对于这几个程序你应该要有一定的认识:

R

若要列出所有程序语言,你能忘记其他的没关系,但最不能忘的就是R。从1997年悄悄地出现,最大的优势就是它免费,为昂贵的统计软件像是Matlab或SAS的另一种选择。

但是在过去几年来,它的身价大翻转,变成了资料科学界眼中的宝。不只是木讷的统计学家熟知它,包括WallStreet交易员、生物学家,以及硅谷开发者,他们都相当熟悉R。多元化的公司像是Google、Facebook、美国银行以及NewYorkTimes通通都使用R,它的商业效用持续提高。

R的好处在于它简单易上手,透过R,你可以从复杂的数据集中筛选你要的数据,从复杂的模型函数中操作数据,建立井然有序的图表来呈现数字,这些都只需要几行程序代码就可以了,打个比方,它就像是好动版本的Excel。

R最棒的资产就是活跃的动态系统,R社群持续地增加新的软件包,还有以内建丰富的功能集为特点。目前估计已有超过200万人使用R,最近的调查显示,R在数据科学界里,到目前为止最受欢迎的语言,占了回复者的61%(紧追在后的是39%的Python)。

它也吸引了WallStreet的注目。传统而言,证券分析师在Excel档从白天看到晚上,但现在R在财务建模的使用率逐渐增加,特别是可视化工具,美国银行的副总裁NiallO’Conno说,「R让我们俗气的表格变得突出」。

在数据建模上,它正在往逐渐成熟的专业语言迈进,虽然R仍受限于当公司需要制造大规模的产品时,而有的人说他被其他语言篡夺地位了。

“R更有用的是在画图,而不是建模。”顶尖数据分析公司Metamarkets的CEO,MichaelDriscoll表示,

“你不会在Google的网页排名核心或是Facebook的朋友们推荐算法时看到R的踪影,工程师会在R里建立一个原型,然后再到Java或Python里写模型语法”。

举一个使用R很有名的例子,在2010年时,PaulButler用R来建立Facebook的世界地图,证明了这个语言有多丰富多强大的可视化数据能力,虽然他现在比以前更少使用R了。

“R已经逐渐过时了,在庞大的数据集底下它跑的慢又笨重”Butler说。

所以接下来他用什么呢?

Python

如果说R是神经质又令人喜爱的Geek,那Python就是随和又好相处的女生。

Python结合了R的快速、处理复杂数据采矿的能力以及更务实的语言等各个特质,迅速地成为主流,Python比起R,学起来更加简单也更直观,而且它的生态系统近几年来不可思议地快速成长,在统计分析上比起R功能更强。

Butler说,“过去两年间,从R到Python地显著改变,就像是一个巨人不断地推动向前进”。

在数据处理范畴内,通常在规模与复杂之间要有个取舍,而Python以折衷的姿态出现。IPythonNotebook(记事本软件)和NumPy被用来暂时存取较低负担的工作量,然而Python对于中等规模的数据处理是相当好的工具;Python拥有丰富的资料族,提供大量的工具包和统计特征。

美国银行用Python来建立新产品和在银行的基础建设接口,同时也处理财务数据,“Python是更广泛又相当有弹性,所以大家会对它趋之若鹜。”O’Donnell如是说。

然而,虽然它的优点能够弥补R的缺点,它仍然不是最高效能的语言,偶尔才能处理庞大规模、核心的基础建设。Driscoll是这么认为的。

Julia

今日大多数的数据科学都是透过R、Python、Java、Matlab及SAS为主,但仍然存在着鸿沟要去弥补,而这个时候,新进者Julia看到了这个痛点。

Julia仍太过于神秘而尚未被业界广泛的采用,但是当谈到它的潜力足以抢夺R和Python的宝座时,数据黑客也难以解释。原因在于Julia是个高阶、不可思议的快速和善于表达的语言,比起R要快的许多,比起Python又有潜力处理更具规模的数据,也很容易上手。

“Julia会变的日渐重要,最终,在R和Python可以做的事情在Julia也可以”。Butler是这么认为的。

就现在而言,若要说Julia发展会倒退的原因,大概就是它太年轻了。Julia的数据小区还在初始阶段,在它要能够和R或Python竞争前,它还需要更多的工具包和软件包。

Driscoll说,它就是因为它年轻,才会有可能变成主流又有前景。

Java

Driscoll说,Java和以Java为基础的架构,是由硅谷里最大的几家科技公司的核心所建立的,如果你从Twitter、Linkedin或是Facebook里观察,你会发现Java对于所有数据工程基础架构而言,是非常基础的语言。

Java没有和R和Python一样好的可视化功能,它也不是统计建模的最佳工具,但是如果你需要建立一个庞大的系统、使用过去的原型,那Java通常会是你最基的选择。

Hadoop and Hive

为了迎合大量数据处理的需求,以Java为基础的工具群兴起。Hadoop为处理一批批数据处理,发展以Java为基础的架构关键;相较于其他处理工具,Hadoop慢许多,但是无比的准确和可被后端数据库分析广泛使用。和Hive搭配的很好,Hive是基于查询的架构下,运作的相当好。

Scala

又是另一个以Java为基础的语言,和Java很像,对任何想要进行大规模的机械学习或是建立高阶的算法,Scala会是逐渐兴起的工具。它是善于呈现且拥有建立可靠系统的能力。

“Java像是用钢铁建造的;Scala则是让你能够把它拿进窑烤然后变成钢的黏土”Driscoll说。

Kafka andStorm

说到当你需要快速的、实时的分析时,你会想到什么?Kafka将会是你的最佳伙伴。其实它已经出现五年有了,只是因为最近串流处理兴起才变的越来越流行。

Kafka是从Linkedin内诞生的,是一个特别快速的查询讯息系统。Kafka的缺点呢?就是它太快了,因此在实时操作时它会犯错,有时候会漏掉东西。

鱼与熊掌不可兼得,「必须要在准确度跟速度之间做一个选择」,Driscoll说。所以全部在硅谷的科技大公司都利用两个管道:用Kafka或Storm处理实时数据,接下来打开Hadoop处理一批批处理数据系统,这样听起来有点麻烦又会有些慢,但好处是,它非常非常精准。

Storm是另一个从Scala写出来的架构,在硅谷逐渐大幅增加它在串流处理的受欢迎程度,被Twitter并购,这并不意外,因为Twitter对快速事件处理有极大的兴趣。

Matlab

Matlab可以说是历久不衰,即使它标价很高;在非常特定的利基市场它使用的相当广泛,包括密集的研究机器学习、信号处理、图像辨识等等。

Octave

Octave和Matlab很像,除了它是免费的之外。然而,在学术信号处理的圈子,几乎都会提到它。

GO

GO是另一个逐渐兴起的新进者,从Google开发出来的,放宽点说,它是从C语言来的,并且在建立强大的基础架构上,渐渐地成为Java和Python的竞争者。

这么多的软件可以使用,但我认为不见得每个都一定要会才行,知道你的目标和方向是什么,就选定一个最适合的工具使用吧!可以帮助你提升效率又达到精准的结果。

参考:

http://mt.sohu.com/20160501/n447172173.shtml

http://www.199it.com/archives/261824.html

http://www.csdn.net/article/2014-12-08/2823020

http://www.csdn.net/article/2012-12-20/2813054-Database

https://www.aliyun.com/zixun/content/2_11_266828.html



图像处理入门教程

阅读数 32635