目录

像素

像素局部性

色彩分量RGB

怎么做

如何取数据

总结一下

One More Thing

如果让你设计一个可以识别图像的神经网络,你会怎么做?

我之前问过自己这个问题,思来想去,我的答案是。我可能不知道如何下手。

突然有一天,当我把Resnet50这个网络的所有算法都写完一遍之后,我突然觉得,只要深入了解了这些算法的原理,或许这个网络我也能设计出来(后知后觉的大话而已)。

于是,我有了一个大胆的想法。接下来,我会花15-25篇文章的内容,从头开始,拆解一个图像识别网络是怎么工作的,以及背景知识,更重要的是,每一步算法的原理。

你可能会想,看懂这些需要什么知识呢?其实不需要太深奥的数学知识。我尽可能把每一步写的通俗易懂,这个过程中我会搜集一些资料,也是一个不断完善自己知识体系的过程。

第一个网络,就从玩烂的、作为各大AI芯片厂商性能标杆的Resnet50开始。个人水平有限,文中如有错误,欢迎留言指正。

希望能写满25篇吧。

像素

要实现图像识别,最离不开的,就是像素。

其实我们都知道,图像是由像素组成的。

实际上,神经网络计算,算的就是像素之间的关系,以及这些关系背后可能隐藏的图片信息。

相机摄像头像素2000万,拍出来的照片肯定比像素1000万的要清晰。
我们更容易看到图片中的物体是什么?

这是为什么?因为像素越多,像素之间的关系(色彩,轮廓)越丰富,我们所能看到的信息就越多,自然而然获取到的信息就多。

(一张1080p的图片,我们可以更容易辨别出图像中的物体是山还是水。这是因为更多的像素会给眼睛更丰富的图片细节)

但是,你有没有发现。

当我们去看一张图片时,我们绝对不是盯着某一个像素或某几个像素看,而是看了整个图像的大部分区域,或者说,大部分像素!

因为只有看到了大部分的图片,才能知道图中是座山。

正所谓,聚沙成山!

绝不是少了一粒沙,山就不是山,多了一粒沙,就变成了山。

上图哆啦A梦,虽然不是很清晰,像素点数也很少,但一眼望去,依然可以分清是哆啦A梦,甚至,用手捂住一半的图像,依然可以。

像素局部性

这是因为人们对于图像信息的识别,是建立在对像素局部性分析的基础上的。

所谓局部性,通俗点说,就是眼睛或大脑会将相邻的像素或大片的像素连接起来分析,从而组合成嘴巴,然后是耳朵,最后是哆啦A梦。

神经网络识别图片大致就是这样的原理。它模拟的,就是人们看到图片之后的信息处理过程。

当我们盯着一个图片看时,我们首先会获取到图片的细节特征。

比如哆啦A梦红色的大嘴巴。

但是如果仅仅盯着大嘴巴,又反而让人有一种“只缘身在此山中”的感觉。

因此还需要看一下图像的轮廓。

于是,眼睛看图片大致有以下两个过程:

  • 瞳孔放大,盯着某一处细节(如大嘴巴)看
  • 瞳孔缩小,模糊的看一张图片的大致轮廓

两个过程获取的信息叠加。

Bingo,看清楚了,是哆啦A梦!

那么神经网络是否可以模拟这种瞳孔放大、缩小的方式呢?

很幸运,可以!

(卷积:convolution)

卷积核的设计,就可以很直观的模拟这种获取图片信息的方法。

人们通过调整卷积核的大小,来达到瞳孔张开、缩小的目的。

并且大量的实验和论文表明,卷积这一针对图像局部性识别的算法,可以非常有效的模拟人眼识别物体的过程。

关于卷积算法以及卷积核的设计,后面会专门写几篇文章来聊聊。因为卷积这一算法,在图像处理领域,实在是,太重要了啊!

色彩分量RGB

回到像素这一话题。

你有没有想过,为什么一张图片会是彩色的。

学过摄影的小明同学可能这时会回答:因为图片是由RGB三种颜色来表示的,每个像素实际是不同的R/G/B分量的叠加,混合起来,就表示成了不同的颜色。

回答正确。

(三张分别表示R/G/B分量的图片,合成一张彩色图片)

我们人眼可以很直观的看到红色和蓝色,可以察觉到一张图片的色彩和轮廓。

那么,如果让计算机来处理图片,他又是如何知道色彩和轮廓的呢?

其实对于计算机来说,一张图片只是一堆数据,计算机是无法知道这堆数据代表的是什么。

这就需要人为的给这堆数据一种表示方法,让计算机知道,哦,这1/3的数据是红色分量,这1/3的是蓝色分量

