欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

本文由腾讯云AI中心发表于云+社区专栏

腾讯云高级研究员讲述,从成像到图像分析如何入门

文︱冀永楠

“AI来了”邀请到我们腾讯云的高级研究员冀永楠讲述图像分析的那些事儿。

从2012年开始,深度学习席卷了图像识别领域,在图像分类、目标检测、语义分割等领域秒杀了传统的方法。之前也有人写过如何20分钟内得到猫狗分类大赛第二名的卷积神经网络。尽管识别和检测问题是图像分析中难度最高的一部分,在实际应用中,图像问题都是多个问题的组合,而并非单一的识别或者检测问题。

冀永楠表示,本文是简单介绍一下成像和图像分析的基本内容,希望对有兴趣解决图像类问题的同学有所帮助。

作者简介:

冀永楠,诺丁汉大学计算机系博士,欧盟Marie Curie Research Fellow。现为腾讯云大数据AI产品中心高级研究员。

成像方式

理解图像是如何产生的是解决图像类问题的第一步。最常见的成像方式是单反相机——手机相机等相机的成像方式。下图选自参考文献1,直观的展示了这种成像的原理。现实生活中遇到的成像方式绝大多是属于这类成像

除此之外,还有如下图中的X-ray,红外,显微,遥感,结构光等多种成像方式。在处理和分析这些图像的时候,理解图像的成像方式和其中的内容表达方式对最后的处理效果会起到关键的基础性作用。

以医用CT图像为例,CT图像的像素值代表着位于改像素位置的物质对X光的衰减程度。骨头,金属等可以造成较大衰减的,会呈现高像素值。空气几乎不会造成衰减的,会呈现低像素值。CT像素值有很大的动态范围。普通图像像素值一般是0~255。CT的像素值则是-1024~1024。检查不同部位和不同疾病的时候,关注的像素值范围有所不同。例如,在AI医疗的肺结节检测应用场景中,主要关注-1000~200的区域。

图像处理

图像处理问题可以大致的分为低、中、高三个层次。低层处理主要是图像的增强、降低噪声、边缘等特征的提取、基本的压缩等。中层的图像处理方法一般解决的是图像的分类,物体的检测、定位、分割以及图像的语义分割等。高层的处理是比较复杂的综合应该用。比如图像的自动注释,人脸和人脸姿态的识别,自动驾驶等等。

高级的图像处理问题需要分解为多个中低级的问题。一些端到端的深度网络,也会将一个网络分成几个子网络,利用辅助输入输出进行训练。其实本质也是将复杂的高层问题分解为中级和低级的子问题来解决。比如常见的通过人脸比对进行身份验证,一般都包括了人脸检测定位,人脸关键点定位,特征计算和比对的过程。优图的OCR文字识别,也是由背景识别等三大引擎(定位引擎、字段识别引擎)支撑的。

传统的图像分析算法中,各种滤波器的设计占有很大的一部分比例。理解滤波器的原理和使用的场景是做图像分析工作中很大的一块,也是比较痛苦的一块。因为滤波器的种类繁多,原理不一。对于场景的适用性需要经验来判断。比较成功的计算特征的方法有,边缘特征,Scale-invariant feature transform(SIFT),Histogram of Gradient (HOG)等

在特征计算之上,会设计出和问题相关的模型来描述和解决各种中层的图像问题。比如,对于人体检测和定位,Deformable Parts Model(DPM)在深度网络普及之前是效果非常好的一种模型。这种模型在HOG的特征上,将一个整体目标分成几个小目标进行初级识别,之后综合判断小目标之间的关系来定位整体目标的方法。

传统方法对于分割的问题基于两点,一是分割的边界一般处于图像梯度特征较大的地方;二是分割出来的区域的形状一般都是比较规则的。Active Shape, level set 都是类似的方法。更为复杂一些的,可以预设分割出来的物体大概的样子。这种预设称为A Priori Information。

深度学习

卷积神经网络的崛起可以说秒杀了很多传统方法。在分割,分类,检测等等几乎所有的中层问题上,深度学习算法在性能上都超出了传统方法。尽管卷积神经网络(CNN)本质上可以认为是局部的滤波器,但是好在至少数据充足,不需要对滤波器进行过多的设计。深度学习框架可以很大程度上自动优化好最后结果。不同的问题采用不同的网络结构。比如分割问题一般采用反卷积(FCN)网络。目标检测问题采用Faster RCNN网络。

深度网络进化朝着准确度越来越高,应用越来越广的方向发展。一些原有的图像分析的业界测量标准,例如ImageNet图像分类,已经变得易如反掌而退出了舞台。人脸识别也从小数据库,简单场景向千万,甚至亿级数据库,全场景覆盖发展。

应用多多

腾讯云图像识别能力已经在图像多标签分类、敏感图片审核(色情/暴恐/政治人物等)、医学影像识别、人/车/物结构化识别及文字识别(OCR)等细分化场景中进行应用,并在多个领域实现了落地。敏感图片审核技术对色情、暴恐等的识别准确率高达99%,成为网络环境的净化器。在医学领域,腾讯已与超过100家医院签署战略合作,已应用到肺癌早筛、食管癌早筛等项目中,显著提升看病水平和效率。OCR文字识别系统也广泛应用在金融,酒店,快运等等单据和身份证的识别中,取得了良好的实用效果。

Tips:图像技术入门资料

1 Rafael C. Gonzalez and Richard E. Woods. 2006. Digital Image Processing (3rd Edition). Prentice-Hall, Inc., Upper Saddle River, NJ, USA.

这本书是图像处理的数目的经典之作。对于希望理解成像和图像分析基本原理以及方法的同学,是必修之作。

