图像处理与深度学校_深度学习 图像处理 图像大小 - CSDN
  • 深度理解图像处理

    2015-11-15 21:40:04
    已经好处时间没写文章了,图像处理包含的技术太多,预处理,特征提取,图像识别等,每一个模块涉及到很多算法,如何巧妙地利用这些算法使其应用到我们现有的工程中,需要我们去了解他们的特性,就行我们要写一个牛逼...

            已经好长时间没写文章了,图像处理包含的技术太多,预处理,特征提取,图像识别等,每一个模块涉及到很多算法,如何巧妙地利用这些算法使其应用到我们现有的工程中,需要我们去了解他们的特性,就行我们要写一个牛逼的程序一样,好的想法好结合实际,所以需要了解相关的api,相关的算法,在充分理解的基础上,创造出属于自己的领悟,接下来一段时间主要研究图像处理相关的知识,今天就当作是开篇吧,也希望所以的技术爱好者喜欢上写博客,即使是一个微不足道的想法,那也是有价值的。

                   国内外从事CV相关的企业

                   图像处理实用资源

                   机器学习/数据挖掘之中国大牛

                   计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接

    如果这些无法满足你的需求就自己搜索CVPR吧。


    展开全文
  • 图像处理深度学习

    2018-05-05 22:02:57
    第一种 自我激发型 基于图像处理的方法,如图像增强和图像复原,以及曾经很火的超分辨率算法。都是在不增加额外信息的前提下的实现方式。 1. 图像增强 图像增强是图像预处理中非常重要且常用的一种方法,图像...

    针对模糊图像的处理,个人觉得主要分两条路,一种是自我激发型,另外一种属于外部学习型。接下来我们一起学习这两条路的具体方式。

    第一种 自我激发型

      基于图像处理的方法,如图像增强和图像复原,以及曾经很火的超分辨率算法。都是在不增加额外信息的前提下的实现方式。 
       
    1. 图像增强

      图像增强是图像预处理中非常重要且常用的一种方法,图像增强不考虑图像质量下降的原因,只是选择地突出图像中感兴趣的特征,抑制其它不需要的特征,主要目的就是提高图像的视觉效果。先上一张示例图: 
       
      这里写图片描述 
       
      图像增强中常见的几种具体处理方法为:

    1. 直方图均衡

        在图像处理中,图像直方图表示了图像中像素灰度值的分布情况。为使图像变得清晰,增大反差,凸显图像细节,通常希望图像灰度的分布从暗到亮大致均匀。直方图均衡就是把那些直方图分布不均匀的图像(如大部分像素灰度集中分布在某一段)经过一种函数变换,使之成一幅具有均匀灰度分布的新图像,其灰度直方图的动态范围扩大。用于直方均衡化的变换函数不是统一的,它是输入图像直方图的积分,即累积分布函数。

    2. 灰度变换

        灰度变换可使图像动态范围增大,对比度得到扩展,使图像清晰、特征明显,是图像增强的重要手段之一。它主要利用图像的点运算来修正像素灰度,由输入像素点的灰度值确定相应输出像素点的灰度值,可以看作是“从像素到像素”的变换操作,不改变图像内的空间关系。像素灰度级的改变是根据输入图像f(x,y)灰度值和输出图像g(x,y)灰度值之间的转换函数g(x,y)=T[f(x,y)]进行的。 
        灰度变换包含的方法很多,如逆反处理、阈值变换、灰度拉伸、灰度切分、灰度级修正、动态范围调整等。

    3. 图像平滑

        在空间域中进行平滑滤波技术主要用于消除图像中的噪声,主要有邻域平均法、中值滤波法等等。这种局部平均的方法在削弱噪声的同时,常常会带来图像细节信息的损失。 
        邻域平均,也称均值滤波,对于给定的图像f(x,y)中的每个像素点(x,y),它所在邻域S中所有M个像素灰度值平均值为其滤波输出,即用一像素邻域内所有像素的灰度平均值来代替该像素原来的灰度。 
        中值滤波,对于给定像素点(x,y)所在领域S中的n个像素值数值{f1,f2,…,fn},将它们按大小进行有序排列,位于中间位置的那个像素数值称为这n个数值的中值。某像素点中值滤波后的输出等于该像素点邻域中所有像素灰度的中值。中值滤波是一种非线性滤波,运算简单,实现方便,而且能较好的保护边界。

    4. 图像锐化

        采集图像变得模糊的原因往往是图像受到了平均或者积分运算,因此,如果对其进行微分运算,就可以使边缘等细节信息变得清晰。这就是在空间域中的图像锐化处理,其的基本方法是对图像进行微分处理,并且将运算结果与原图像叠加。从频域中来看,锐化或微分运算意味着对高频分量的提升。常见的连续变量的微分运算有一阶的梯度运算、二阶的拉普拉斯算子运算,它们分别对应离散变量的一阶差分和二阶差分运算。

    2. 图像复原

      这里写图片描述 
       
      其目标是对退化(传播过程中的噪声啊,大气扰动啊好多原因)的图像进行处理,尽可能获得未退化的原始图像。如果把退化过程当一个黑匣子(系统H),图片经过这个系统变成了一个较烂的图。这类原因可能是光学系统的像差或离焦、摄像系统与被摄物之间的相对运动、电子或光学系统的噪声和介于摄像系统与被摄像物间的大气湍流等。图像复原常用二种方法。当不知道图像本身的性质时,可以建立退化源的数学模型,然后施行复原算法除去或减少退化源的影响。当有了关于图像本身的先验知识时,可以建立原始图像的模型,然后在观测到的退化图像中通过检测原始图像而复原图像。 
       
    3. 图像超分辨率   
      一张图我们想脑补细节信息好难,但是相似的多幅图我们就能互相脑洞了。所以,我们可以通过一系列相似的低分辨图来共同脑补出一张高清晰图啊,有了这一张犯罪人的脸,我就可以画通缉令了啊。。。 
      超分辨率复原技术的目的就是要在提高图像质量的同时恢复成像系统截止频率之外的信息,重建高于系统分辨率的图像。继续说超分辨,它其实就是根据多幅低质量的图片间的关系以及一些先验知识来重构一个高分辨的图片。示例图如下: 
    这里写图片描述

    第二种 外部学习型

      外部学习型,就如同照葫芦画瓢一样的道理。其算法主要是深度学习中的卷积神经网络,我们在待处理信息量不可扩充的前提下(即模糊的图像本身就未包含场景中的细节信息),可以借助海量的同类数据或相似数据训练一个神经网络,然后让神经网络获得对图像内容进行理解、判断和预测的功能,这时候,再把待处理的模糊图像输入,神经网络就会自动为其添加细节,尽管这种添加仅仅是一种概率层面的预测,并非一定准确。

      本文介绍一种在灰度图像复原成彩色RGB图像方面的代表性工作:《全局和局部图像的联合端到端学习图像自动着色并且同时进行分类》。利用神经网络给黑白图像上色,使其变为彩色图像。稍作解释,黑白图像,实际上只有一个通道的信息,即灰度信息。彩色图像,则为RGB图像(其他颜色空间不一一列举,仅以RGB为例讲解),有三个通道的信息。彩色图像转换为黑白图像极其简单,属于有损压缩数据;反之则很难,因为数据不会凭空增多。

      搭建一个神经网络,给一张黑白图像,然后提供大量与其相同年代的彩色图像作为训练数据(色调比较接近),然后输入黑白图像,人工智能按照之前的训练结果为其上色,输出彩色图像,先来看一张效果图: 
      这里写图片描述

    1. 本文工作 
      •  用户无干预的灰度图像着色方法。 
      •  一个新颖的端到端网络,联合学习图像的全局和局部特征。 
      •  一种利用分类标签提高性能的学习方法。 
      •  基于利用全局特征的风格转换技术。 
      •  通过用户研究和许多不同的例子深入评估模型,包括百年的黑白照片。

    2. 着色框架 
         
        模型框架包括四个主要组件:低级特征提取网络,中级特征提取网络,全局特征提取网络和着色网络。 这些部件都以端对端的方式紧密耦合和训练。 模型的输出是图像的色度,其与亮度融合以形成输出图像。 
                 这里写图片描述

    3. 与另外两个工作对比

      • Gustav Larsson, Michael Maire, and Gregory Shakhnarovich. Learning Representations for Automatic Colorization. In ECCV 2016. 
      •Richard Zhang, Phillip Isola, and Alexei A. Efros. Colorful Image Colorization. In ECCV 2016.

    这里写图片描述

    参考文献:

    网页: 
    http://hi.cs.waseda.ac.jp/~iizuka/projects/colorization/extra.html

    代码: 
    https://github.com/satoshiiizuka/siggraph2016_colorization

    论文2:  
    http://richzhang.github.io/colorization/

    在线demo: 
    http://demos.algorithmia.com/colorize-photos/

    展开全文
  • 原文:Image Classification in 5 Methods https://medium.com/towards-data-science/image-classification-in-5-methods-83742aeb3645图像分类,顾名思义,是一...图像分类的传统方法是特征描述及检测,这类传统方法

    原文:Image Classification in 5 Methods
    https://medium.com/towards-data-science/image-classification-in-5-methods-83742aeb3645

    图像分类,顾名思义,是一个输入图像,输出对该图像内容分类的描述的问题。它是计算机视觉的核心,实际应用广泛。

    图像分类的传统方法是特征描述及检测,这类传统方法可能对于一些简单的图像分类是有效的,但由于实际情况非常复杂,传统的分类方法不堪重负。现在,我们不再试图用代码来描述每一个图像类别,决定转而使用机器学习的方法处理图像分类问题。

    这里写图片描述

    目前,许多研究者使用CNN等深度学习模型进行图像分类;另外,经典的KNN和SVM算法也取得不错的结果。然而,我们似乎无法断言,哪种方法对于图像分来问题效果最佳。

    这里写图片描述

    本项目中,我们做了一些有意思的事情:

    将业内普遍用于图像分类的CNN和迁移学习算法与KNN,SVM,BP神经网络进行比较。

    获取深度学习经验。

    探索谷歌机器学习框架TensorFlow。

    下面是具体实施细节。

    一、系统设计

    在本项目中,用于实验的5种算法为KNN、SVM、BP神经网络、CNN以及迁移学习。我们采用如下三种方式进行实验
    KNN、SVM、BP神经网络是我们在学校能够学到的。功能强大而且易部署。所以第一步,我们主要使用sklearn实现KNN,SVM,和BP神经网络。

    由于传统的多层感知机模型在图像识别方面效果甚佳,但由于其节点间的全连接模式对于其延展性造成了阻碍,因此对于高分辨率的图像,识别率不是很理想。所以这一步,我们用Google TensorFlow框架构建CNN。

    对于已经预训练过的深度神经网络Inception V3进行重训练。Inception V3由TensorFlow提供,使用ImageNet自2012年以来的数据进行训练。ImageNet是计算机视觉领域一个经典挑战,参赛者试图用模型将全部图像放至1000个分类中。为了要重新训练已经预训练好的模型,我们必须保证我们自己的数据集没有被预训练过。

    二、实施

    第一种方法:使用sklearn预处理数据以及实现KNN,SVM和BP神经网络。

    步骤1,使用openCV包,定义2个预处理函数,分别是图像特征向量(用来调整图像大小并将图像扁平化成一系列行像素)和提取颜色直方图(使用cv2.normalize从HSV色域中提取一个3D颜色直方图并做平滑处理)。

    步骤2,构造参数。由于我们试图在整个数据集以及具有不同类别数目的子数据集上进行性能测试,所以我们把各个数据集看作为参数,以便进行实验分析。另外,我们还设置了KNN中的邻居数目作为参数。

    步骤3,提取图像特征并写入数组。我们使用cv2.imread函数读取图像,根据规范化的图像名称进行分类。然后运行第步骤1中提到的2个函数,分别得到2种图像特征并写入数组。

    步骤4,使用函数train_test_split分割数据集。85%的数据作为训练集,15%的数据作为测试集。

    步骤5,使用KNN,SVM和BP神经网络方法去评估数据。对于KNN,使用KNeighborsClassifier,对于SVM,使用SVC,对于BP神经网络,使用MLPClassifier。

    第二种方法:基于TensorFlow构建CNN。使用TensorFlow得到计算图并在C++中实现,比Python更高效。

    TensorFlow中使用到的的几个概念:占位符,变量,数学公式,成本计量,最优方法,CNN体系结构。

    步骤1,第一层放置图像。

    步骤2,构建3层卷积层(3 Convolutional layers),2X2的max-pooling和ReLU。输入是4维张量:【图像编号,Y坐标,X坐标,通道】。输出是另一个经处理得到的4维张量:【图像编号(不变),Y坐标,X坐标,通道】。

    步骤3,构建2层全连接层(2 Fully-Connected Layers)。输入是2维张量:【图像编号,输入编号】。输出是2维张量【图像编号,输出编号】。使用

    步骤4,使用合并层(Flatten Layer)链接卷积层和全连接层。

    步骤5,使用softmax layer标准化输出。

    步骤6,优化训练结果。我们使用交叉熵(cross entropy)作为成本计量函数,取其均值。最优方法使用tf.train.AdamOptimizer()。

    第三种方法:Retrain Inception V3。使用Retrain Inception V3 ,并利用迁移学习减少工作量。

    我们得到pre-trained模型,移除原有顶层,训练新模型。然后分析在磁盘上的所有图像并计算它们的bottleneck值。脚本会运行4000次。每次运行都会从训练集中随机选取10个图像,找到它们的bottleneck值并注入最后一层得到预测结果。然后在反向传播过程中,根据预测结果和实际标签的比较结果去更新每层的权重。

    四、实验

    实验中使用到的数据集是Oxford-IIIT Pet 数据集。

    http://www.robots.ox.ac.uk/~vgg/data/pets/

    其中有犬类25类,猫类12类。每类有200个图像。我们使用到该数据集中的10个类别的猫的数据,分别是[‘Sphynx’,’Siamese’,’Ragdoll’,’Persian’,’Maine-Coon’,’British-shorthair’,’Bombay’,’Birman’,’Bengal’,’Abyssinian’]。即,共有2000个图像,由于图像大小不一,我们调整大小统一为固定尺寸64X64或128X128。

    这里写图片描述

    五、赋值

    第一种方法:KNN,SVM,和BP神经网络
    第一部分:使用sklearn预处理数据以及实现KNN,SVM和BP神经网络。在image_to_feature_vector函数中,我们设定尺寸128X128。经试验表明,图像尺寸越大,结果越精确,运行负担越大。最终我们决定使用128X128的尺寸。在extract_color_histogram函数中,设定每个通道的容器数量为32,32,32。对于数据集,使用3种数据集。第一个是具有400个图像,2个标签的子数据集。第二个是具有1000个图像,5个标签的子数据集。第三个是整个数据集,1997个图像,10个标签。

    在KNeighborsClassifier中,我们只改变邻居数量且存储结果作为每个数据集的最佳K值,其他参数默认。

    在MLPClassifier中,我们设定每层有50个神经元。

    在SVC中,最大迭代次数是1000,类权重是“balanced”。

    依据数据集,2个标签到10个标签不同,运行时间大约为3到5分钟不等。

    第二种方法:基于TensorFlow构建CNN

    由于在整个数据集中运行时间过长,我们在每个迭代中分批次处理。每批次一般有32个或64个图像。数据集分为1600个图像的训练集,400个图像的验证集,300个图像的测试集。

    本方法中有大量的参数可调整。学习速率设定为1x10^-4;图像大小设定为64x64和128x128;然后是层和形状,然而有太多的参数可调整,我们依据经验并进行实验去得到最佳结果。

    为了得到最佳的layers,我们进行实验。首先,参数如下:

    # Convolutional Layer 1. filter_size1 = 5 num_filters1 = 64
    # Convolutional Layer 2. filter_size2 = 5 num_filters2 = 64
    # Convolutional Layer 3. filter_size3 = 5 num_filters3 = 128
    # Fully-connected layer 1. fc1_size = 256
    # Fully-connected layer 2. fc1_size = 256
    

    我们使用了3个卷积层和2个全连接层,然而悲剧的是过度拟合。经过研究发现,对于该构造,我们的数据集过小,网络过于复杂。

    最终,我们使用如下参数:

    # Convolutional Layer 1. filter_size1 = 5 num_filters1 = 64
    # Convolutional Layer 2. filter_size2 = 3 num_filters2 = 64
    # Fully-connected layer 1. fc1_size = 128
    # Number of neurons in fully-connected layer.
    # Fully-connected layer 2. fc2_size = 128
    # Number of neurons in fully-connected layer.
    # Number of color channels for the images: 
    # 1 channel for gray-scale. num_channels = 3
    

    我们只使用了2个卷积层和2个全连接层。依然不尽人意,经过4000次迭代,结果仍旧过拟合,不过好在测试结果10%优于前者。最终,经过5000次迭代,我们得到43%的精确度,运行时间是半小时以上。

    PS:我们使用另一个数据集CIFAR-10进行了实验。

    CIFAR-10:https://www.cs.toronto.edu/~kriz/cifar.html

    这里写图片描述

    该数据集包含60000个32x32的彩色图像,分为10个类别,每个类别6000个图像。训练集50000个图像,测试集10000个图像。使用同样的网络结构,经过10个小时的训练,最终得到78%的精确度。

    第三种方法:Retrain Inception V3

    与以上方法相似,训练次数为4000,依据结果进行调整。学习速率依据每批次的图像数量进行调整。80%的数据用来训练,10%用来验证,10%用来测试。

    五、实验结果

    第一种方法:KNN,SVM,和BP神经网络

    这里写图片描述

    由于过拟合,我们无法得到好的实验结果。运行时间一般为半个小时,由于过拟合,我们认为,运行时间无法预估。通过与方法1比较,可以得出:即使CNN过拟合训练集,实验结果依旧优于方法1。

    第三种方法:Retrain Inception V3

    这里写图片描述

    整个训练过程不超过10分钟,且我们得到了非常好的结果。事实证明,深度学习和迁移学习十分强大。

    Demo:

    这里写图片描述

    六、结论

    基于以上实验比较,我们得出:

    KNN,SVM,和BP神经网络在图像分类中不够有效。

    即使在CNN中过拟合,CNN的实验结果依旧比传统分类算法好。

    迁移学习在图像分类问题上非常有效。运行时间短且结果精准,能够良好地解决过拟合和数据集过小的问题。

    通过本次项目,我们得到了许多宝贵的经验,如下所示:

    调整图像使其更小。

    对于训练的每次迭代,随机选取小批次数据。

    随机选取小批次数据作为验证集进行验证,并且在训练期间反馈验证评分。

    利用Image Augmentation把输入图像集转变为可调整的更大的新数据集。

    图像数据集要大于200x10。

    复杂网络结构需要更多的训练集。

    小心过拟合。

    参考文献

    1. CS231n Convolutional Neural Networks for Visual Recognition
    2. TensorFlow Convolutional Neural Networks
    3. How to Retrain Inception’s Final Layer for New Categories
    4. k-NN classifier for image classification
    5. Image Augmentation for Deep Learning With Keras
    6. Convolutional Neural Network TensorFlow Tutorial
      Note: The first method is performed by Ji Tong
      https://github.com/JI-tong
      Originally published at gist.github.com.
    展开全文
  • 本书既可以作为学校或培训机构及企业的MATLAB图像处理的教程,也适合作为MATLAB图像开发的案头参考书,也可以作为自学MATLAB的参考用书。 目录 第1部分 基础篇  第1章 MATLAB图像处理工具安装设置  第2章 ...
  • 本书分为4部分,共29章,详细讲解了MATLAB的结构和功能,以及MATLAB图像处理...本书既可以作为学校或培训机构及企业的MATLAB图像处理的教程,也适合作为MATLAB图像开发的案头参考书,也可以作为自学MATLAB的参考用书。
  • 在这个看脸的时代,颜值... 随着台式计算机的处理能力日益增强,各种图像拍摄的设备(例如平板电脑、手机摄像头、数码相机、扫描仪等)的普及,以及互联网的加持,使得数字图像处理变得文字处理一样普及。本书就数字

    在这个看脸的时代,颜值就是一切。怎样可以成为控制颜值的“黑魔法师”?相信,阅读以下这些经典的图像处理书籍能够助你一臂之力。赶紧紧随大圣众包威客平台的脚步吧!

    1465571461-5092-2081_meitu_5.jpg

    1. 《数字图像处理基础》

    wKhQt1PWBqSEG-PpAAAAAI-EItA871_meitu_4.jpg

      随着台式计算机的处理能力日益增强,各种图像拍摄的设备(例如平板电脑、手机摄像头、数码相机、扫描仪等)的普及,以及互联网的加持,使得数字图像处理变得与文字处理一样普及。本书就数字图像处理的各个基本主题,先给出有关问题的数学公式,然后根据数学公式给出实现有关问题的伪代码,最后在Java语言及ImageJ平台下完整实现。《数字图像处理基础》作为高等学校计算机及相关专业“数字图像处理”课程的教材,是非常适合的。

      2.《数字图像处理(第三版)》

    wKhQt1PWBqSEG-PpAAAAAI-EItA871.jpg

      在数字图像处理领域,本书作为主要教材已有30多年。这一版本除保留了前两版的大部分内容外,作者更在13个方面对本书进行了修订,新增了400多幅图像、200多幅图表及80多道习题,融入了近年来数字图像处理领域的重要进展,因而本书特色鲜明且与时俱进。全书仍分为12章,即绪论、数字图像基础、灰度变换与空间滤波、频率域滤波、图像复原与重建、彩色图像处理、小波和多分辨率处理、图像压缩、形态学图像处理、图像分割、表示与描述、目标识别。

      3.《Image Processing and Analysis》

    368008126778492181.jpg

      《ImageProcessingandAnalysis》将现代数学与现代图像处理中最先进的方法联系起来,组织成一个连贯的逻辑结构。作者通过它们连接到傅里叶和光谱分析中的少数共同线程,揭示了传统图像处理的原理,从而整合了现代图像处理方法的多样性。可以说,这本书是全面而且综合的,它涵盖了当代图像分析和处理中的4个最强大的数学工具类,同时也探索了它们的内在连接和集成。

      4.《图像处理、分析与机器视觉(第3版)》

    42207392636698837.jpg

      《图像处理、分析与机器视觉(第3版)》是为计算机专业图像处理、图像分析和机器视觉课程编写的教材。此书针对这三方领域的有关原理与技术,展开了广泛而深入的讨论,包括图像预处理、图像分割、形状表示与描述、物体识别与图像理解、三维视觉、数学形态学图像处理技术、离散图像变换、图像压缩、纹理描述、运动分析等。本书力图将复杂的概念通过具体的示例以易于理解的算法来描述,并提供了大量包含图示和处理结果的插图,特别有助于读者的学习和理解。另外,它也覆盖了十分广泛的领域,包括人工智能、信号处理、人工神经网络、模式识别、机器学习、模糊数学等一系列相关学科,读者可以通过学习此书,学到很多具有普遍价值的知识和具体的应用方法。

      5.《数字图像处理与机器视觉》

    20140423104022124.jpg

      《数字图像处理与机器视觉》将理论知识、科学研究和工程实践有机结合起来,内容涉及数字图像处理和识别技术的方方面面,包括图像的点运算、几何变换、空域和频域滤波、小波变换、图像复原、彩色图像处理、形态学处理、图像分割、图像压缩以及图像特征提取等。本书也对机器视觉进行了前导性的探究,重点介绍了3种目前在工程技术领域非常流行的分类技术——人工神经网络(ANN)、支持向量机(SVM)和AdaBoost,并在配套给出的识别案例中直击光学字符识别(OCR)、人脸识别和性别分类等热点问题。《数字图像处理与机器视觉》结构紧凑,内容深入浅出,讲解图文并茂,适合于计算机、通信和自动化等相关专业的本科生、研究生,以及工作在图像处理和识别领域一线的广大工程技术人员阅读参考。

      6.《Mathematical Problems in Image Processing》

    14047023764241.jpg

      本书更新的第二版提供了各种图像分析的应用程序,并展示了如何离散化这些精确的数学。《MathematicalProblemsinImageProcessing》展示了它对数学领域的贡献,并突出了未解决的理论问题。而对于计算机视觉社区,此书提出了一个清晰、自洽的涉及数学的图像处理问题。值得一提的是,第二版《Mathematical Problems in Image Processing》提供了对PDE框架所涵盖的图像处理应用程序进展的回顾,并更新了现有的材料,同时,本书还提供了用于以最小的努力创建模拟的编程工具,十分难得。

      DT时代,想成为朋友圈中人人膜拜的图像处理高手?从阅读开始吧!


    展开全文
  • 一篇博客,来结束自己这几年来图像算法的职业生涯 总的来说,图像算法、深度学习,前景不是很明朗。研究生做这个挺多的,因为大家要发论文,需要一些算法。并且,图像发论文比较容易,也就好毕业。这是学术方面的,...

        一篇博客,来结束自己这几年来图像算法的职业生涯

        总的来说,图像算法、深度学习,前景不是很明朗。研究生做这个挺多的,因为大家要发论文,需要一些算法。并且,图像发论文比较容易,也就好毕业。这是学术方面的,最近几年在CVPR等论坛收到的文章越来越多。工作方面,发现周围和自己一样做图像的研究生,毕业的时候,90%转互联网、软件开发了,剩下的基本上过的不好,三年内也转行了。

        首先说说,图像算法是干什么的。图像算法、模式识别、计算机视觉、深度学习等,名称很多,但是对于公司来说,基本上是一个概念。在学校读书时,一般采用matlab进行处理,做一些科研项目,验证算法。工作后,很多公司采用opencv,halcon等软件,进行一些跟踪、定位、分类、分割等之类的研究。

        然后说说,怎么做图像算法。当然不是说具体的算法,主要是采用的开发平台。一般做图像算法的,很多采用halcon,但是需要付费。所以越来越多的公司用Opencv,公司需求多样,有的做双目,有的测量,有的做医疗...不管你在学校学什么,公司的需求才是最重要的,你必须跟着公司的需求走。利用成熟的库进行开发,还是比较幸运的,很多公司需要从底层写一套算法,因为很多芯片不支持OPENCV等库,这个就非常困难了。单纯的一个简单算法,纯C复现的话,三五个研究生,也许要一周的时间,碰到这样的情况,想都不用想,做图像算法的工程师赶紧离职。

        接着说说,图像算法的难度。老实说,图像算法跟造发动机一样,难于登天。很多人不服气,因为他们没尝试过纯C写底层算法,基本上都是在一些OPENCV库上进行开发。当时碰到用C语言写一个简单的检测算法,公司算法部门就离职了两个博士和五个研究生。很多苦只有自己经历过才知道。面试别的公司,老板会问你,会不会自己写一套类似OPENCV的库。老板不知道OPENCV由几千人的主力和无数人开源得来的成果,在他们眼里一切都是很简单,但是他们开的工资非常低,基本上跟专科生工作两三年做前端没什么区别。图像算法目前只有人脸识别做得比较好,达到了工业应用,但是也是特定的场合。比如face++的人脸识别,随便瞪眼张嘴,就识别不了。其他方面更不用说了,无数种情况,很难做到自适应。摄像机、光照、距离、噪声...这么多干扰情况,造成正确率非常低。总之,目前图像算法还没达到工业应用级别。半年做不出东西,老板立马会赶走你。

        跟着说说,图像算法的公司和待遇。图像算法公司比较少,80%都是初创小公司,存活不了三年,升职没什么希望。小公司开不了高工资,人员流动很大。图像算法招聘要求高,需要发顶级论文,英语六级,但是待遇低,很少人愿意进来干。图像算法公司主要集中在北上广城市,占了90%以上的岗位。北京占了50%,假如不在一线城市生活,回到二线图像工作都找不到。不要以为越难的技术越赚钱,图像算法应届生待遇比开发工程师只高7%左右,由于很难做出产品,加薪特别慢。基本上开发工程师一年加薪两次,图像算法两年加薪一次,三年后相同学历和经验,图像算法年收入只有JAVA工程师的一半左右。所以图像算法工程师纷纷转行做互联网,软件开发等。

        最后说说,图像算法的前途。图像算法工程师前途不明朗,主要是因为公司少、需求少、产品难做,不像互联网产品,大众需求,又有成熟的框架,很容易盈利,可以发展成大公司。图像做成大公司基本上不可能,创业型图像公司,能存活的非常少,试错成本高,等待着被大公司收购。身边做图像的,90%毕业就做互联网,软开,剩余的三年内换行,自己也在很艰难的转互联网方向。互联网需求大、容易做产品,工资高,前途是不错的。很多虚幻的东西,比如前几年的VR,以及现在的人工智能AI,都没有产品落地,相信马上会泡沫破裂的。

        选择大于努力。选择错了,再去做别的,浪费了大把时间。很多人鼓吹某方面怎么怎么好,比如图像、深度学习、.net开发,但是前途并不好,他们会说,语言、方向不重要什么的,还大义凌然,其实是十分无耻的,明知道有个坑,不告诉别人,还要让别人去跳,是不道德的行为。

        一点经验,分享给在做和打算做图像(人工智能)的同行。希望大家都选对方向,因为时间确实很宝贵。

    展开全文
  • 图像处理入门教程

    2018-04-20 19:00:46
    最近有人问我图像处理怎么研究,怎么入门,怎么应用,我竟一时语塞。仔细想想,自己也搞了两年图像方面的研究,做个两个创新项目,发过两篇论文,也算是有点心得,于是总结总结和大家分享,希望能对大家有所帮助。在...
  • 图像处理数学方法

    2019-01-04 20:35:49
    图像处理的发展过程中,数学始终起着举足轻重的作用,并渗透在图像处理的所有分支之中。 到上世纪六七十年代为止,以Fourier分析为代表的线性处理方法占据了几乎整 个数字图像处理领域。在此期间,借助于随机过程...
  • 图像处理行业入门

    2019-03-18 13:43:04
     一、图像处理的应用  1、身份认证  2、监控安防  3、深度学习(Deep Learning)  二、图像处理研究工具  1、Matlab  2、OpenCv  3、Python  三、图像处理研究方法  1、基础概念  2、基本思想 ...
  • 本系统是基于CVPR2015的论文《Deep Learning of Binary Hash Codes for Fast Image Retrieval》实现的海量...大家都知道,基于内容的图像检索系统是根据图像的内容,在已有图像集中找到最『相近』的图片。而这类系统的
  • 图像处理入门必看

    2017-11-27 22:36:25
    (原MyBlog)前要说明这段时间在网上找资料学习图像处理的相关知识,在网上看到这篇写得相当不错的文章,在大牛允许转载的情况下,特搬家至此,方便更多的初学者能够看到。正文开始最近有人问我图像处理怎么研究,怎么...
  • 刚开始想把这部分内容命名为“基本算法”,意在介绍图像处理中的一些基本算法,后来仔细想想决定不这么写,因为图像处理是一个非常大的概念,图像处理不等于人脸识别,也不等于模式识别,直接介绍诸如图像处理基本...
  • 图像处理与计算机视觉基础,经典以及最近发展 By xdyang(杨晓冬xdyang.ustc@gmail.com) ...
  • 索贝公司笔试题:图像处理算法工程师 一、填空: 1、常用的插值方法有:最近邻插值、双线性插值、立方卷积插值。 2、常用的边缘检测算子有:一阶: Roberts Cross算子, Prewitt算子, Sobel算子, Canny算子, 罗盘...
  • 为何要学习数字图像处理呢?学习之后要达到什么目的?学习过程中有哪些评价标准来检验是否准确掌握知识? 我觉得回答这三个问题是我写这篇博客的主要目的。 数字图像处理 作为一个图像处理方向的学习者和研究者,...
  • c++图像处理入门教程

    2019-07-30 14:53:27
    最近有人问我图像处理怎么研究,怎么入门,怎么应用,我竟一时语塞。仔细想想,自己也搞了两年图像方面的研究,做个两个创新项目,发过两篇论文,也算是有点心得,于是总结总结和大家分享,希望能对大家有所帮助。在...
  • 前面一篇文章我讲解了基于K-Means聚类的图像分割或量化处理,但突然发现世面上的文章讲解图像量化和采样代码的很缺乏,因此结合2015年自己的一篇文章,补充相关知识供同学们学习。基础性文章,希望对你有所帮助。...
  • 作者 | 李翔转载自公众号视说AI(ID: techtalkai)作者简介:李翔,国内某互联网大厂AI民工,前携程酒店图像技术负责人,主导并参与一系列图像智能化算法的研发...
1 2 3 4 5 ... 20
收藏数 5,679
精华内容 2,271
关键字:

图像处理与深度学校