这些数据(像素)组合起来,可能代表的是个“帽子”。

怎么做

数据在计算机的存储中,最常见的存储方式是连续存储的。

比如C语言,定义一个数组,那么数组在内存中的位置是连续的。

int data[10] = {0,1,2,3,4,5,6,7,8,9};

内存怎么理解,它就是一排连着的门牌号的公寓宿舍。

门牌号为101里面住着的,是data的第一个数据0。门牌号102里面住着的,是data的第二个数据1,...,以此类推。

(女贞路4号)

只不过,在计算机存储器中,没有门牌号,有的都是地址。

这个时候,计算机根本就不关心数据是啥,计算机用到的时候,就把数据从内存对应的地址中取出来用。

如何取数据

这就需要人们为数据存储设计一种格式,告诉计算机,这堆数据大概是什么样的。只有这样,通过这种人为约定的方式,计算机才能正确的取到R分量或者B分量。

对于一张图片来说,最常见的两个参数是长和宽,一般用H(height) 和 W(width) 来表示,那么RGB三个分量,看作是3个通道(channel),一般用 C 来表示。

如此一来,一张长宽分别是224像素*224像素的RGB图像,就可以用 HWC = [224, 224, 3]来表示。两张类似的图片就用 NHWC = [2, 224, 224, 3]表示,其中N代表图片张数。

(一张图片的抽象数据表示)

友好的数据表示方法,可以减少大量的计算复杂度。

虽然这样表示不太利于人们的直观理解,但是计算机处理这种数据是十分方便的。

在目前主流的深度学习框架中,对于图片的数据格式,基本都支持了NHWC或NCHW这种数据摆放格式。

说到底,都是为了更高效地进行图片数据的处理和运算。

总结一下

今天就先开个头,从像素说起,说到了像素具有局部连接性的,人眼识别图像也是通过获取像素的局部连接性信息来完成的。

幸运的是,卷积这一算法,可以很好的模拟这一过程。

最后,为了使计算机更高效的处理图片数据,引出NHWC的图片数据表示方法,

所以,之后我们说图片,不仅仅局限于图片的长和宽,还多了一个维度信息,那就是channel。

下一篇会继续,聊聊图像的色彩空间。为什么有了RGB,还需要YUV?什么时候用RGB, 什么时候用YUV?以及图像压缩对于深度学习来说,意味着什么?

One More Thing

熟悉OpenCV或者计算机视觉的同学,可能对于上面的RGB分量中的女神很熟悉。没错,在很多的教程中,这位女神不止一次的出场。

这位女士名叫 Lena。

电气电子工程师学会图像处理汇刊 (IEEE Transactions on Image Processing)主编曾在1996年1月出版的一期中解释道,Lena的流行,因为她是一张好的测试图片,其中包含了很多细节,平滑区域,阴影和纹理。
当然,另外一个原因就是漂亮美女的图片自然受到男性居多的研究领域的欢迎。


下一篇:

图像识别(二)| 图像的色彩空间_董董灿是个攻城狮的博客-CSDN博客目录RGB数值表示和图片大小计算YUVYUV编码的用途总结一下One More Thing上一篇文章从像素开始,聊到了 RGB 这一常见的色彩空间模型。之所以还想继续聊聊 RGB 以及另一种色彩空间模型-YUV ,不是说想要去学摄影,需要调节色度、曝光和饱和度。而是在图像处理的深度学习任务中,RGB以及YUV总是会时不时的出现一下,让枯燥无味且高度抽象的算法,突然之间,变得具体一些,光鲜一些。Red,Green,Blue(RGB)是我们最常见的图像表示方法。这个非常好理解,三原色的融合,几乎可以构造出所有需https://blog.csdn.net/dongtuoc/article/details/125237102?spm=1001.2014.3001.5502欢迎阅读。

更多信息,请查看专栏

https://blog.csdn.net/dongtuoc/category_11863193.htmlhttps://blog.csdn.net/dongtuoc/category_11863193.html码字不易,如果你喜欢,请关注 董董灿是个攻城狮 或点赞关注。
近期开通个人微信公众号: 董董灿的微信自述 分享人工智能科技文章,欢迎关注。