CS231n: Convolutional Neural Networks for Visual Recognition

Li Feifei 开设的课程。课程主页,Youtube, Github上有丰富的资料。对于理解CNN在图像上的应用和演变是最为有效的方法。课后作业也不要错过。

这个不用多说了吧。谁没Clone过几个开源项目。

以上就是学习图像分析的一些方法,更多学习教程,请访问云加社区人工智能专栏

问答
如何从图像中识别字体系列?
相关阅读
语音识别中的CTC算法的基本原理解释
借你一双“慧眼”:一文读懂OCR文字识别
“猜画小歌”的一些细节和思考
云学院 · 课程推荐 | 知乎KOL,与你分享机器学习中如何做选择

此文已由作者授权腾讯云+社区发布,完整原文请点击

搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!

海量技术实践经验,尽在云加社区

一文带你入门图像分析,成为AI专家不是梦!的更多相关文章

  1. 一文带你入门Java Stream流,太强了

    两个星期以前,就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:"就想看你写的啊!"你看你看,多么苍白的喜欢啊.那就&qu ...

  2. 多图:一文带你入门掌握JVM所有知识点

    本JVM系列属于本人学习过程当中总结的一些知识点,目的是想让读者更快地掌握JVM相关的知识要点,难免会有所侧重,若想要更加系统更加详细的学习JVM知识,还是需要去阅读专业的书籍和文档. 本文主题内容: ...

  3. 可能是史上最强大的js图表库——ECharts带你入门

    PS:之前的那篇博客Highcharts——让你的网页上图表画的飞起 ,评论中,花儿笑弯了腰 和 StanZhai 两位仁兄让我试试 ECharts ,去主页看到<Why ECharts ?&g ...

  4. 史上最强大的js图表库——ECharts带你入门(转)

    出处:http://www.cnblogs.com/zrtqsk/p/4019412.html PS:之前的那篇博客Highcharts——让你的网页上图表画的飞起 ,评论中,花儿笑弯了腰 和 Sta ...

  5. C#单元测试,带你入门

    注:本文示例环境 VS2017 XUnit 2.2.0 单元测试框架 xunit.runner.visualstudio 2.2.0 测试运行工具 Moq 4.7.10 模拟框架 为什么要编写单元测试 ...

  6. Istio是啥?一文带你彻底了解!

    原标题:Istio是啥?一文带你彻底了解! " 如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 Istio,并且知道它和 Service Mesh 有着牵扯. 这篇文章可以作为了解 ...

  7. 【转帖】Istio是啥?一文带你彻底了解!

    Istio是啥?一文带你彻底了解! http://www.sohu.com/a/270131876_463994 原始位置来源: https://cizixs.com 如果你比较关注新兴技术的话,那么 ...

  8. 让自己写的电子笔记连文带图全平台兼容(MarkDown图片显示兼容)

    目录 一.工具使用 语言使用:MarkDown 简介 使用原因 使用方法 软件使用:Typora 简介 环境设置搭建 1)搭建图床 2)配置PicGo 3)配置typora 4)测试 图片上传测试 平 ...

  9. 一文带你读懂什么是vxlan网络

    一个执着于技术的公众号 一.背景 随着云计算.虚拟化相关技术的发展,传统网络无法满足大规模.灵活性要求高的云数据中心的要求,于是便有了overlay网络的概念.overlay网络中被广泛应用的就是vx ...

随机推荐

  1. solr-DIH:定时增量索引

    参考:官方文档,http://wiki.apache.org/solr/DataImportHandler#Scheduling googlecode 找到:https://code.google.c ...

  2. Python验证实现登陆功能以及用户锁定(文件存储)

    废话不多说先交代码(只是一个简单的验证):#!/usr/bin/env python #-*- coding:utf8 -*- # Structured program ‘#’是注释 # Functi ...

  3. C++(指针和高级指针)-上篇

    [在指针中存储地址] int *pAge=nullptr; //将PAge声明为int指针,即用于存储int变量的地址 如果将指针初始化为0或者NUll,以后必须将变量的地址赋给它,如下例代码: ; ...

  4. NET Core 拓展方法和中间件集合(支持NET Core2.0+)

    # Pure.NETCoreExtentensions https://github.com/purestackorg/Pure.NETCoreExtensions NET Core 拓展方法和中间件 ...

  5. pageadmin CMS 如何添加自定义页面

    理论上网站上的所有页面都可以通过栏目管理来添加,那自定义页面的意义是什么呢? 网站的需求是很多样化的,比如需要制作一个对外提供数据的api,甚至制作一个搜索页面,或者制作一些数据和栏目没有对应关系的页 ...

  6. Hibernate 框架学习

    什么是hibernate框架? 1.它是应用在javaee 三层架构中的dao层 它的底层就是JDBC 它对JDBC进行了封装,好处就是不用写jdbc的代码,和sql语句,它是一个开源的轻量级框架,现 ...

  7. CentOS7.x安装时的分区方案

    -------------------------------------------------分区方案描述--------------------------------------------- ...

  8. vector类型介绍

    一.vector类型简介 标准库:集合或动态数组,我们可以放若干对象放在里面. vector他能把其他对象装进来,也被称为容器 #include <iostream> #include & ...

  9. C#数组,List,Dictionary,IQueryable,IEnumerable的相互转换

    本篇文章会向大家实例讲述以下内容: 将数组转换为List 将List转换为数组 将数组转换为Dictionary 将Dictionary 转换为数组 将List转换为Dictionary 将Dicti ...

  10. Hyperledger Fabric

    https://wiki.hyperledger.org/display/fabric Hyperledger Fabric     转至元数据结尾   由 Tracy Kuhrt创建, 最终由 Da ...