图像识别(一)| 从像素说起相关推荐

  1. 【图像识别算法】像素级提取图像关键特征、内容 --python代码

    像素级提取图像关键特征算法-rgb 关键词:python像素级处理图像,python提取图片关键特征. 基于knn的图像识别技术主要涉及到以下概念: 色彩成像原理 [图像原理]rgb数字图片概念 计算 ...

  2. 神经网络图像识别技术,人工神经网络图像识别

    识别花卉植物的软件有哪些? 拍照识别植物app:形色.拍花识照.花伴侣.花帮主.发现识花. 1.形色形色app是一款生活服务应用,是一款可轻松识别植物的手机软件,可以随时随地,拍照上传植物图片,形色可 ...

  3. 华为RPA WeAutomate Studio使用心得

    前言: 华为公司的rpa工具在2021年入选为国内rpa最具影响力企业TOP15之一,就目前来说在rpa主流梯队当中来说,公众认为HUAWEI WeAutomate为二流梯队, 一流梯队为弘玑rpa, ...

  4. 【论文笔记】FCN:Fully Convolutional Networks for Semantic Segmentation

    <Fully Convolutional Networks for Semantic Segmentation>,CVPR 2015 文章目录 1. 概览 2. 主要亮点 2.1 全卷积化 ...

  5. Deep Learning(Ian Goodfellow) — Chapter1 Introduction

    Deep Learning是大神Ian GoodFellow, Yoshua Bengio 和 Aaron Courville合著的深度学习的武功秘籍,涵盖深度学习各个领域,从基础到前沿研究.因为封面 ...

  6. 基于标准像素图像识别算法

    我们直观上看到的一张图片里面的字符是很整齐的,但把图片放大,你就可以发现直观上看到的图片都是由一个个像素点组成的,比如下面这图片 很清晰的看到是"like3944"8个字符,但放大 ...

  7. sikuli java_Sikuli--基于像素的图像识别(JAVA)

    package wincalc; import org.sikuli.script.Screen; public class SikuliDemo { // Sikuli是基于PC图像识别的自动化测试 ...

  8. AI芯片加速图像识别

    AI芯片加速图像识别 AI chip accelerates image recognition 法国研究机构CEA-Leti和LIST在2020年VLSI研讨会上展示了一种概念验证芯片,该芯片集成了 ...

  9. 深度学习与传统图像识别

    深度学习与传统图像识别 概述 传统方法中特征提取主要依赖人工设计的提取器,需要有专业知识及复杂的调参过程,同时每个方法都是针对具体应用,泛化能力及鲁棒性较差. 深度学习主要是数据驱动进行特征提取,根据 ...

最新文章

  1. Query采用each方法遍历
  2. seo外链优化需要规避的那些坑
  3. docker rancher搭建
  4. linux bash java,从Linux Bash Shell配置NIC
  5. linux监控哪些目录,linux管理文件和目录的命令
  6. jdk 细粒度锁_使用JDK 8轻松进行细粒度排序
  7. [渝粤教育] 中国地质大学 计算机文化基础 复习题
  8. 栅格布局一般怎么用_建筑混凝土色差大怎么办?用这种方法处理,一般都看不出来...
  9. php和js序列化,PHP中serialize和json序列化与反序列化的区别
  10. 什么是 Python?我介绍我几年前学习Python的方法和经验
  11. 巨量引擎初级营销认证题库_“移动营销,智赢未来”巨量引擎4月招商加盟专场沙龙圆满落幕...
  12. 解决XAMPP和VMware端口占用冲突
  13. 【Java 代码实例 6】FileUtils、StringUtil、CollectionUtils、ArrayUtils(附代码示例)
  14. Juphoon RTC年度成绩单,请查收!
  15. 鼎利软件测试终端刷机,你怎样把鼎利路测设备调试好?
  16. 服务器接显示器重影,学生能够选择影音服务器中的考试试卷进行自测测试结束系统将自动批阅并显示标.doc...
  17. 七大江河水系--海河
  18. 线性代数 --- 向量的内积与正交(垂直),Orthogonal Vectors
  19. ipad微信号无法连接服务器,ipad微信内置浏览器无法微信登录
  20. mysql cpu 高 原因 汇总_MySQL CPU 使用率高的原因和解决方法(来自aliyun官方文档)

热门文章

  1. Flash Photography: Canon Speedlites 闪光摄影:佳能闪光灯 Lynda课程中文字幕
  2. slf4j保存日志到数据库
  3. 研报 | 区块链新基建:物联网+区块链如何打造差异化竞争优势?
  4. @Async 异步任务自定义线程池的配置方法和 @Scheduled 定时任务自定义线程池的配置方式
  5. 80后90后这一代实在太苦了,什么都赶上了,只有程序员工资还高一点,唉
  6. PHP LOL接口,电竞英雄联盟数据API接口 - 【赛事列表】API调用示例代码
  7. 【CF1280】C. Jeremy Bearimy(贪心)
  8. 专攻心脑疾病AI市场,数坤科技完成创世伙伴领投2亿元B轮融资
  9. 《统计学习方法》——隐马尔可夫模型(上)
  10. 让文化与大数据 离婚吧